@@ -373,7 +373,11 @@ def cmd_AUTHENTICATE(self, tag, args):
373
373
self ._send_tagged (tag , 'OK' , 'FAKEAUTH successful' )
374
374
def cmd_APPEND (self , tag , args ):
375
375
self ._send_textline ('+' )
376
- self .server .response = yield
376
+ self .server .response = args
377
+ literal = yield
378
+ self .server .response .append (literal )
379
+ literal = yield
380
+ self .server .response .append (literal )
377
381
self ._send_tagged (tag , 'OK' , 'okay' )
378
382
client , server = self ._setup (UTF8AppendServer )
379
383
self .assertEqual (client ._encoding , 'ascii' )
@@ -384,10 +388,13 @@ def cmd_APPEND(self, tag, args):
384
388
self .assertEqual (code , 'OK' )
385
389
self .assertEqual (client ._encoding , 'utf-8' )
386
390
msg_string = 'Subject: üñí©öðé'
387
- typ , data = client .append (None , None , None , msg_string .encode ('utf-8' ))
391
+ typ , data = client .append (
392
+ None , None , None , (msg_string + '\n ' ).encode ('utf-8' ))
388
393
self .assertEqual (typ , 'OK' )
389
394
self .assertEqual (server .response ,
390
- ('UTF8 (%s)\r \n ' % msg_string ).encode ('utf-8' ))
395
+ ['INBOX' , 'UTF8' ,
396
+ '(~{25}' , ('%s\r \n ' % msg_string ).encode ('utf-8' ),
397
+ b')\r \n ' ])
391
398
392
399
def test_search_disallows_charset_in_utf8_mode (self ):
393
400
class UTF8Server (SimpleIMAPHandler ):
@@ -887,7 +894,11 @@ def test_enable_UTF8_True_append(self):
887
894
class UTF8AppendServer (self .UTF8Server ):
888
895
def cmd_APPEND (self , tag , args ):
889
896
self ._send_textline ('+' )
890
- self .server .response = yield
897
+ self .server .response = args
898
+ literal = yield
899
+ self .server .response .append (literal )
900
+ literal = yield
901
+ self .server .response .append (literal )
891
902
self ._send_tagged (tag , 'OK' , 'okay' )
892
903
893
904
with self .reaped_pair (UTF8AppendServer ) as (server , client ):
@@ -901,12 +912,12 @@ def cmd_APPEND(self, tag, args):
901
912
self .assertEqual (client ._encoding , 'utf-8' )
902
913
msg_string = 'Subject: üñí©öðé'
903
914
typ , data = client .append (
904
- None , None , None , msg_string .encode ('utf-8' ))
915
+ None , None , None , ( msg_string + ' \n ' ) .encode ('utf-8' ))
905
916
self .assertEqual (typ , 'OK' )
906
- self .assertEqual (
907
- server . response ,
908
- ( 'UTF8 (%s) \r \n ' % msg_string ).encode ('utf-8' )
909
- )
917
+ self .assertEqual (server . response ,
918
+ [ 'INBOX' , 'UTF8' ,
919
+ '(~{25}' , ( '%s \r \n ' % msg_string ).encode ('utf-8' ),
920
+ b') \r \n ' ] )
910
921
911
922
# XXX also need a test that makes sure that the Literal and Untagged_status
912
923
# regexes uses unicode in UTF8 mode instead of the default ASCII.
0 commit comments