From 4a5dad998cf97b879e88c8dc1ce025432dfc90cb Mon Sep 17 00:00:00 2001 From: tjpcc Date: Sat, 26 Aug 2023 09:22:25 -0600 Subject: AutoAtom: middleware that supports adding .atom to any gemtext path --- gemini/gemtext/sub_test.go | 75 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) (limited to 'gemini/gemtext/sub_test.go') diff --git a/gemini/gemtext/sub_test.go b/gemini/gemtext/sub_test.go index f080705..9e0fcc8 100644 --- a/gemini/gemtext/sub_test.go +++ b/gemini/gemtext/sub_test.go @@ -2,8 +2,15 @@ package gemtext import ( "bytes" + "context" + "fmt" + "io" "net/url" "testing" + + "tildegit.org/tjp/sliderule" + "tildegit.org/tjp/sliderule/gemini" + "tildegit.org/tjp/sliderule/internal/types" ) func TestGemsubToAtom(t *testing.T) { @@ -61,3 +68,71 @@ func TestGemsubToAtom(t *testing.T) { }) } } + +func TestAutoAtom(t *testing.T) { + rout := &sliderule.Router{} + + rout.Route("/foo.gmi", types.HandlerFunc(func(ctx context.Context, request *types.Request) *types.Response { + return gemini.Success("text/gemini", bytes.NewBufferString(` +# This is my gemini page + +## a subtitle + +=> ./first-post.gmi 2023-05-17 - My first post +=> ./second-post.gmi 2023-06-02 second-ever post +`[1:])) + })) + + rout.Route("/bar.gmi", types.HandlerFunc(func(ctx context.Context, request *types.Request) *types.Response { + return gemini.Success("text/gemini", bytes.NewBufferString(` +# Another homepage + +=> ./first-post.gmi 2023-05-17 - first post +=> ./second-post.gmi 2023-06-02 second post +`[1:])) + })) + + h := AutoAtom(rout.Handler()) + + response := h.Handle(context.Background(), &types.Request{URL: &url.URL{ + Scheme: "gemini", + Host: "127.0.0.1", + Path: "/foo.gmi.atom", + }}) + if response.Status != gemini.StatusSuccess { + t.Fatal("bad response code") + } + + result, err := io.ReadAll(response.Body) + if err != nil { + t.Fatal(err) + } + + target := ` + + + gemini://127.0.0.1/foo.gmi.atom + + This is my gemini page + a subtitle + 2023-06-02T12:00:00Z + + ./first-post.gmi + + My first post + 2023-05-17T12:00:00Z + + + ./second-post.gmi + + second-ever post + 2023-06-02T12:00:00Z + + +`[1:] + if string(result) != target { + fmt.Println(target) + fmt.Println(string(result)) + t.Fatal("response body") + } +} -- cgit v1.2.3