summaryrefslogtreecommitdiff
path: root/tests/auth_tests/test_forms.py
diff options
context:
space:
mode:
authornessita <124304+nessita@users.noreply.github.com>2024-08-23 11:13:31 -0300
committerGitHub <noreply@github.com>2024-08-23 11:13:31 -0300
commit046a354217b80d4e8d9b575843d72413886f6bac (patch)
treedb9d8ae02f7263c235ffa3dc11287676b784a520 /tests/auth_tests/test_forms.py
parent7adb6dd98d50a238f3eca8c15b16b5aec12575fd (diff)
Added helper and refactored PasswordResetFormTest to unify email sending tests.
Diffstat (limited to 'tests/auth_tests/test_forms.py')
-rw-r--r--tests/auth_tests/test_forms.py40
1 files changed, 23 insertions, 17 deletions
diff --git a/tests/auth_tests/test_forms.py b/tests/auth_tests/test_forms.py
index 13f86b6b77..87267cc0a7 100644
--- a/tests/auth_tests/test_forms.py
+++ b/tests/auth_tests/test_forms.py
@@ -1143,6 +1143,14 @@ class PasswordResetFormTest(TestDataMixin, TestCase):
# makes tests interfere with each other, see #11505
Site.objects.clear_cache()
+ def assertEmailMessageSent(self, **kwargs):
+ self.assertEqual(len(mail.outbox), 1)
+ msg = mail.outbox[0]
+ for attr, expected in kwargs.items():
+ with self.subTest(attr=attr):
+ self.assertEqual(getattr(msg, attr), expected)
+ return msg
+
def create_dummy_user(self):
"""
Create a user and return a tuple (user_object, username, email).
@@ -1165,8 +1173,7 @@ class PasswordResetFormTest(TestDataMixin, TestCase):
form = PasswordResetForm(data)
self.assertTrue(form.is_valid())
form.save()
- self.assertEqual(len(mail.outbox), 1)
- self.assertEqual(mail.outbox[0].to, ["mıke@example.org"])
+ self.assertEmailMessageSent(to=["mıke@example.org"])
def test_user_email_domain_unicode_collision(self):
User.objects.create_user("mike123", "mike@ixample.org", "test123")
@@ -1175,8 +1182,7 @@ class PasswordResetFormTest(TestDataMixin, TestCase):
form = PasswordResetForm(data)
self.assertTrue(form.is_valid())
form.save()
- self.assertEqual(len(mail.outbox), 1)
- self.assertEqual(mail.outbox[0].to, ["mike@ıxample.org"])
+ self.assertEmailMessageSent(to=["mike@ıxample.org"])
def test_user_email_unicode_collision_nonexistent(self):
User.objects.create_user("mike123", "mike@example.org", "test123")
@@ -1211,7 +1217,7 @@ class PasswordResetFormTest(TestDataMixin, TestCase):
self.assertTrue(form.is_valid())
form.save(domain_override="example.com")
self.assertEqual(form.cleaned_data["email"], email)
- self.assertEqual(len(mail.outbox), 1)
+ self.assertEmailMessageSent()
def test_custom_email_subject(self):
data = {"email": "testclient@example.com"}
@@ -1221,8 +1227,7 @@ class PasswordResetFormTest(TestDataMixin, TestCase):
# domain_override to prevent the save operation from failing in the
# potential case where contrib.sites is not installed. Refs #16412.
form.save(domain_override="example.com")
- self.assertEqual(len(mail.outbox), 1)
- self.assertEqual(mail.outbox[0].subject, "Custom password reset on example.com")
+ self.assertEmailMessageSent(subject="Custom password reset on example.com")
def test_custom_email_constructor(self):
data = {"email": "testclient@example.com"}
@@ -1255,10 +1260,11 @@ class PasswordResetFormTest(TestDataMixin, TestCase):
# domain_override to prevent the save operation from failing in the
# potential case where contrib.sites is not installed. Refs #16412.
form.save(domain_override="example.com")
- self.assertEqual(len(mail.outbox), 1)
- self.assertEqual(mail.outbox[0].subject, "Forgot your password?")
- self.assertEqual(mail.outbox[0].bcc, ["site_monitor@example.com"])
- self.assertEqual(mail.outbox[0].content_subtype, "plain")
+ self.assertEmailMessageSent(
+ subject="Forgot your password?",
+ bcc=["site_monitor@example.com"],
+ content_subtype="plain",
+ )
def test_preserve_username_case(self):
"""
@@ -1305,12 +1311,12 @@ class PasswordResetFormTest(TestDataMixin, TestCase):
form = PasswordResetForm({"email": email})
self.assertTrue(form.is_valid())
form.save()
- self.assertEqual(len(mail.outbox), 1)
- message = mail.outbox[0].message()
+ msg = self.assertEmailMessageSent()
+ self.assertEqual(len(msg.alternatives), 0)
+ message = msg.message()
self.assertFalse(message.is_multipart())
self.assertEqual(message.get_content_type(), "text/plain")
self.assertEqual(message.get("subject"), "Custom password reset on example.com")
- self.assertEqual(len(mail.outbox[0].alternatives), 0)
self.assertEqual(message.get_all("to"), [email])
self.assertTrue(
re.match(r"^http://example.com/reset/[\w+/-]", message.get_payload())
@@ -1329,9 +1335,9 @@ class PasswordResetFormTest(TestDataMixin, TestCase):
form.save(
html_email_template_name="registration/html_password_reset_email.html"
)
- self.assertEqual(len(mail.outbox), 1)
- self.assertEqual(len(mail.outbox[0].alternatives), 1)
- message = mail.outbox[0].message()
+ msg = self.assertEmailMessageSent()
+ self.assertEqual(len(msg.alternatives), 1)
+ message = msg.message()
self.assertEqual(message.get("subject"), "Custom password reset on example.com")
self.assertEqual(len(message.get_payload()), 2)
self.assertTrue(message.is_multipart())