Browse Source

Update error handling, avoid error when reply is not json

master
Johan Droz 8 years ago
parent
commit
2ad17ce219
  1. 17
      client/client.go
  2. 5
      client/user_test.go

17
client/client.go

@ -141,7 +141,7 @@ func (c *Client) get(data interface{}, plugins ...plugin.Plugin) error {
} }
return c.get(data, plugins...) return c.get(data, plugins...)
case resp.StatusCode >= 400: case resp.StatusCode >= 400:
return handleError(resp) return fmt.Errorf("invalid status code: '%v': %v", resp.RawResponse.Status, string(resp.Bytes()))
case resp.StatusCode >= 200: case resp.StatusCode >= 200:
return json.Unmarshal(resp.Bytes(), data) return json.Unmarshal(resp.Bytes(), data)
default: default:
@ -173,7 +173,7 @@ func (c *Client) post(plugins ...plugin.Plugin) error {
} }
return c.post(plugins...) return c.post(plugins...)
case resp.StatusCode >= 400: case resp.StatusCode >= 400:
return handleError(resp) return fmt.Errorf("invalid status code: '%v': %v", resp.RawResponse.Status, string(resp.Bytes()))
case resp.StatusCode >= 200: case resp.StatusCode >= 200:
return nil return nil
default: default:
@ -205,7 +205,7 @@ func (c *Client) delete(plugins ...plugin.Plugin) error {
} }
return c.delete(plugins...) return c.delete(plugins...)
case resp.StatusCode >= 400: case resp.StatusCode >= 400:
return handleError(resp) return fmt.Errorf("invalid status code: '%v': %v", resp.RawResponse.Status, string(resp.Bytes()))
case resp.StatusCode >= 200: case resp.StatusCode >= 200:
return nil return nil
default: default:
@ -237,7 +237,7 @@ func (c *Client) put(plugins ...plugin.Plugin) error {
} }
return c.put(plugins...) return c.put(plugins...)
case resp.StatusCode >= 400: case resp.StatusCode >= 400:
return handleError(resp) return fmt.Errorf("invalid status code: '%v': %v", resp.RawResponse.Status, string(resp.Bytes()))
case resp.StatusCode >= 200: case resp.StatusCode >= 200:
return nil return nil
default: default:
@ -254,15 +254,6 @@ func applyPlugins(req *gentleman.Request, accessToken string, plugins ...plugin.
return r return r
} }
func handleError(resp *gentleman.Response) error {
var m = map[string]string{}
var err = json.Unmarshal(resp.Bytes(), &m)
if err != nil {
return fmt.Errorf("invalid status code: %v; could not unmarshal response: %v", resp.StatusCode, err)
}
return fmt.Errorf("error message: %v", m)
}
func str(s string) *string { func str(s string) *string {
return &s return &s
} }

5
client/user_test.go

@ -38,12 +38,13 @@ func TestCountUsers(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
assert.NotZero(t, count) assert.NotZero(t, count)
} }
func TestGetUser(t *testing.T) { func TestGetUser(t *testing.T) {
var client = initTest(t) var client = initTest(t)
var user UserRepresentation var user UserRepresentation
{ {
var err error var err error
user, err = client.GetUser("__internal", "eb8b75ea-305d-40f6-87e5-ac8e16979c40") user, err = client.GetUser("__internal", "e8b96f33-1d14-463d-80db-294c4db249ab")
require.Nil(t, err, "could not get users") require.Nil(t, err, "could not get users")
assert.NotZero(t, *user.Username) assert.NotZero(t, *user.Username)
} }
@ -55,7 +56,7 @@ func TestUpdateUser(t *testing.T) {
var user = UserRepresentation{ var user = UserRepresentation{
Email: str("john.doe@elca.ch"), Email: str("john.doe@elca.ch"),
} }
var err = client.UpdateUser("__internal", "eb8b75ea-305d-40f6-87e5-ac8e16979c40", user) var err = client.UpdateUser("__internal", "e8b96f33-1d14-463d-80db-294c4db249aa", user)
assert.Nil(t, err) assert.Nil(t, err)
} }
func TestDeleteUser(t *testing.T) { func TestDeleteUser(t *testing.T) {

Loading…
Cancel
Save