From 47ce264f088ec9c386416f73c65815094878a01f Mon Sep 17 00:00:00 2001 From: Eric Chiang Date: Tue, 28 Jun 2016 13:42:20 -0700 Subject: [PATCH] return 409 status code on duplicate email errors --- admin/api.go | 2 +- integration/admin_api_test.go | 2 +- integration/user_api_test.go | 18 ++++++++++++++++++ user/api/api.go | 2 +- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/admin/api.go b/admin/api.go index 84e6c5ae..324f55e9 100644 --- a/admin/api.go +++ b/admin/api.go @@ -81,7 +81,7 @@ var ( client.ErrorInvalidClientSecret: errorMaker("bad_request", "Secret must be a base64 encoded string", http.StatusBadRequest), user.ErrorNotFound: errorMaker("resource_not_found", "Resource could not be found.", http.StatusNotFound), - user.ErrorDuplicateEmail: errorMaker("bad_request", "Email already in use.", http.StatusBadRequest), + user.ErrorDuplicateEmail: errorMaker("bad_request", "Email already in use.", http.StatusConflict), user.ErrorInvalidEmail: errorMaker("bad_request", "invalid email.", http.StatusBadRequest), adminschema.ErrorInvalidRedirectURI: errorMaker("bad_request", "invalid redirectURI.", http.StatusBadRequest), diff --git a/integration/admin_api_test.go b/integration/admin_api_test.go index c1fa7916..6d483617 100644 --- a/integration/admin_api_test.go +++ b/integration/admin_api_test.go @@ -201,7 +201,7 @@ func TestCreateAdmin(t *testing.T) { Email: "Email-1@example.com", Password: "foopass", }, - errCode: http.StatusBadRequest, + errCode: http.StatusConflict, }, { // missing Email diff --git a/integration/user_api_test.go b/integration/user_api_test.go index fa9c4400..9584f2fd 100644 --- a/integration/user_api_test.go +++ b/integration/user_api_test.go @@ -409,6 +409,24 @@ func TestCreateUser(t *testing.T) { }, }, }, + { + + // Duplicate email + req: schema.UserCreateRequest{ + User: &schema.User{ + Email: "Email-1@example.com", + DisplayName: "New User", + EmailVerified: true, + Admin: false, + CreatedAt: clock.Now().Format(time.RFC3339), + }, + RedirectURL: testRedirectURL.String(), + }, + + token: userGoodToken, + + wantCode: http.StatusConflict, + }, { req: schema.UserCreateRequest{ diff --git a/user/api/api.go b/user/api/api.go index cc21fdda..148647fb 100644 --- a/user/api/api.go +++ b/user/api/api.go @@ -31,7 +31,7 @@ var ( ErrorInvalidClient = newError("invalid_client", "invalid email.", http.StatusBadRequest) - ErrorDuplicateEmail = newError("duplicate_email", "Email already in use.", http.StatusBadRequest) + ErrorDuplicateEmail = newError("duplicate_email", "Email already in use.", http.StatusConflict) ErrorResourceNotFound = newError("resource_not_found", "Resource could not be found.", http.StatusNotFound) ErrorUnauthorized = newError("unauthorized", "Necessary credentials not provided.", http.StatusUnauthorized)