diff options
author | R David Murray <rdmurray@bitdance.com> | 2011-06-22 13:47:53 -0400 |
---|---|---|
committer | R David Murray <rdmurray@bitdance.com> | 2011-06-22 13:47:53 -0400 |
commit | 749073af13fcb389059b182290f5cbc953222681 (patch) | |
tree | 9da44b14da5872581f1655829522841dd59e1060 /Lib/test/test_email | |
parent | 11cc475be79c123be0e587b12662cc70b7518348 (diff) | |
download | cpython-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.py | 45 |
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 |