Add integration test for /me endpoint

This commit is contained in:
Frédéric Guillot 2018-05-14 18:52:12 -07:00
parent e81e4f0ac3
commit 9554d0bd53
4 changed files with 43 additions and 9 deletions

2
Gopkg.lock generated
View File

@ -45,7 +45,7 @@
branch = "master" branch = "master"
name = "github.com/miniflux/miniflux-go" name = "github.com/miniflux/miniflux-go"
packages = ["."] packages = ["."]
revision = "7939463a4e1a1c5392d026d8d28bf7732459abd7" revision = "8863d558cbf1f20beeb640328829205971f1a632"
[[projects]] [[projects]]
name = "github.com/tdewolff/minify" name = "github.com/tdewolff/minify"

View File

@ -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) { func TestGetUsers(t *testing.T) {
client := miniflux.NewClient(testBaseURL, testAdminUsername, testAdminPassword) client := miniflux.NewClient(testBaseURL, testAdminUsername, testAdminPassword)
users, err := client.Users() users, err := client.Users()

View File

@ -18,6 +18,23 @@ type Client struct {
request *request 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. // Users returns all users.
func (c *Client) Users() (Users, error) { func (c *Client) Users() (Users, error) {
body, err := c.request.Get("/v1/users") body, err := c.request.Get("/v1/users")

View File

@ -22,11 +22,12 @@ const (
defaultTimeout = 80 defaultTimeout = 80
) )
// List of exposed errors.
var ( var (
errNotAuthorized = errors.New("miniflux: unauthorized (bad credentials)") ErrNotAuthorized = errors.New("miniflux: unauthorized (bad credentials)")
errForbidden = errors.New("miniflux: access forbidden") ErrForbidden = errors.New("miniflux: access forbidden")
errServerError = errors.New("miniflux: internal server error") ErrServerError = errors.New("miniflux: internal server error")
errNotFound = errors.New("miniflux: resource not found") ErrNotFound = errors.New("miniflux: resource not found")
) )
type errorResponse struct { type errorResponse struct {
@ -93,13 +94,13 @@ func (r *request) execute(method, path string, data interface{}) (io.ReadCloser,
switch response.StatusCode { switch response.StatusCode {
case http.StatusUnauthorized: case http.StatusUnauthorized:
return nil, errNotAuthorized return nil, ErrNotAuthorized
case http.StatusForbidden: case http.StatusForbidden:
return nil, errForbidden return nil, ErrForbidden
case http.StatusInternalServerError: case http.StatusInternalServerError:
return nil, errServerError return nil, ErrServerError
case http.StatusNotFound: case http.StatusNotFound:
return nil, errNotFound return nil, ErrNotFound
case http.StatusBadRequest: case http.StatusBadRequest:
defer response.Body.Close() defer response.Body.Close()