diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/auth_tests/test_forms.py | 21 | ||||
| -rw-r--r-- | tests/mail/custombackend.py | 6 |
2 files changed, 27 insertions, 0 deletions
diff --git a/tests/auth_tests/test_forms.py b/tests/auth_tests/test_forms.py index 4583c1f344..f8a179bbee 100644 --- a/tests/auth_tests/test_forms.py +++ b/tests/auth_tests/test_forms.py @@ -1246,6 +1246,27 @@ class PasswordResetFormTest(TestDataMixin, TestCase): ) ) + @override_settings(EMAIL_BACKEND="mail.custombackend.FailingEmailBackend") + def test_save_send_email_exceptions_are_catched_and_logged(self): + (user, username, email) = self.create_dummy_user() + form = PasswordResetForm({"email": email}) + self.assertTrue(form.is_valid()) + + with self.assertLogs("django.contrib.auth", level=0) as cm: + form.save() + + self.assertEqual(len(mail.outbox), 0) + self.assertEqual(len(cm.output), 1) + errors = cm.output[0].split("\n") + pk = user.pk + self.assertEqual( + errors[0], + f"ERROR:django.contrib.auth:Failed to send password reset email to {pk}", + ) + self.assertEqual( + errors[-1], "ValueError: FailingEmailBackend is doomed to fail." + ) + @override_settings(AUTH_USER_MODEL="auth_tests.CustomEmailField") def test_custom_email_field(self): email = "test@mail.com" diff --git a/tests/mail/custombackend.py b/tests/mail/custombackend.py index 14e7f077ba..c63f1c07b5 100644 --- a/tests/mail/custombackend.py +++ b/tests/mail/custombackend.py @@ -12,3 +12,9 @@ class EmailBackend(BaseEmailBackend): # Messages are stored in an instance variable for testing. self.test_outbox.extend(email_messages) return len(email_messages) + + +class FailingEmailBackend(BaseEmailBackend): + + def send_messages(self, email_messages): + raise ValueError("FailingEmailBackend is doomed to fail.") |
