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"
name = "github.com/miniflux/miniflux-go"
packages = ["."]
revision = "7939463a4e1a1c5392d026d8d28bf7732459abd7"
revision = "8863d558cbf1f20beeb640328829205971f1a632"
[[projects]]
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) {
client := miniflux.NewClient(testBaseURL, testAdminUsername, testAdminPassword)
users, err := client.Users()

View File

@ -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")

View File

@ -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()