@@ -325,7 +325,11 @@ def cmd_AUTHENTICATE(self, tag, args):
325
325
self ._send_tagged (tag , 'OK' , 'FAKEAUTH successful' )
326
326
def cmd_APPEND (self , tag , args ):
327
327
self ._send_textline ('+' )
328
- self .server .response = yield
328
+ self .server .response = args
329
+ literal = yield
330
+ self .server .response .append (literal )
331
+ literal = yield
332
+ self .server .response .append (literal )
329
333
self ._send_tagged (tag , 'OK' , 'okay' )
330
334
client , server = self ._setup (UTF8AppendServer )
331
335
self .assertEqual (client ._encoding , 'ascii' )
@@ -336,10 +340,13 @@ def cmd_APPEND(self, tag, args):
336
340
self .assertEqual (code , 'OK' )
337
341
self .assertEqual (client ._encoding , 'utf-8' )
338
342
msg_string = 'Subject: üñí©öðé'
339
- typ , data = client .append (None , None , None , msg_string .encode ('utf-8' ))
343
+ typ , data = client .append (
344
+ None , None , None , (msg_string + '\n ' ).encode ('utf-8' ))
340
345
self .assertEqual (typ , 'OK' )
341
346
self .assertEqual (server .response ,
342
- ('UTF8 (%s)\r \n ' % msg_string ).encode ('utf-8' ))
347
+ ['INBOX' , 'UTF8' ,
348
+ '(~{25}' , ('%s\r \n ' % msg_string ).encode ('utf-8' ),
349
+ b')\r \n ' ])
343
350
344
351
def test_search_disallows_charset_in_utf8_mode (self ):
345
352
class UTF8Server (SimpleIMAPHandler ):
@@ -764,7 +771,11 @@ def test_enable_UTF8_True_append(self):
764
771
class UTF8AppendServer (self .UTF8Server ):
765
772
def cmd_APPEND (self , tag , args ):
766
773
self ._send_textline ('+' )
767
- self .server .response = yield
774
+ self .server .response = args
775
+ literal = yield
776
+ self .server .response .append (literal )
777
+ literal = yield
778
+ self .server .response .append (literal )
768
779
self ._send_tagged (tag , 'OK' , 'okay' )
769
780
770
781
with self .reaped_pair (UTF8AppendServer ) as (server , client ):
@@ -778,12 +789,12 @@ def cmd_APPEND(self, tag, args):
778
789
self .assertEqual (client ._encoding , 'utf-8' )
779
790
msg_string = 'Subject: üñí©öðé'
780
791
typ , data = client .append (
781
- None , None , None , msg_string .encode ('utf-8' ))
792
+ None , None , None , ( msg_string + ' \n ' ) .encode ('utf-8' ))
782
793
self .assertEqual (typ , 'OK' )
783
- self .assertEqual (
784
- server . response ,
785
- ( 'UTF8 (%s) \r \n ' % msg_string ).encode ('utf-8' )
786
- )
794
+ self .assertEqual (server . response ,
795
+ [ 'INBOX' , 'UTF8' ,
796
+ '(~{25}' , ( '%s \r \n ' % msg_string ).encode ('utf-8' ),
797
+ b') \r \n ' ] )
787
798
788
799
# XXX also need a test that makes sure that the Literal and Untagged_status
789
800
# regexes uses unicode in UTF8 mode instead of the default ASCII.
0 commit comments