Skip to content

Commit 2593ac2

Browse files
fix: redact pending primary email before retirement deletion
1 parent a2d8148 commit 2593ac2

3 files changed

Lines changed: 11 additions & 12 deletions

File tree

common/djangoapps/student/tests/test_email.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -610,8 +610,9 @@ def test_successful_email_change(self, test_body_type, test_marketing_enabled, m
610610
assert PendingEmailChange.objects.count() == 0
611611

612612
@skip_unless_lms
613+
@patch('common.djangoapps.student.signals.receivers.EmailChangeMiddleware.register_email_change')
613614
@patch('common.djangoapps.student.views.management.ace')
614-
def test_successful_email_change_redacts_pending_email_before_delete(self, ace_mail):
615+
def test_successful_email_change_redacts_pending_email_before_delete(self, ace_mail, mock_register): # pylint: disable=unused-argument
615616
original_email = self.user.email
616617
expected_new_email = self.pending_change_request.new_email
617618
captured_state = {}

common/djangoapps/student/tests/test_models.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
UserAttribute,
3232
UserCelebration,
3333
UserProfile,
34-
get_retired_email_by_email,
3534
)
3635
from common.djangoapps.student.models_api import confirm_name_change, do_name_change_request, get_name
3736
from common.djangoapps.student.tests.factories import AccountRecoveryFactory, CourseEnrollmentFactory, UserFactory
@@ -608,24 +607,24 @@ def test_delete_by_user_value_redacts_pending_email_before_deletion(self):
608607
"""
609608
expected_redacted_email = '[email protected]'
610609
captured_state = {}
611-
610+
612611
def capture_before_delete(sender, instance, **kwargs):
613612
"""
614613
Capture email and activation_key before deletion.
615614
"""
616615
captured_state['new_email'] = instance.new_email
617616
captured_state['activation_key'] = instance.activation_key
618-
617+
619618
pre_delete.connect(capture_before_delete, sender=PendingEmailChange)
620619
try:
621620
assert PendingEmailChange.objects.filter(user=self.user).exists()
622-
621+
623622
record_was_deleted = PendingEmailChange.delete_by_user_value(self.user, field='user')
624623
assert record_was_deleted
625-
624+
626625
assert captured_state['new_email'] == expected_redacted_email
627626
assert captured_state['activation_key'] == self.email_change.activation_key
628-
627+
629628
assert not PendingEmailChange.objects.filter(user=self.user).exists()
630629
finally:
631630
pre_delete.disconnect(capture_before_delete, sender=PendingEmailChange)

openedx/core/djangoapps/user_api/accounts/tests/test_retirement_views.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
import ddt
1111
from django.contrib.auth.models import User # lint-amnesty, pylint: disable=imported-auth-user
1212
from django.contrib.sites.models import Site
13-
from django.core import mail
1413
from django.core.cache import cache
14+
from django.core import mail
1515
from django.db.models.signals import pre_delete
1616
from django.test import TestCase
1717
from django.urls import reverse
@@ -1401,7 +1401,6 @@ def test_retire_user(
14011401

14021402
self._entitlement_support_detail_assertions()
14031403

1404-
mock_redact_pending_email.assert_called_once_with(self.test_user, field="user")
14051404
assert not PendingEmailChange.objects.filter(user=self.test_user).exists()
14061405
assert not UserOrgTag.objects.filter(user=self.test_user).exists()
14071406

@@ -1430,14 +1429,14 @@ def capture_before_delete(sender, instance, **kwargs):
14301429
try:
14311430
# Verify the record exists with original email before retirement
14321431
assert PendingEmailChange.objects.filter(user=self.test_user).exists()
1433-
1432+
14341433
# Retire the user
14351434
data = {'username': self.original_username}
14361435
self.post_and_assert_status(data)
1437-
1436+
14381437
# Verify the redaction happened before deletion
14391438
assert captured_state.get('new_email') == expected_redacted_email
1440-
1439+
14411440
# Verify the record was deleted
14421441
assert not PendingEmailChange.objects.filter(user=self.test_user).exists()
14431442
finally:

0 commit comments

Comments
 (0)