diff options
author | 2024-03-19 21:24:30 -0700 | |
---|---|---|
committer | 2024-03-19 21:57:46 -0700 | |
commit | 08640b27d55f6382af6f08d0789b8109279ae825 (patch) | |
tree | e9b133e38bfb3d09b518d4b35a2292a06aaa661b /internal/reader/json/parser_test.go | |
parent | 4be993e05537a2ed658f62060b6dd6b89304a346 (diff) | |
download | v2-08640b27d55f6382af6f08d0789b8109279ae825.tar.gz v2-08640b27d55f6382af6f08d0789b8109279ae825.tar.zst v2-08640b27d55f6382af6f08d0789b8109279ae825.zip |
Ensure enclosure URLs are always absolute
Diffstat (limited to 'internal/reader/json/parser_test.go')
-rw-r--r-- | internal/reader/json/parser_test.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/internal/reader/json/parser_test.go b/internal/reader/json/parser_test.go index 0bbd39ec..6f62831f 100644 --- a/internal/reader/json/parser_test.go +++ b/internal/reader/json/parser_test.go @@ -848,6 +848,42 @@ func TestParseFeedIcon(t *testing.T) { } } +func TestParseFeedWithRelativeAttachmentURL(t *testing.T) { + data := `{ + "version": "https://jsonfeed.org/version/1", + "title": "My Example Feed", + "home_page_url": "https://example.org/", + "feed_url": "https://example.org/feed.json", + "items": [ + { + "id": "2", + "content_text": "This is a second item.", + "url": "https://example.org/second-item", + "attachments": [ + { + "url": " /attachment.mp3 ", + "mime_type": "audio/mpeg", + "size_in_bytes": 123456 + } + ] + } + ] + }` + + feed, err := Parse("https://example.org/feed.json", bytes.NewBufferString(data)) + if err != nil { + t.Fatal(err) + } + + if len(feed.Entries[0].Enclosures) != 1 { + t.Fatalf("Incorrect number of enclosures, got: %d", len(feed.Entries[0].Enclosures)) + } + + if feed.Entries[0].Enclosures[0].URL != "https://example.org/attachment.mp3" { + t.Errorf("Incorrect enclosure URL, got: %q", feed.Entries[0].Enclosures[0].URL) + } +} + func TestParseInvalidJSON(t *testing.T) { data := `garbage` _, err := Parse("https://example.org/feed.json", bytes.NewBufferString(data)) |