Skip to content

Commit 7d7578a

Browse files
authored
Merge pull request #11302 from bodintsov/fix/no-notification-send-when-primary-email-changed
[ENG-8872] Fix/no notification send when primary email changed
2 parents 245016e + 75ddaa1 commit 7d7578a

File tree

2 files changed

+28
-17
lines changed

2 files changed

+28
-17
lines changed

api/users/serializers.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
from api.nodes.serializers import NodeSerializer, RegionRelationshipField
3535
from framework.auth.views import send_confirm_email_async
3636
from osf.exceptions import ValidationValueError, ValidationError, BlockedEmailError
37-
from osf.models import Email, Node, OSFUser, Preprint, Registration, UserMessage, Institution
37+
from osf.models import Email, Node, OSFUser, Preprint, Registration, UserMessage, Institution, NotificationType
3838
from osf.models.user_message import MessageTypes
3939
from osf.models.provider import AbstractProviderGroupObjectPermission
4040
from osf.utils.requests import string_type_request_headers
@@ -711,6 +711,17 @@ def update(self, instance, validated_data):
711711
if primary and instance.confirmed:
712712
user.username = instance.address
713713
user.save()
714+
notification_type = NotificationType.Type.USER_PRIMARY_EMAIL_CHANGED
715+
notification_type.instance.emit(
716+
subscribed_object=user,
717+
user=user,
718+
event_context={
719+
'user_fullname': user.fullname,
720+
'new_address': user.username,
721+
'can_change_preferences': False,
722+
'osf_contact_email': settings.OSF_CONTACT_EMAIL,
723+
},
724+
)
714725
elif primary and not instance.confirmed:
715726
raise exceptions.ValidationError('You cannot set an unconfirmed email address as your primary email address.')
716727

api_tests/users/views/test_user_settings.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -453,25 +453,25 @@ def test_adding_new_token_for_unconfirmed_email(self, app, user_one, unconfirmed
453453

454454
def test_set_primary_email(self, app, confirmed_url, payload, confirmed_email, user_one, user_two, unconfirmed_url):
455455
payload['data']['attributes'] = {'primary': True}
456+
with capture_notifications():
457+
# test_set_email_primary_not_logged_in
458+
res = app.patch_json_api(confirmed_url, payload, expect_errors=True)
459+
assert res.status_code == 401
456460

457-
# test_set_email_primary_not_logged_in
458-
res = app.patch_json_api(confirmed_url, payload, expect_errors=True)
459-
assert res.status_code == 401
460-
461-
# test_set_primary_email_current_user
462-
res = app.patch_json_api(confirmed_url, payload, auth=user_one.auth)
463-
assert res.status_code == 200
464-
user_one.reload()
465-
assert user_one.username == confirmed_email.address
461+
# test_set_primary_email_current_user
462+
res = app.patch_json_api(confirmed_url, payload, auth=user_one.auth)
463+
assert res.status_code == 200
464+
user_one.reload()
465+
assert user_one.username == confirmed_email.address
466466

467-
# test set primary not current user
468-
res = app.patch_json_api(confirmed_url, payload, auth=user_two.auth, expect_errors=True)
469-
assert res.status_code == 403
467+
# test set primary not current user
468+
res = app.patch_json_api(confirmed_url, payload, auth=user_two.auth, expect_errors=True)
469+
assert res.status_code == 403
470470

471-
# test set primary not confirmed fails
472-
res = app.patch_json_api(unconfirmed_url, payload, auth=user_one.auth, expect_errors=True)
473-
assert res.status_code == 400
474-
assert res.json['errors'][0]['detail'] == 'You cannot set an unconfirmed email address as your primary email address.'
471+
# test set primary not confirmed fails
472+
res = app.patch_json_api(unconfirmed_url, payload, auth=user_one.auth, expect_errors=True)
473+
assert res.status_code == 400
474+
assert res.json['errors'][0]['detail'] == 'You cannot set an unconfirmed email address as your primary email address.'
475475

476476
def test_delete_email(self, app, payload, user_one, user_two, confirmed_email, confirmed_url, unconfirmed_url, unconfirmed_address):
477477
# test delete email logged in as another user fails

0 commit comments

Comments
 (0)