From 9554d0bd53e02e6844e5e8811c3e8557fd0b7d17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Guillot?= Date: Mon, 14 May 2018 18:52:12 -0700 Subject: [PATCH] Add integration test for /me endpoint --- Gopkg.lock | 2 +- integration_test.go | 16 ++++++++++++++++ .../github.com/miniflux/miniflux-go/client.go | 17 +++++++++++++++++ .../github.com/miniflux/miniflux-go/request.go | 17 +++++++++-------- 4 files changed, 43 insertions(+), 9 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index bac6827a..8cfabcfe 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -45,7 +45,7 @@ branch = "master" name = "github.com/miniflux/miniflux-go" packages = ["."] - revision = "7939463a4e1a1c5392d026d8d28bf7732459abd7" + revision = "8863d558cbf1f20beeb640328829205971f1a632" [[projects]] name = "github.com/tdewolff/minify" diff --git a/integration_test.go b/integration_test.go index 88ecfa6f..a26fe57f 100644 --- a/integration_test.go +++ b/integration_test.go @@ -44,6 +44,22 @@ func TestWithWrongCredentials(t *testing.T) { } } +func TestGetCurrentLoggedUser(t *testing.T) { + client := miniflux.NewClient(testBaseURL, testAdminUsername, testAdminPassword) + user, err := client.Me() + if err != nil { + t.Fatal(err) + } + + if user.ID == 0 { + t.Fatalf(`Invalid userID, got %q`, user.ID) + } + + if user.Username != testAdminUsername { + t.Fatalf(`Invalid username, got %q`, user.Username) + } +} + func TestGetUsers(t *testing.T) { client := miniflux.NewClient(testBaseURL, testAdminUsername, testAdminPassword) users, err := client.Users() diff --git a/vendor/github.com/miniflux/miniflux-go/client.go b/vendor/github.com/miniflux/miniflux-go/client.go index 7b6a8477..5f5155dc 100644 --- a/vendor/github.com/miniflux/miniflux-go/client.go +++ b/vendor/github.com/miniflux/miniflux-go/client.go @@ -18,6 +18,23 @@ type Client struct { request *request } +// Me returns the logged user information. +func (c *Client) Me() (*User, error) { + body, err := c.request.Get("/v1/me") + if err != nil { + return nil, err + } + defer body.Close() + + var user *User + decoder := json.NewDecoder(body) + if err := decoder.Decode(&user); err != nil { + return nil, fmt.Errorf("miniflux: json error (%v)", err) + } + + return user, nil +} + // Users returns all users. func (c *Client) Users() (Users, error) { body, err := c.request.Get("/v1/users") diff --git a/vendor/github.com/miniflux/miniflux-go/request.go b/vendor/github.com/miniflux/miniflux-go/request.go index cae4df7e..b472f0c3 100644 --- a/vendor/github.com/miniflux/miniflux-go/request.go +++ b/vendor/github.com/miniflux/miniflux-go/request.go @@ -22,11 +22,12 @@ const ( defaultTimeout = 80 ) +// List of exposed errors. var ( - errNotAuthorized = errors.New("miniflux: unauthorized (bad credentials)") - errForbidden = errors.New("miniflux: access forbidden") - errServerError = errors.New("miniflux: internal server error") - errNotFound = errors.New("miniflux: resource not found") + ErrNotAuthorized = errors.New("miniflux: unauthorized (bad credentials)") + ErrForbidden = errors.New("miniflux: access forbidden") + ErrServerError = errors.New("miniflux: internal server error") + ErrNotFound = errors.New("miniflux: resource not found") ) type errorResponse struct { @@ -93,13 +94,13 @@ func (r *request) execute(method, path string, data interface{}) (io.ReadCloser, switch response.StatusCode { case http.StatusUnauthorized: - return nil, errNotAuthorized + return nil, ErrNotAuthorized case http.StatusForbidden: - return nil, errForbidden + return nil, ErrForbidden case http.StatusInternalServerError: - return nil, errServerError + return nil, ErrServerError case http.StatusNotFound: - return nil, errNotFound + return nil, ErrNotFound case http.StatusBadRequest: defer response.Body.Close()