aboutsummaryrefslogtreecommitdiffhomepage
path: root/reader/feed/rss/parser_test.go
diff options
context:
space:
mode:
authorGravatar Frédéric Guillot <fred@miniflux.net>2017-11-20 15:48:26 -0800
committerGravatar Frédéric Guillot <fred@miniflux.net>2017-11-20 15:48:26 -0800
commit557cf9c21d08d93a8f71e12957f5c270f7c050b1 (patch)
tree4851c4015eff13679fab3a0cff63ebd2905c98c1 /reader/feed/rss/parser_test.go
parentcf8af56a994ba8ad77f90cbd66d6ff3219493676 (diff)
Handle RSS entries with Atom links
Diffstat (limited to 'reader/feed/rss/parser_test.go')
-rw-r--r--reader/feed/rss/parser_test.go53
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")
+ }
+}