bpo-38698: Add a new InvalidMessageID token to email header parser. (GH-17503)

This adds a new InvalidMessageID token to the email header parser which can be
used to represent invalid message-id headers in the parse tree.
This commit is contained in:
Abhilash Raj 2019-12-08 17:35:38 -08:00 committed by GitHub
parent 080ee5a884
commit 68157da8b4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 56 additions and 7 deletions

View file

@ -2639,10 +2639,44 @@ class TestParser(TestParserMixin, TestEmailBase):
self.assertEqual(msg_id.token_type, 'msg-id')
def test_get_msg_id_invalid_expected_msg_id_not_found(self):
text = "Message-Id: 935-XPB-567:0:86089:180874:0:45327:9:90305:17843586-40@example.com"
text = "935-XPB-567:0:45327:9:90305:17843586-40@example.com"
msg_id = parser.parse_message_id(text)
self.assertDefectsEqual(msg_id.all_defects,
[errors.InvalidHeaderDefect])
self.assertDefectsEqual(
msg_id.all_defects,
[errors.InvalidHeaderDefect])
def test_parse_invalid_message_id(self):
message_id = self._test_parse_x(
parser.parse_message_id,
"935-XPB-567:0:45327:9:90305:17843586-40@example.com",
"935-XPB-567:0:45327:9:90305:17843586-40@example.com",
"935-XPB-567:0:45327:9:90305:17843586-40@example.com",
[errors.InvalidHeaderDefect],
)
self.assertEqual(message_id.token_type, 'invalid-message-id')
def test_parse_valid_message_id(self):
message_id = self._test_parse_x(
parser.parse_message_id,
"<aperson@somedomain>",
"<aperson@somedomain>",
"<aperson@somedomain>",
[],
)
self.assertEqual(message_id.token_type, 'message-id')
def test_parse_message_id_with_remaining(self):
message_id = self._test_parse_x(
parser.parse_message_id,
"<validmessageid@example>thensomething",
"<validmessageid@example>",
"<validmessageid@example>",
[errors.InvalidHeaderDefect],
[],
)
self.assertEqual(message_id.token_type, 'message-id')
self.assertEqual(str(message_id.all_defects[0]),
"Unexpected 'thensomething'")
def test_get_msg_id_no_angle_start(self):
with self.assertRaises(errors.HeaderParseError):