summaryrefslogtreecommitdiff
path: root/tests/mail
diff options
context:
space:
mode:
authorJake Howard <git@theorangeone.net>2024-06-27 12:01:19 +0100
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2024-08-05 09:21:44 +0200
commitd5bebc1c26d4c0ec9eaa057aefc5b38649c0ba3b (patch)
treeb9ce1c33f1936f41cbebd189448ea617b48e408a /tests/mail
parent5424151f96252e1289e9a6f7eb842cd1dc87850a (diff)
Refs #35537 -- Improved documentation and test coverage for email attachments and alternatives.
Diffstat (limited to 'tests/mail')
-rw-r--r--tests/mail/tests.py85
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"}