summaryrefslogtreecommitdiff
path: root/Lib/test/test_email
diff options
context:
space:
mode:
authorR David Murray <rdmurray@bitdance.com>2011-06-22 13:47:53 -0400
committerR David Murray <rdmurray@bitdance.com>2011-06-22 13:47:53 -0400
commit749073af13fcb389059b182290f5cbc953222681 (patch)
tree9da44b14da5872581f1655829522841dd59e1060 /Lib/test/test_email
parent11cc475be79c123be0e587b12662cc70b7518348 (diff)
downloadcpython-git-749073af13fcb389059b182290f5cbc953222681.tar.gz
#1874: detect invalid multipart CTE and report it as a defect.
Diffstat (limited to 'Lib/test/test_email')
-rw-r--r--Lib/test/test_email/test_email.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/Lib/test/test_email/test_email.py b/Lib/test/test_email/test_email.py
index 17451f3c7b..121c939561 100644
--- a/Lib/test/test_email/test_email.py
+++ b/Lib/test/test_email/test_email.py
@@ -1809,6 +1809,51 @@ class TestNonConformantBase:
unless(isinstance(self.get_defects(msg)[1],
errors.MultipartInvariantViolationDefect))
+ multipart_msg = textwrap.dedent("""\
+ Date: Wed, 14 Nov 2007 12:56:23 GMT
+ From: foo@bar.invalid
+ To: foo@bar.invalid
+ Subject: Content-Transfer-Encoding: base64 and multipart
+ MIME-Version: 1.0
+ Content-Type: multipart/mixed;
+ boundary="===============3344438784458119861=="{}
+
+ --===============3344438784458119861==
+ Content-Type: text/plain
+
+ Test message
+
+ --===============3344438784458119861==
+ Content-Type: application/octet-stream
+ Content-Transfer-Encoding: base64
+
+ YWJj
+
+ --===============3344438784458119861==--
+ """)
+
+ def test_multipart_invalid_cte(self):
+ msg = email.message_from_string(
+ self.multipart_msg.format("\nContent-Transfer-Encoding: base64"),
+ policy = self.policy)
+ self.assertEqual(len(self.get_defects(msg)), 1)
+ self.assertIsInstance(self.get_defects(msg)[0],
+ errors.InvalidMultipartContentTransferEncodingDefect)
+
+ def test_multipart_no_cte_no_defect(self):
+ msg = email.message_from_string(
+ self.multipart_msg.format(''),
+ policy = self.policy)
+ self.assertEqual(len(self.get_defects(msg)), 0)
+
+ def test_multipart_valid_cte_no_defect(self):
+ for cte in ('7bit', '8bit', 'BINary'):
+ msg = email.message_from_string(
+ self.multipart_msg.format(
+ "\nContent-Transfer-Encoding: {}".format(cte)),
+ policy = self.policy)
+ self.assertEqual(len(self.get_defects(msg)), 0)
+
def test_invalid_content_type(self):
eq = self.assertEqual
neq = self.ndiffAssertEqual