|
1 |
| -import unittest |
2 | 1 | import textwrap
|
3 |
| -from email import policy, message_from_string |
| 2 | +import unittest |
| 3 | +from email import message_from_bytes, message_from_string, policy |
4 | 4 | from email.message import EmailMessage, MIMEPart
|
5 | 5 | from test.test_email import TestEmailBase, parameterize
|
6 | 6 |
|
@@ -958,6 +958,52 @@ def test_folding_with_utf8_encoding_8(self):
|
958 | 958 | b'123456789-123456789\n 123456789 Hello '
|
959 | 959 | b'=?utf-8?q?W=C3=B6rld!?= 123456789 123456789\n\n')
|
960 | 960 |
|
| 961 | + def test_folding_with_short_nospace_1(self): |
| 962 | + # bpo-36520 |
| 963 | + # |
| 964 | + # Fold a line that contains a long whitespace after |
| 965 | + # the fold point. |
| 966 | + |
| 967 | + m = EmailMessage(policy.default) |
| 968 | + m['Message-ID'] = '123456789' * 3 |
| 969 | + parsed_msg = message_from_bytes(m.as_bytes(), policy=policy.default) |
| 970 | + self.assertEqual(parsed_msg['Message-ID'], m['Message-ID']) |
| 971 | + |
| 972 | + def test_folding_with_long_nospace_default_policy_1(self): |
| 973 | + # Fixed: https://github.com/python/cpython/issues/124452 |
| 974 | + # |
| 975 | + # When the value is too long, it should be converted back |
| 976 | + # to its original form without any modifications. |
| 977 | + |
| 978 | + m = EmailMessage(policy.default) |
| 979 | + message = '123456789' * 10 |
| 980 | + m['Message-ID'] = message |
| 981 | + self.assertEqual(m.as_bytes(), |
| 982 | + f'Message-ID:\n {message}\n\n'.encode()) |
| 983 | + parsed_msg = message_from_bytes(m.as_bytes(), policy=policy.default) |
| 984 | + self.assertEqual(parsed_msg['Message-ID'], m['Message-ID']) |
| 985 | + |
| 986 | + def test_folding_with_long_nospace_compat32_policy_1(self): |
| 987 | + m = EmailMessage(policy.compat32) |
| 988 | + message = '123456789' * 10 |
| 989 | + m['Message-ID'] = message |
| 990 | + parsed_msg = message_from_bytes(m.as_bytes(), policy=policy.default) |
| 991 | + self.assertEqual(parsed_msg['Message-ID'], m['Message-ID']) |
| 992 | + |
| 993 | + def test_folding_with_long_nospace_smtp_policy_1(self): |
| 994 | + m = EmailMessage(policy.SMTP) |
| 995 | + message = '123456789' * 10 |
| 996 | + m['Message-ID'] = message |
| 997 | + parsed_msg = message_from_bytes(m.as_bytes(), policy=policy.default) |
| 998 | + self.assertEqual(parsed_msg['Message-ID'], m['Message-ID']) |
| 999 | + |
| 1000 | + def test_folding_with_long_nospace_http_policy_1(self): |
| 1001 | + m = EmailMessage(policy.HTTP) |
| 1002 | + message = '123456789' * 10 |
| 1003 | + m['Message-ID'] = message |
| 1004 | + parsed_msg = message_from_bytes(m.as_bytes(), policy=policy.default) |
| 1005 | + self.assertEqual(parsed_msg['Message-ID'], m['Message-ID']) |
| 1006 | + |
961 | 1007 | def test_get_body_malformed(self):
|
962 | 1008 | """test for bpo-42892"""
|
963 | 1009 | msg = textwrap.dedent("""\
|
|
0 commit comments