diff --git a/tests/unit/email/test_init.py b/tests/unit/email/test_init.py index 1c0a55be4ff1..760b1645ef80 100644 --- a/tests/unit/email/test_init.py +++ b/tests/unit/email/test_init.py @@ -288,7 +288,8 @@ def test_sends_unverified_with_override( class TestSendEmail: - def test_send_email_success(self, db_session, monkeypatch): + @pytest.mark.parametrize("delete_user", [True, False]) + def test_send_email_success(self, delete_user, db_session, monkeypatch): class FakeMailSender: def __init__(self): self.emails = [] @@ -321,6 +322,8 @@ def __init__(self): self.user = FakeUser() def get_user(self, user_id): + if delete_user: + return None return self.user user_service = FakeUserEventService() @@ -373,18 +376,21 @@ def get_user(self, user_id): "recipient": "recipient", } ] - assert user_service.user.events == [ - { - "tag": "account:email:sent", - "ip_address": request.remote_addr, - "additional": { - "from_": "noreply@example.com", - "to": "recipient", - "subject": msg.subject, - "redact_ip": False, - }, - } - ] + if delete_user: + assert user_service.user.events == [] + else: + assert user_service.user.events == [ + { + "tag": "account:email:sent", + "ip_address": request.remote_addr, + "additional": { + "from_": "noreply@example.com", + "to": "recipient", + "subject": msg.subject, + "redact_ip": False, + }, + } + ] def test_send_email_failure_retry(self, monkeypatch): exc = Exception() diff --git a/warehouse/email/__init__.py b/warehouse/email/__init__.py index 870993722b08..b4c9b660f575 100644 --- a/warehouse/email/__init__.py +++ b/warehouse/email/__init__.py @@ -69,7 +69,8 @@ def send_email(task, request, recipient, msg, success_event): sender.send(recipient, msg) user_service = request.find_service(IUserService, context=None) user = user_service.get_user(success_event.pop("user_id")) - user.record_event(**success_event) + if user is not None: # We send account deletion confirmation emails + user.record_event(**success_event) except (BadHeaders, EncodingError, InvalidMessage) as exc: raise exc except Exception as exc: