Commit 96528be6 by Christina Roberts

Merge pull request #7348 from edx/christina/account-empty-email

Don't allow empty string or None for email.
parents 5b2dd87a 207e500a
......@@ -114,8 +114,9 @@ def update_account_settings(requesting_user, update, username=None):
# If user has requested to change email, we must call the multi-step process to handle this.
# It is not handled by the serializer (which considers email to be read-only).
new_email = None
changing_email = False
if "email" in update:
changing_email = True
new_email = update["email"]
del update["email"]
......@@ -148,7 +149,7 @@ def update_account_settings(requesting_user, update, username=None):
field_errors = _add_serializer_errors(update, serializer, field_errors)
# If the user asked to change email, validate it.
if new_email:
if changing_email:
try:
validate_new_email(existing_user, new_email)
except ValueError as err:
......@@ -186,7 +187,7 @@ def update_account_settings(requesting_user, update, username=None):
)
# And try to send the email change request if necessary.
if new_email:
if changing_email:
try:
do_email_change_request(existing_user, new_email)
except ValueError as err:
......
......@@ -438,8 +438,20 @@ class TestAccountAPI(UserAPITestCase):
get_response = self.send_get(client)
self.assertEqual(new_email, get_response.data["email"])
# Finally, try changing to an invalid email just to make sure error messages are appropriately returned.
error_response = self.send_patch(client, {"email": "not_an_email"}, expected_status=400)
@ddt.data(
("not_an_email",),
("",),
(None,),
)
@ddt.unpack
def test_patch_invalid_email(self, bad_email):
"""
Test a few error cases for email validation (full test coverage lives with do_email_change_request).
"""
client = self.login_client("client", "user")
# Try changing to an invalid email to make sure error messages are appropriately returned.
error_response = self.send_patch(client, {"email": bad_email}, expected_status=400)
field_errors = error_response.data["field_errors"]
self.assertEqual(
"Error thrown from validate_new_email: 'Valid e-mail address required.'",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment