Browse Source

Add integration test for /me endpoint

Frédéric Guillot 8 years ago
parent
commit
9554d0bd53

+ 1 - 1
Gopkg.lock

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

+ 16 - 0
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) {
 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()

+ 17 - 0
vendor/github.com/miniflux/miniflux-go/client.go

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

+ 9 - 8
vendor/github.com/miniflux/miniflux-go/request.go

@@ -22,11 +22,12 @@ const (
 	defaultTimeout = 80
 	defaultTimeout = 80
 )
 )
 
 
+// List of exposed errors.
 var (
 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 {
 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()