aboutsummaryrefslogtreecommitdiff
path: root/internal/reader/json/parser_test.go
diff options
context:
space:
mode:
authorGravatar Frédéric Guillot <f@miniflux.net> 2024-03-19 21:24:30 -0700
committerGravatar Frédéric Guillot <f@miniflux.net> 2024-03-19 21:57:46 -0700
commit08640b27d55f6382af6f08d0789b8109279ae825 (patch)
treee9b133e38bfb3d09b518d4b35a2292a06aaa661b /internal/reader/json/parser_test.go
parent4be993e05537a2ed658f62060b6dd6b89304a346 (diff)
downloadv2-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.go36
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))