diff --git a/internal/api/external.go b/internal/api/external.go index 75bad9bc5..b29dc8c2f 100644 --- a/internal/api/external.go +++ b/internal/api/external.go @@ -173,7 +173,7 @@ func (a *API) internalExternalProviderCallback(w http.ResponseWriter, r *http.Re userData := data.userData if len(userData.Emails) == 0 && !emailOptional { - return apierrors.NewInternalServerError("Error getting user email from external provider") + return apierrors.NewUnprocessableEntityError(apierrors.ErrorCodeEmailAddressNotProvided, "Error getting user email from external provider") } userData.Metadata.EmailVerified = false diff --git a/internal/api/external_google_test.go b/internal/api/external_google_test.go index 2ed5cb197..9a7d66fa1 100644 --- a/internal/api/external_google_test.go +++ b/internal/api/external_google_test.go @@ -8,6 +8,7 @@ import ( "net/url" "github.com/stretchr/testify/require" + "github.com/supabase/auth/internal/api/apierrors" "github.com/supabase/auth/internal/api/provider" ) @@ -105,6 +106,10 @@ func (ts *ExternalTestSuite) TestSignupExternalGoogleDisableSignupErrorWhenEmpty u := performAuthorization(ts, "google", code, "") assertAuthorizationFailure(ts, u, "Error getting user email from external provider", "server_error", "google@example.com") + + q, err := url.ParseQuery(u.RawQuery) + ts.Require().NoError(err) + ts.Require().Equal(apierrors.ErrorCodeEmailAddressNotProvided, q.Get("error_code")) } func (ts *ExternalTestSuite) TestSignupExternalGoogleDisableSignupSuccessWithPrimaryEmail() {