@@ -801,6 +801,10 @@ def test_get_quoted_string_header_ends_in_qcontent(self):
801801 self .assertEqual (qs .content , 'bob' )
802802 self .assertEqual (qs .quoted_value , ' "bob"' )
803803
804+ def test_get_quoted_string_cfws_only_raises (self ):
805+ with self .assertRaises (errors .HeaderParseError ):
806+ parser .get_quoted_string (' (foo) ' )
807+
804808 def test_get_quoted_string_no_quoted_string (self ):
805809 with self .assertRaises (errors .HeaderParseError ):
806810 parser .get_quoted_string (' (ab) xyz' )
@@ -1135,6 +1139,10 @@ def test_get_local_part_complex_obsolete_invalid(self):
11351139 '@python.org' )
11361140 self .assertEqual (local_part .local_part , 'Fred.A.Johnson and dogs' )
11371141
1142+ def test_get_local_part_empty_raises (self ):
1143+ with self .assertRaises (errors .HeaderParseError ):
1144+ parser .get_local_part ('' )
1145+
11381146 def test_get_local_part_no_part_raises (self ):
11391147 with self .assertRaises (errors .HeaderParseError ):
11401148 parser .get_local_part (' (foo) ' )
@@ -1387,6 +1395,10 @@ def test_get_domain_obsolete(self):
13871395 '' )
13881396 self .assertEqual (domain .domain , 'example.com' )
13891397
1398+ def test_get_domain_empty_raises (self ):
1399+ with self .assertRaises (errors .HeaderParseError ):
1400+ parser .get_domain ("" )
1401+
13901402 def test_get_domain_no_non_cfws_raises (self ):
13911403 with self .assertRaises (errors .HeaderParseError ):
13921404 parser .get_domain (" (foo)\t " )
@@ -1512,6 +1524,10 @@ def test_get_obs_route_no_route_before_end_raises(self):
15121524 with self .assertRaises (errors .HeaderParseError ):
15131525 parser .get_obs_route ('(foo) @example.com,' )
15141526
1527+ def test_get_obs_route_no_route_before_end_raises2 (self ):
1528+ with self .assertRaises (errors .HeaderParseError ):
1529+ parser .get_obs_route ('(foo) @example.com, (foo) ' )
1530+
15151531 def test_get_obs_route_no_route_before_special_raises (self ):
15161532 with self .assertRaises (errors .HeaderParseError ):
15171533 parser .get_obs_route ('(foo) [abc],' )
@@ -1520,6 +1536,14 @@ def test_get_obs_route_no_route_before_special_raises2(self):
15201536 with self .assertRaises (errors .HeaderParseError ):
15211537 parser .get_obs_route ('(foo) @example.com [abc],' )
15221538
1539+ def test_get_obs_route_no_domain_after_at_raises (self ):
1540+ with self .assertRaises (errors .HeaderParseError ):
1541+ parser .get_obs_route ('@' )
1542+
1543+ def test_get_obs_route_no_domain_after_at_raises2 (self ):
1544+ with self .assertRaises (errors .HeaderParseError ):
1545+ parser .get_obs_route ('@example.com, @' )
1546+
15231547 # get_angle_addr
15241548
15251549 def test_get_angle_addr_simple (self ):
@@ -1646,6 +1670,14 @@ def test_get_angle_addr_ends_at_special(self):
16461670 self .assertIsNone (angle_addr .route )
16471671 self .
assertEqual (
angle_addr .
addr_spec ,
'[email protected] ' )
16481672
1673+ def test_get_angle_addr_empty_raise (self ):
1674+ with self .assertRaises (errors .HeaderParseError ):
1675+ parser .get_angle_addr ('' )
1676+
1677+ def test_get_angle_addr_left_angle_only_raise (self ):
1678+ with self .assertRaises (errors .HeaderParseError ):
1679+ parser .get_angle_addr ('<' )
1680+
16491681 def test_get_angle_addr_no_angle_raise (self ):
16501682 with self .assertRaises (errors .HeaderParseError ):
16511683 parser .get_angle_addr ('(foo) ' )
@@ -1857,6 +1889,10 @@ def test_get_name_addr_ends_at_special(self):
18571889 self .assertIsNone (name_addr .route )
18581890 self .
assertEqual (
name_addr .
addr_spec ,
'[email protected] ' )
18591891
1892+ def test_get_name_addr_empty_raises (self ):
1893+ with self .assertRaises (errors .HeaderParseError ):
1894+ parser .get_name_addr ('' )
1895+
18601896 def test_get_name_addr_no_content_raises (self ):
18611897 with self .assertRaises (errors .HeaderParseError ):
18621898 parser .get_name_addr (' (foo) ' )
@@ -2732,6 +2768,10 @@ def test_get_msg_id_empty_id_right(self):
27322768 with self .assertRaises (errors .HeaderParseError ):
27332769 parser .get_msg_id ("<simplelocal@>" )
27342770
2771+ def test_get_msg_id_no_id_right (self ):
2772+ with self .assertRaises (errors .HeaderParseError ):
2773+ parser .get_msg_id ("<simplelocal@" )
2774+
27352775 def test_get_msg_id_with_brackets (self ):
27362776 # Microsof Outlook generates non-standard one-off addresses:
27372777 # https://learn.microsoft.com/en-us/office/client-developer/outlook/mapi/one-off-addresses
0 commit comments