From 0e6717b7c86a1761b1ae515dd212a78f1d1e7c8b Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Mon, 20 Nov 2017 16:11:55 -0800 Subject: Ensure that LocalizedError are returned by parsers --- reader/feed/atom/parser.go | 7 ++++--- reader/feed/atom/parser_test.go | 14 ++++++++++++++ reader/feed/json/parser.go | 7 ++++--- reader/feed/json/parser_test.go | 14 ++++++++++++++ reader/feed/rss/parser.go | 4 ++-- reader/feed/rss/parser_test.go | 6 ++++++ 6 files changed, 44 insertions(+), 8 deletions(-) (limited to 'reader/feed') diff --git a/reader/feed/atom/parser.go b/reader/feed/atom/parser.go index 0b8f0d7..cb21c04 100644 --- a/reader/feed/atom/parser.go +++ b/reader/feed/atom/parser.go @@ -6,10 +6,11 @@ package atom import ( "encoding/xml" - "fmt" - "github.com/miniflux/miniflux2/model" "io" + "github.com/miniflux/miniflux2/errors" + "github.com/miniflux/miniflux2/model" + "golang.org/x/net/html/charset" ) @@ -21,7 +22,7 @@ func Parse(data io.Reader) (*model.Feed, error) { err := decoder.Decode(atomFeed) if err != nil { - return nil, fmt.Errorf("Unable to parse Atom feed: %v\n", err) + return nil, errors.NewLocalizedError("Unable to parse Atom feed: %v", err) } return atomFeed.Transform(), nil diff --git a/reader/feed/atom/parser_test.go b/reader/feed/atom/parser_test.go index 39d9420..d5eea23 100644 --- a/reader/feed/atom/parser_test.go +++ b/reader/feed/atom/parser_test.go @@ -8,6 +8,8 @@ import ( "bytes" "testing" "time" + + "github.com/miniflux/miniflux2/errors" ) func TestParseAtomSample(t *testing.T) { @@ -317,3 +319,15 @@ func TestParseEntryWithEnclosures(t *testing.T) { t.Errorf("Incorrect enclosure length, got: %d", feed.Entries[0].Enclosures[1].Size) } } + +func TestParseInvalidXml(t *testing.T) { + data := `garbage` + _, err := Parse(bytes.NewBufferString(data)) + if err == nil { + t.Error("Parse should returns an error") + } + + if _, ok := err.(errors.LocalizedError); !ok { + t.Error("The error returned must be a LocalizedError") + } +} diff --git a/reader/feed/json/parser.go b/reader/feed/json/parser.go index 816d28e..6dbc91b 100644 --- a/reader/feed/json/parser.go +++ b/reader/feed/json/parser.go @@ -6,9 +6,10 @@ package json import ( "encoding/json" - "fmt" - "github.com/miniflux/miniflux2/model" "io" + + "github.com/miniflux/miniflux2/errors" + "github.com/miniflux/miniflux2/model" ) // Parse returns a normalized feed struct. @@ -16,7 +17,7 @@ func Parse(data io.Reader) (*model.Feed, error) { jsonFeed := new(JsonFeed) decoder := json.NewDecoder(data) if err := decoder.Decode(&jsonFeed); err != nil { - return nil, fmt.Errorf("Unable to parse JSON Feed: %v", err) + return nil, errors.NewLocalizedError("Unable to parse JSON Feed: %v", err) } return jsonFeed.Transform(), nil diff --git a/reader/feed/json/parser_test.go b/reader/feed/json/parser_test.go index f2c97fc..ecb11a1 100644 --- a/reader/feed/json/parser_test.go +++ b/reader/feed/json/parser_test.go @@ -9,6 +9,8 @@ import ( "strings" "testing" "time" + + "github.com/miniflux/miniflux2/errors" ) func TestParseJsonFeed(t *testing.T) { @@ -343,3 +345,15 @@ func TestParseTruncateItemTitle(t *testing.T) { t.Errorf("Incorrect entry title, got: %s", feed.Entries[0].Title) } } + +func TestParseInvalidJSON(t *testing.T) { + data := `garbage` + _, err := Parse(bytes.NewBufferString(data)) + if err == nil { + t.Error("Parse should returns an error") + } + + if _, ok := err.(errors.LocalizedError); !ok { + t.Error("The error returned must be a LocalizedError") + } +} diff --git a/reader/feed/rss/parser.go b/reader/feed/rss/parser.go index 4718dc0..4eceb45 100644 --- a/reader/feed/rss/parser.go +++ b/reader/feed/rss/parser.go @@ -6,9 +6,9 @@ package rss import ( "encoding/xml" - "fmt" "io" + "github.com/miniflux/miniflux2/errors" "github.com/miniflux/miniflux2/model" "golang.org/x/net/html/charset" @@ -22,7 +22,7 @@ func Parse(data io.Reader) (*model.Feed, error) { err := decoder.Decode(feed) if err != nil { - return nil, fmt.Errorf("unable to parse RSS feed: %v", err) + return nil, errors.NewLocalizedError("Unable to parse RSS feed: %v", err) } return feed.Transform(), nil diff --git a/reader/feed/rss/parser_test.go b/reader/feed/rss/parser_test.go index a0a8c93..9f1a557 100644 --- a/reader/feed/rss/parser_test.go +++ b/reader/feed/rss/parser_test.go @@ -8,6 +8,8 @@ import ( "bytes" "testing" "time" + + "github.com/miniflux/miniflux2/errors" ) func TestParseRss2Sample(t *testing.T) { @@ -541,4 +543,8 @@ func TestParseInvalidXml(t *testing.T) { if err == nil { t.Error("Parse should returns an error") } + + if _, ok := err.(errors.LocalizedError); !ok { + t.Error("The error returned must be a LocalizedError") + } } -- cgit v1.2.3