diff options
Diffstat (limited to 'gemini/gemtext/sub_test.go')
-rw-r--r-- | gemini/gemtext/sub_test.go | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/gemini/gemtext/sub_test.go b/gemini/gemtext/sub_test.go deleted file mode 100644 index 9e0fcc8..0000000 --- a/gemini/gemtext/sub_test.go +++ /dev/null @@ -1,138 +0,0 @@ -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) { - tests := []struct { - url string - input string - output string - }{ - { - url: "gemini://sombodys.site/a/page", - input: ` -# This is a gemlog page - - -## with a subtitle after empty lines - -=> ./first-post.gmi 2023-08-25 - This is my first post -`[1:], - output: ` -<?xml version="1.0" encoding="utf-8"?> -<feed xmlns="http://www.w3.org/2005/Atom"> - <id>gemini://sombodys.site/a/page</id> - <link href="gemini://sombodys.site/a/page"/> - <title>This is a gemlog page</title> - <subtitle>with a subtitle after empty lines</subtitle> - <updated>2023-08-25T12:00:00Z</updated> - <entry> - <id>./first-post.gmi</id> - <link rel="alternate" href="./first-post.gmi"/> - <title>This is my first post</title> - <updated>2023-08-25T12:00:00Z</updated> - </entry> -</feed> -`[1:], - }, - } - - for _, test := range tests { - t.Run(test.url, func(t *testing.T) { - doc, err := Parse(bytes.NewBufferString(test.input)) - if err != nil { - t.Fatal(err) - } - loc, err := url.Parse(test.url) - if err != nil { - t.Fatal(err) - } - out := &bytes.Buffer{} - if err := GmisubToAtom(doc, *loc, out); err != nil { - t.Fatal(err) - } - if out.String() != test.output { - t.Fatal("mismatched output") - } - }) - } -} - -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 := ` -<?xml version="1.0" encoding="utf-8"?> -<feed xmlns="http://www.w3.org/2005/Atom"> - <id>gemini://127.0.0.1/foo.gmi.atom</id> - <link href="gemini://127.0.0.1/foo.gmi.atom"/> - <title>This is my gemini page</title> - <subtitle>a subtitle</subtitle> - <updated>2023-06-02T12:00:00Z</updated> - <entry> - <id>./first-post.gmi</id> - <link rel="alternate" href="./first-post.gmi"/> - <title>My first post</title> - <updated>2023-05-17T12:00:00Z</updated> - </entry> - <entry> - <id>./second-post.gmi</id> - <link rel="alternate" href="./second-post.gmi"/> - <title>second-ever post</title> - <updated>2023-06-02T12:00:00Z</updated> - </entry> -</feed> -`[1:] - if string(result) != target { - fmt.Println(target) - fmt.Println(string(result)) - t.Fatal("response body") - } -} |