diff options
| author | Jake Howard <git@theorangeone.net> | 2024-06-27 12:01:19 +0100 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2024-08-05 09:21:44 +0200 |
| commit | d5bebc1c26d4c0ec9eaa057aefc5b38649c0ba3b (patch) | |
| tree | b9ce1c33f1936f41cbebd189448ea617b48e408a /tests/mail | |
| parent | 5424151f96252e1289e9a6f7eb842cd1dc87850a (diff) | |
Refs #35537 -- Improved documentation and test coverage for email attachments and alternatives.
Diffstat (limited to 'tests/mail')
| -rw-r--r-- | tests/mail/tests.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/tests/mail/tests.py b/tests/mail/tests.py index a0d28eb0ce..6280bfa5c8 100644 --- a/tests/mail/tests.py +++ b/tests/mail/tests.py @@ -17,6 +17,8 @@ from unittest import mock, skipUnless from django.core import mail from django.core.mail import ( DNS_NAME, + EmailAlternative, + EmailAttachment, EmailMessage, EmailMultiAlternatives, mail_admins, @@ -557,12 +559,50 @@ class MailTests(HeadersCheckMixin, SimpleTestCase): mime_type = "text/html" msg.attach_alternative(html_content, mime_type) + self.assertIsInstance(msg.alternatives[0], EmailAlternative) + + self.assertEqual(msg.alternatives[0][0], html_content) + self.assertEqual(msg.alternatives[0].content, html_content) + + self.assertEqual(msg.alternatives[0][1], mime_type) + self.assertEqual(msg.alternatives[0].mimetype, mime_type) + + self.assertIn(html_content, msg.message().as_string()) + + def test_alternatives_constructor(self): + html_content = "<p>This is <strong>html</strong></p>" + mime_type = "text/html" + + msg = EmailMultiAlternatives( + alternatives=[EmailAlternative(html_content, mime_type)] + ) + + self.assertIsInstance(msg.alternatives[0], EmailAlternative) + self.assertEqual(msg.alternatives[0][0], html_content) self.assertEqual(msg.alternatives[0].content, html_content) self.assertEqual(msg.alternatives[0][1], mime_type) self.assertEqual(msg.alternatives[0].mimetype, mime_type) + self.assertIn(html_content, msg.message().as_string()) + + def test_alternatives_constructor_from_tuple(self): + html_content = "<p>This is <strong>html</strong></p>" + mime_type = "text/html" + + msg = EmailMultiAlternatives(alternatives=[(html_content, mime_type)]) + + self.assertIsInstance(msg.alternatives[0], EmailAlternative) + + self.assertEqual(msg.alternatives[0][0], html_content) + self.assertEqual(msg.alternatives[0].content, html_content) + + self.assertEqual(msg.alternatives[0][1], mime_type) + self.assertEqual(msg.alternatives[0].mimetype, mime_type) + + self.assertIn(html_content, msg.message().as_string()) + def test_none_body(self): msg = EmailMessage("subject", None, "from@example.com", ["to@example.com"]) self.assertEqual(msg.body, "") @@ -654,6 +694,51 @@ class MailTests(HeadersCheckMixin, SimpleTestCase): self.assertEqual(msg.attachments[0][2], mime_type) self.assertEqual(msg.attachments[0].mimetype, mime_type) + attachments = self.get_decoded_attachments(msg) + self.assertEqual(attachments[0], (file_name, file_content.encode(), mime_type)) + + def test_attachments_constructor(self): + file_name = "example.txt" + file_content = "Text file content" + mime_type = "text/plain" + msg = EmailMessage( + attachments=[EmailAttachment(file_name, file_content, mime_type)] + ) + + self.assertIsInstance(msg.attachments[0], EmailAttachment) + + self.assertEqual(msg.attachments[0][0], file_name) + self.assertEqual(msg.attachments[0].filename, file_name) + + self.assertEqual(msg.attachments[0][1], file_content) + self.assertEqual(msg.attachments[0].content, file_content) + + self.assertEqual(msg.attachments[0][2], mime_type) + self.assertEqual(msg.attachments[0].mimetype, mime_type) + + attachments = self.get_decoded_attachments(msg) + self.assertEqual(attachments[0], (file_name, file_content.encode(), mime_type)) + + def test_attachments_constructor_from_tuple(self): + file_name = "example.txt" + file_content = "Text file content" + mime_type = "text/plain" + msg = EmailMessage(attachments=[(file_name, file_content, mime_type)]) + + self.assertIsInstance(msg.attachments[0], EmailAttachment) + + self.assertEqual(msg.attachments[0][0], file_name) + self.assertEqual(msg.attachments[0].filename, file_name) + + self.assertEqual(msg.attachments[0][1], file_content) + self.assertEqual(msg.attachments[0].content, file_content) + + self.assertEqual(msg.attachments[0][2], mime_type) + self.assertEqual(msg.attachments[0].mimetype, mime_type) + + attachments = self.get_decoded_attachments(msg) + self.assertEqual(attachments[0], (file_name, file_content.encode(), mime_type)) + def test_decoded_attachments(self): """Regression test for #9367""" headers = {"Date": "Fri, 09 Nov 2001 01:08:47 -0000", "Message-ID": "foo"} |
