Refs #35581 -- Identified mail tests that check for Python 2 behavior.

This also removed a duplicate CTE case (that used to be distinct in Python 2).
This commit is contained in:
Mike Edmunds 2024-10-28 14:42:53 +01:00 committed by Sarah Boyce
parent 4d76adfacd
commit 00861c4ca7
1 changed files with 13 additions and 17 deletions

View File

@ -1027,21 +1027,9 @@ class MailTests(HeadersCheckMixin, SimpleTestCase):
) )
self.assertNotIn(b">From the future", email.message().as_bytes()) self.assertNotIn(b">From the future", email.message().as_bytes())
def test_dont_base64_encode(self): def test_body_content_transfer_encoding(self):
# Ticket #3472 # Shouldn't use base64 or quoted-printable, instead should detect it
# Shouldn't use Base64 encoding at all # can represent content with 7-bit data (#3472, #11212).
msg = EmailMessage(
"Subject",
"UTF-8 encoded body",
"bounce@example.com",
["to@example.com"],
headers={"From": "from@example.com"},
)
self.assertIn(b"Content-Transfer-Encoding: 7bit", msg.message().as_bytes())
# Ticket #11212
# Shouldn't use quoted printable, should detect it can represent
# content with 7 bit data.
msg = EmailMessage( msg = EmailMessage(
"Subject", "Subject",
"Body with only ASCII characters.", "Body with only ASCII characters.",
@ -1052,8 +1040,8 @@ class MailTests(HeadersCheckMixin, SimpleTestCase):
s = msg.message().as_bytes() s = msg.message().as_bytes()
self.assertIn(b"Content-Transfer-Encoding: 7bit", s) self.assertIn(b"Content-Transfer-Encoding: 7bit", s)
# Shouldn't use quoted printable, should detect it can represent # Shouldn't use base64 or quoted-printable, instead should detect
# content with 8 bit data. # it can represent content with 8-bit data.
msg = EmailMessage( msg = EmailMessage(
"Subject", "Subject",
"Body with latin characters: àáä.", "Body with latin characters: àáä.",
@ -1063,9 +1051,16 @@ class MailTests(HeadersCheckMixin, SimpleTestCase):
) )
s = msg.message().as_bytes() s = msg.message().as_bytes()
self.assertIn(b"Content-Transfer-Encoding: 8bit", s) self.assertIn(b"Content-Transfer-Encoding: 8bit", s)
# The following test is left over from Python 2 and can be safely removed.
# 8bit CTE within a Unicode str is not meaningful, and Python's modern
# email api won't generate it. (The test still works with the legacy api.)
s = msg.message().as_string() s = msg.message().as_string()
self.assertIn("Content-Transfer-Encoding: 8bit", s) self.assertIn("Content-Transfer-Encoding: 8bit", s)
# Long body lines that require folding should use quoted-printable or base64,
# whichever is shorter. However, Python's legacy email API avoids re-folding
# non-ASCII text and just uses CTE 8bit. (The modern API would correctly choose
# base64 here. Any of these is deliverable.)
msg = EmailMessage( msg = EmailMessage(
"Subject", "Subject",
"Body with non latin characters: А Б В Г Д Е Ж Ѕ З И І К Л М Н О П.", "Body with non latin characters: А Б В Г Д Е Ж Ѕ З И І К Л М Н О П.",
@ -1075,6 +1070,7 @@ class MailTests(HeadersCheckMixin, SimpleTestCase):
) )
s = msg.message().as_bytes() s = msg.message().as_bytes()
self.assertIn(b"Content-Transfer-Encoding: 8bit", s) self.assertIn(b"Content-Transfer-Encoding: 8bit", s)
# The following test is left over from Python 2.
s = msg.message().as_string() s = msg.message().as_string()
self.assertIn("Content-Transfer-Encoding: 8bit", s) self.assertIn("Content-Transfer-Encoding: 8bit", s)