diff options
author | 2017-11-20 15:48:26 -0800 | |
---|---|---|
committer | 2017-11-20 15:48:26 -0800 | |
commit | 557cf9c21d08d93a8f71e12957f5c270f7c050b1 (patch) | |
tree | 4851c4015eff13679fab3a0cff63ebd2905c98c1 /reader/feed/rss/parser_test.go | |
parent | cf8af56a994ba8ad77f90cbd66d6ff3219493676 (diff) |
Handle RSS entries with Atom links
Diffstat (limited to 'reader/feed/rss/parser_test.go')
-rw-r--r-- | reader/feed/rss/parser_test.go | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/reader/feed/rss/parser_test.go b/reader/feed/rss/parser_test.go index 8265da4..a0a8c93 100644 --- a/reader/feed/rss/parser_test.go +++ b/reader/feed/rss/parser_test.go @@ -161,6 +161,51 @@ func TestParseEntryWithoutLink(t *testing.T) { } } +func TestParseEntryWithAtomLink(t *testing.T) { + data := `<?xml version="1.0" encoding="utf-8"?> + <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <link>https://example.org/</link> + <item> + <title>Test</title> + <atom:link href="https://example.org/item" /> + </item> + </channel> + </rss>` + + feed, err := Parse(bytes.NewBufferString(data)) + if err != nil { + t.Error(err) + } + + if feed.Entries[0].URL != "https://example.org/item" { + t.Errorf("Incorrect entry link, got: %s", feed.Entries[0].URL) + } +} + +func TestParseEntryWithMultipleAtomLinks(t *testing.T) { + data := `<?xml version="1.0" encoding="utf-8"?> + <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <link>https://example.org/</link> + <item> + <title>Test</title> + <atom:link rel="payment" href="https://example.org/a" /> + <atom:link rel="http://foobar.tld" href="https://example.org/b" /> + </item> + </channel> + </rss>` + + feed, err := Parse(bytes.NewBufferString(data)) + if err != nil { + t.Error(err) + } + + if feed.Entries[0].URL != "https://example.org/b" { + t.Errorf("Incorrect entry link, got: %s", feed.Entries[0].URL) + } +} + func TestParseFeedURLWithAtomLink(t *testing.T) { data := `<?xml version="1.0" encoding="utf-8"?> <rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"> @@ -489,3 +534,11 @@ func TestParseEntryWithFeedBurnerEnclosures(t *testing.T) { t.Errorf("Incorrect enclosure length, got: %d", feed.Entries[0].Enclosures[0].Size) } } + +func TestParseInvalidXml(t *testing.T) { + data := `garbage` + _, err := Parse(bytes.NewBufferString(data)) + if err == nil { + t.Error("Parse should returns an error") + } +} |