@@ -2491,6 +2491,38 @@ def test_get_address_quoted_strings_in_atom_list(self):
2491
2491
self .assertEqual (address .all_mailboxes [0 ].domain , 'example.com' )
2492
2492
self .assertEqual (address .all_mailboxes [0 ].addr_spec , '"example example"@example.com' )
2493
2493
2494
+ def test_get_address_with_invalid_domain (self ):
2495
+ address = self ._test_get_x (parser .get_address ,
2496
+ '<T@[' ,
2497
+ '<T@[]>' ,
2498
+ '<T@[]>' ,
2499
+ [errors .InvalidHeaderDefect , # missing trailing '>' on angle-addr
2500
+ errors .InvalidHeaderDefect , # end of input inside domain-literal
2501
+ ],
2502
+ '' )
2503
+ self .assertEqual (address .token_type , 'address' )
2504
+ self .assertEqual (len (address .mailboxes ), 0 )
2505
+ self .assertEqual (len (address .all_mailboxes ), 1 )
2506
+ self .assertEqual (address .all_mailboxes [0 ].domain , '[]' )
2507
+ self .assertEqual (address .all_mailboxes [0 ].local_part , 'T' )
2508
+ self .assertEqual (address .all_mailboxes [0 ].token_type , 'invalid-mailbox' )
2509
+ self .assertEqual (address [0 ].token_type , 'invalid-mailbox' )
2510
+
2511
+ address = self ._test_get_x (parser .get_address ,
2512
+ '!an??:=m==fr2@[C' ,
2513
+ '!an??:=m==fr2@[C];' ,
2514
+ '!an??:=m==fr2@[C];' ,
2515
+ [errors .InvalidHeaderDefect , # end of header in group
2516
+ errors .InvalidHeaderDefect , # end of input inside domain-literal
2517
+ ],
2518
+ '' )
2519
+ self .assertEqual (address .token_type , 'address' )
2520
+ self .assertEqual (len (address .mailboxes ), 0 )
2521
+ self .assertEqual (len (address .all_mailboxes ), 1 )
2522
+ self .assertEqual (address .all_mailboxes [0 ].domain , '[C]' )
2523
+ self .assertEqual (address .all_mailboxes [0 ].local_part , '=m==fr2' )
2524
+ self .assertEqual (address .all_mailboxes [0 ].token_type , 'invalid-mailbox' )
2525
+ self .assertEqual (address [0 ].token_type , 'group' )
2494
2526
2495
2527
# get_address_list
2496
2528
@@ -2765,6 +2797,19 @@ def test_parse_valid_message_id(self):
2765
2797
)
2766
2798
self .assertEqual (message_id .token_type , 'message-id' )
2767
2799
2800
+ def test_parse_message_id_with_invalid_domain (self ):
2801
+ message_id = self ._test_parse_x (
2802
+ parser .parse_message_id ,
2803
+ "<T@[" ,
2804
+ "<T@[]>" ,
2805
+ "<T@[]>" ,
2806
+ [errors .ObsoleteHeaderDefect ] + [errors .InvalidHeaderDefect ] * 2 ,
2807
+ [],
2808
+ )
2809
+ self .assertEqual (message_id .token_type , 'message-id' )
2810
+ self .assertEqual (str (message_id .all_defects [- 1 ]),
2811
+ "end of input inside domain-literal" )
2812
+
2768
2813
def test_parse_message_id_with_remaining (self ):
2769
2814
message_id = self ._test_parse_x (
2770
2815
parser .parse_message_id ,
0 commit comments