summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_email/test_email.py44
-rw-r--r--Lib/test/test_email/test_headerregistry.py5
2 files changed, 49 insertions, 0 deletions
diff --git a/Lib/test/test_email/test_email.py b/Lib/test/test_email/test_email.py
index abe9ef2..2deb357 100644
--- a/Lib/test/test_email/test_email.py
+++ b/Lib/test/test_email/test_email.py
@@ -810,6 +810,16 @@ class TestMessageAPI(TestEmailBase):
w4kgdGVzdGFiYwo=
"""))
+ def test_string_payload_with_base64_cte(self):
+ msg = email.message_from_string(textwrap.dedent("""\
+ Content-Transfer-Encoding: base64
+
+ SGVsbG8uIFRlc3Rpbmc=
+ """), policy=email.policy.default)
+ self.assertEqual(msg.get_payload(decode=True), b"Hello. Testing")
+ self.assertDefectsEqual(msg['content-transfer-encoding'].defects, [])
+
+
# Test the email.encoders module
class TestEncoders(unittest.TestCase):
@@ -2352,6 +2362,40 @@ counter to RFC 2822, there's no separating newline here
self.assertDefectsEqual(msg.defects,
[errors.MissingHeaderBodySeparatorDefect])
+ def test_string_payload_with_extra_space_after_cte(self):
+ # https://github.com/python/cpython/issues/98188
+ cte = "base64 "
+ msg = email.message_from_string(textwrap.dedent(f"""\
+ Content-Transfer-Encoding: {cte}
+
+ SGVsbG8uIFRlc3Rpbmc=
+ """), policy=email.policy.default)
+ self.assertEqual(msg.get_payload(decode=True), b"Hello. Testing")
+ self.assertDefectsEqual(msg['content-transfer-encoding'].defects, [])
+
+ def test_string_payload_with_extra_text_after_cte(self):
+ msg = email.message_from_string(textwrap.dedent("""\
+ Content-Transfer-Encoding: base64 some text
+
+ SGVsbG8uIFRlc3Rpbmc=
+ """), policy=email.policy.default)
+ self.assertEqual(msg.get_payload(decode=True), b"Hello. Testing")
+ cte = msg['content-transfer-encoding']
+ self.assertDefectsEqual(cte.defects, [email.errors.InvalidHeaderDefect])
+
+ def test_string_payload_with_extra_space_after_cte_compat32(self):
+ cte = "base64 "
+ msg = email.message_from_string(textwrap.dedent(f"""\
+ Content-Transfer-Encoding: {cte}
+
+ SGVsbG8uIFRlc3Rpbmc=
+ """), policy=email.policy.compat32)
+ pasted_cte = msg['content-transfer-encoding']
+ self.assertEqual(pasted_cte, cte)
+ self.assertEqual(msg.get_payload(decode=True), b"Hello. Testing")
+ self.assertDefectsEqual(msg.defects, [])
+
+
# Test RFC 2047 header encoding and decoding
class TestRFC2047(TestEmailBase):
diff --git a/Lib/test/test_email/test_headerregistry.py b/Lib/test/test_email/test_headerregistry.py
index 4c0523f..ff7a6da 100644
--- a/Lib/test/test_email/test_headerregistry.py
+++ b/Lib/test/test_email/test_headerregistry.py
@@ -837,6 +837,11 @@ class TestContentTransferEncoding(TestHeaderBase):
'7bit',
[errors.InvalidHeaderDefect]),
+ 'extra_space_after_cte': (
+ 'base64 ',
+ 'base64',
+ []),
+
}