
    0hh                     8   S SK Jr  S SKJr  S SKJr  S SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKrS SKJrJrJrJrJr  S SKJr  S SKJr  S SKrS SKJr  S S	KJrJrJr   S SKr\R:                  " S
S9  \R<                  R?                  \R<                  RA                  \!5      =(       d    \RD                  SS5      r#\R<                  R?                  \R<                  RA                  \!5      =(       d    \RD                  SS5      r$ " S S\RJ                  5      r&\(       a"   " S S\	RN                  5      r(\RR                  r)O " S S5      r(Sr) " S S\	RT                  5      r+ " S S\+5      r, " S S5      r- " S S\-\RJ                  5      r.\R^                  " \S5       " S S\-\RJ                  5      5       r0 " S S \RJ                  5      r1\R^                  " \S5       " S! S"\15      5       r2\3S#:X  a  \Rh                  " 5         gg! \ a    Sr GNf = f)$    )support)socket_helper)contextmanagerN)verboserun_with_tzrun_with_localecpython_onlyrequires_resource)hashlib_helper)threading_helper)mock)datetimetimezone	timedeltaT)modulecertdatazkeycert3.pemzpycacert.pemc                       \ rS rSrS r\" S5      S 5       rS r\" SSSS	5      \" S
5      S 5       5       r	S r
\R                  S 5       rSrg)TestImaplib   c                    [         R                  " S5      n[        R                  " S5      nU R	                  [
        R                  " U5      U5        [        R                  " S5      nU R	                  [
        R                  " U5      U5        [        R                  " S5      nU R	                  [
        R                  " U5      U5        g )N)	i     r   r   r   r   r   r   s.   25 (INTERNALDATE "01-Jan-2000 00:00:00 +0000")s.   25 (INTERNALDATE "01-Jan-2000 11:30:00 +1130")s.   25 (INTERNALDATE "31-Dec-1999 12:30:00 -1130"))calendartimegmimaplibInternaldate2tupleassertEqualtimemktime)selft0tts      :/opt/python-3.13.8/usr/lib/python3.13/test/test_imaplib.pytest_Internaldate2tuple#TestImaplib.test_Internaldate2tuple!   s    __>?''=?R"-''=?R"-''=?R"-    zMST+07MDT,M4.1.0,M10.5.0c                 x    U R                  [        R                  " S5      [        R                  " S5      5        g )Ns.   25 (INTERNALDATE "02-Apr-2000 02:30:00 +0000")s.   25 (INTERNALDATE "02-Apr-2000 03:30:00 +0000"))assertNotEqualr   r   r    s    r#   "test_Internaldate2tuple_issue10941.TestImaplib.test_Internaldate2tuple_issue10941-   s3    G66=?&&AC	Dr&   c                     SS[         R                  " S5      SS[        R                  " S[	        [        SS5      5      5      S/$ )Ni 5wg    eA)	        r.   !      r   r   r   )	r-   r.   r/   r.   r0   r1   r   r   r   r   i   "18-May-2033 05:33:20 +0200")r   	localtimer   fromtimestampr   r   r)   s    r#   
timevaluesTestImaplib.timevalues4   sE    L$..*D43&&z'/	![0I'JL.0 	0r&   LC_ALLde_DEfr_FR zSTD-1DST,M3.2.0,M11.1.0c                     SnU R                  5        H*  n[        R                  " U5      nU R                  X15        M,     g )Nr2   )r5   r   Time2Internaldater   )r    expectedtinternals       r#   test_Time2Internaldate"TestImaplib.test_Time2Internaldate<   s8    
 2"A003HX0 #r&   c                 ^    U R                  5        H  n[        R                  " U5        M     g N)r5   r   r<   )r    r>   s     r#   ,test_that_Time2Internaldate_returns_a_result8TestImaplib.test_that_Time2Internaldate_returns_a_resultG   s#     "A%%a( #r&   c                    [         R                   " 5        n UR                  S[        R                  45        U R	                  S5        S S S 5        [        R                  " 5       nU R                  [        5       n[        R                  " 5         S S S 5        U R                  WR                  R                  U5        g ! [         R
                   a     Nf = f! , (       d  f       N= f! , (       d  f       N`= f)Nr:   z3Cannot run the test with local IMAP server running.)socketconnectr   
IMAP4_PORTskipTesterrorr   get_socket_conn_refused_errsassertRaisesOSErrorIMAP4assertIn	exceptionerrno)r    sexpected_errnoscms       r#   test_imap4_host_default_value)TestImaplib.test_imap4_host_default_valueN   s     ]]_		2w1123IK  (DDFw'2MMO (bll((/: <<  _ ('s4   C2C<C,CCCC
C),
C: N)__name__
__module____qualname____firstlineno__r$   r   r*   r5   r   r@   rD   r   skip_if_tcp_blackholerV   __static_attributes__rX   r&   r#   r   r      sv    
. +,D -D0 Xw4 *+1 , 51) ((; );r&   r   c                       \ rS rSrS rSrg)SecureTCPServera   c                     U R                   R                  5       u  p[        R                  " [        R                  5      nUR                  [        5        UR                  USS9nXB4$ )NT)server_side)rG   acceptssl
SSLContextPROTOCOL_TLS_SERVERload_cert_chainCERTFILEwrap_socket)r    	newsocketfromaddrcontext
connstreams        r#   get_requestSecureTCPServer.get_requestc   sW    "&++"4"4"6InnS%<%<=G##H- ,,YD,IJ''r&   rX   N)rY   rZ   r[   r\   ro   r^   rX   r&   r#   r`   r`   a   s    	(r&   r`   c                       \ rS rSrSrg)r`   n   rX   NrY   rZ   r[   r\   r^   rX   r&   r#   r`   r`   n   s    r&   c                      ^  \ rS rSr\R
                  rSrSrU 4S jr	S r
S rS rS rS	 rS
 rS rS rS rS rSrU =r$ )SimpleIMAPHandlert   Nr:   c                 f   > [         TU ]  5         SU R                  l        S U R                  l        g )NF)supersetupserveris_selectedloggedr    	__class__s    r#   ry   SimpleIMAPHandler.setupy   s$    "'!r&   c                     [         (       a  [        SUR                  5       -  5        U R                  R	                  U5        g )NzSENT: %r)r   printstripwfilewriter    messages     r#   _sendSimpleIMAPHandler._send~   s,    7*w}}./

!r&   c                 ,    U R                  US-   5        g )N   
)r   r   s     r#   
_send_lineSimpleIMAPHandler._send_line   s    

7W$%r&   c                 D    U R                  UR                  S5      5        g )NASCII)r   encoder   s     r#   _send_textline SimpleIMAPHandler._send_textline   s    w/0r&   c                 H    U R                  SR                  XU45      5        g )N )r   join)r    tagcoder   s       r#   _send_taggedSimpleIMAPHandler._send_tagged   s    CHHc%9:;r&   c                    U R                  S5         Sn  U R                  R                  S5      nUS:X  a  g X-  nUR	                  S5      (       a  OM@  [
        (       a  [        SUR                  5       -  5        U R                  (       a   U R                  R                  U5        M  UR                  S5      R                  5       nUS   nUS   nUSS  n[        U S	U-   5      (       a.  [        U S	U-   5      " XF5      nU(       a  Xpl        [        U5        OU R!                  US
US-   5        GM"  ! [         a     g f = f! [         a
    S U l         Nf = f)Nz* OK IMAP4rev1r   r&   r   zGOT: %rr   r      cmd_BADz unknown)r   rfilereadrN   endswithr   r   r   continuationsendStopIterationdecodesplithasattrgetattrnextr   )r    linepart	splitliner   cmdargsr   s           r#   handleSimpleIMAPHandler.handle   sU   ,- D::??1-Ds{LD ==))  wi$**,./  -%%**40 G,224IA,CA,CQR=DtVc\**&tVc\:3E(4%&!!#ucJ.>?K    % -(,D%-s(   !D5 D5 E 5
EEEEc                     U R                   (       a  SU R                   -   OSnU R                  SU-   5        U R                  USS5        g )Nz
IMAP4rev1 	IMAP4rev1z* CAPABILITY OKCAPABILITY completed)capabilitiesr   r   )r    r   r   capss       r#   cmd_CAPABILITY SimpleIMAPHandler.cmd_CAPABILITY   sK    $$ t000  	 	Od23#t%;<r&   c                 n    S U R                   l        U R                  S5        U R                  USS5        g )Nz"* BYE IMAP4ref1 Server logging outr   zLOGOUT completed)rz   r|   r   r   r    r   r   s      r#   
cmd_LOGOUTSimpleIMAPHandler.cmd_LOGOUT   s0    !@A#t%78r&   c                 R    US   U R                   l        U R                  USS5        g )Nr   r   zLOGIN completed)rz   r|   r   r   s      r#   	cmd_LOGINSimpleIMAPHandler.cmd_LOGIN   s%    !!W#t%67r&   c                 n    SU R                   l        U R                  S5        U R                  USS5        g )NT
   * 2 EXISTSr   [READ-WRITE] SELECT completed.)rz   r{   r   r   r   s      r#   
cmd_SELECTSimpleIMAPHandler.cmd_SELECT   s-    "&&#t%EFr&   c                     U R                   R                  (       a%  SU R                   l        U R                  USS5        g U R                  USS5        g )NFr   z*Returned to authenticated state. (Success)r   zNo mailbox selected)rz   r{   r   r   s      r#   cmd_UNSELECTSimpleIMAPHandler.cmd_UNSELECT   sA    ;;""&+DKK#c4)UVc5*?@r&   )r   )rY   rZ   r[   r\   r   LOOPBACK_TIMEOUTtimeoutr   r   ry   r   r   r   r   r   r   r   r   r   r   r^   __classcell__r~   s   @r#   ru   ru   t   sY    &&GLL"
"
&1<(@T=9
8G
A Ar&   ru   c                       \ rS rSrSrS rSrg)AuthHandler_CRAM_MD5   LOGINDISABLED AUTH=CRAM-MD5c              #      #    U R                  S5        S v nUS:X  a  U R                  USS5        g U R                  USS5        g 7fNz:+ PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ=s2   dGltIGYxY2E2YmU0NjRiOWVmYTFjY2E2ZmZkNmNmMmQ5ZjMy
r   zCRAM-MD5 successfulNOz	No accessr   r   r    r   r   rs       r#   cmd_AUTHENTICATE%AuthHandler_CRAM_MD5.cmd_AUTHENTICATE   sO      1 	2 / /c4)>?c45   AArX   NrY   rZ   r[   r\   r   r   r^   rX   r&   r#   r   r      s    0L6r&   r   c                   :   \ rS rSrSrS$S jrS rS rS rS r	S	 r
S
 rS rS rS rS rS rS r\R&                  " SSS9S 5       r\R&                  " SSS9S 5       rS rS r\R2                  " SS5      S 5       rS rS rS rS rS rS r S  r!S! r"S" r#S#r$g)%NewIMAPTestsMixin   NTc                     " S SU R                   5      nU R                  U R                  5        U R                  [        R                  S4U5      U l        [        R                  " U R                  S-   U R
                  R                  SS0S9U l
        SU R                  l        U R                  R                  5         U(       a(  U R                  " U R
                  R                  6 U l        U R                  U R
                  4$ )	z
Sets up imap_handler for tests. imap_handler should inherit from either:
- SimpleIMAPHandler - for testing IMAP commands,
- socketserver.StreamRequestHandler - if raw access to stream is needed.
Returns (client, server).
c                       \ rS rSrS rSrg)/NewIMAPTestsMixin._setup.<locals>.TestTCPServer   c                 F    U R                  U5        U R                  5         e )z0
End request and raise the error if one occurs.
close_requestserver_closer    requestclient_addresss      r#   handle_error<NewIMAPTestsMixin._setup.<locals>.TestTCPServer.handle_error   s!     ""7+!!#r&   rX   NrY   rZ   r[   r\   r   r^   rX   r&   r#   TestTCPServerr      s    r&   r   r   z-serverpoll_interval{Gz?nametargetkwargsT)server_class
addCleanup_cleanupr   HOSTrz   	threadingThread_testMethodNameserve_foreverthreaddaemonstart
imap_classserver_addressclient)r    imap_handlerrH   r   s       r#   _setupNewIMAPTestsMixin._setup   s    	D-- 	 	&''););Q(?N&&%%i/;;,, $T*, "//4;;+E+EFDK{{DKK''r&   c                 <   U R                   b4  U R                   R                  S:w  a  U R                   R                  5         U R                  R                  5         U R                  R	                  5         [
        R                  " U R                  5        SU l        g)z
Cleans up the test server. This method should not be called manually,
it is added to the cleanup queue in the _setup method already.
NLOGOUT)r   stateshutdownrz   r   r   join_threadr   r)   s    r#   r   NewIMAPTestsMixin._cleanup  sh     ;;"t{{'8'8H'DKK  "  "$$T[[1r&   c                      " S S[         R                  5      nU R                  USS9u  p#U R                  " [        R
                  R                  U R                  /UR                  Q76   g )Nc                       \ rS rSrS rSrg)ONewIMAPTestsMixin.test_EOF_without_complete_welcome_message.<locals>.EOFHandleri  c                 :    U R                   R                  S5        g Ns   * OKr   r   r)   s    r#   r   VNewIMAPTestsMixin.test_EOF_without_complete_welcome_message.<locals>.EOFHandler.handle  s    

  )r&   rX   NrY   rZ   r[   r\   r   r^   rX   r&   r#   
EOFHandlerr	    s    *r&   r  FrH   )	socketserverStreamRequestHandlerr   rM   r   rO   abortr   r   )r    r  _rz   s       r#   )test_EOF_without_complete_welcome_message;NewIMAPTestsMixin.test_EOF_without_complete_welcome_message  sX    	*:: 	* KK
EK:	'----t 	2!00	2r&   c                      " S S[         5      nU R                  USS9u  p#U R                  " [        R                  R
                  U R                  /UR                  Q76   g )Nc                       \ rS rSrS rSrg)BNewIMAPTestsMixin.test_line_termination.<locals>.BadNewlineHandleri  c                 L    U R                  S5        U R                  USS5        g Ns   * CAPABILITY IMAP4rev1 AUTH
r   r   r   r   r   s      r#   r   QNewIMAPTestsMixin.test_line_termination.<locals>.BadNewlineHandler.cmd_CAPABILITY  "    

;<!!#t-CDr&   rX   NrY   rZ   r[   r\   r   r^   rX   r&   r#   BadNewlineHandlerr    s    Er&   r   Fr  )ru   r   rM   r   rO   r  r   r   )r    r   r  rz   s       r#   test_line_termination'NewIMAPTestsMixin.test_line_termination  sV    	E 1 	E KK 15KA	'----t 	2!00	2r&   c                 ^    " S S[         5      nU R                  U5      u  p#U R                  UR                  5        U R	                  [
        R                  R                  S5         UR                  S5        S S S 5        U R                  UR                  5        g ! , (       d  f       N*= f)Nc                       \ rS rSrSrSrg)MNewIMAPTestsMixin.test_enable_raises_error_if_not_AUTH.<locals>.EnableHandleri'  AUTH ENABLE UTF8=ACCEPTrX   NrY   rZ   r[   r\   r   r^   rX   r&   r#   EnableHandlerr%  '  s    4Lr&   r(  zENABLE.*NONAUTHfoo)	ru   r   assertFalseutf8_enabledassertRaisesRegexr   rO   rK   enable)r    r(  r   r  s       r#   $test_enable_raises_error_if_not_AUTH6NewIMAPTestsMixin.test_enable_raises_error_if_not_AUTH&  s~    	5- 	5KK.	,,-##GMM$7$79JKMM%  L,,- LKs   (B
B,c                     U R                  [        5      u  pU R                  [        R                  R
                  S5         UR                  S5        S S S 5        g ! , (       d  f       g = f)Ndoes not support ENABLEr)  )r   ru   r,  r   rO   rK   r-  )r    r   r  s      r#   )test_enable_raises_error_if_no_capability;NewIMAPTestsMixin.test_enable_raises_error_if_no_capability/  sL    KK 12	##GMM$7$7)+MM% + + +s   A
A+c                 (   U R                  [        5      u  pUR                  SS5      u  p4U R                  US5        U R	                  [
        R                  R                  S5         UR                  S5        S S S 5        g ! , (       d  f       g = f)Nuserpassr   r1  UTF8=ACCEPT)	r   ru   loginr   r,  r   rO   rK   r-  r    r   r  typdatas        r#   .test_enable_UTF8_raises_error_if_not_supported@NewIMAPTestsMixin.test_enable_UTF8_raises_error_if_not_supported5  sn    KK 12	LL0	d###GMM$7$7)+MM-(+ + +s   (B
Bc           	      f    " S S[         5      nU R                  U5      u  p#U R                  UR                  S5        UR	                  SS 5      u  pEU R                  US5        U R                  UR
                  S5        UR                  S5      u  pEU R                  US5        U R                  UR                  S	5        S
nUR                  S S S US-   R                  S	5      5      u  pxU R                  US5        U R                  UR
                  SSSSU-  R                  S	5      S/5        g )Nc                   *    \ rS rSrSrS rS rS rSrg)HNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServeri>  zENABLE UTF8=ACCEPTc                 *    U R                  USS5        g Nr   zENABLE successfulr   r   s      r#   
cmd_ENABLESNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_ENABLE@      !!#t-@Ar&   c              3   z   #    U R                  S5        S v U R                  l        U R                  USS5        g 7fN+r   zFAKEAUTH successfulr   rz   responser   r   s      r#   r   YNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_AUTHENTICATEB  2     ##C(',$!!#t-BC   9;c              3     #    U R                  S5        X R                  l        S v nU R                  R                  R                  U5        S v nU R                  R                  R                  U5        U R	                  USS5        g 7fNrI  r   okayr   rz   rK  appendr   r    r   r   literals       r#   
cmd_APPENDSNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_APPENDF  i     ##C('+$$$++G4$$++G4!!#tV4   BB
rX   N)	rY   rZ   r[   r\   r   rD  r   rV  r^   rX   r&   r#   UTF8AppendServerr@  >  s    /LBD5r&   rZ  asciiMYAUTHc                     gNs   fakerX   xs    r#   <lambda>@NewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.<lambda>P      'r&   r   
   ZmFrZQ==
r7  utf-8   Subject: üñí©öðé
INBOXUTF8(~{25}%s
   )
)	ru   r   r   	_encodingauthenticaterK  r-  rS  r   )	r    rZ  r   rz   r   r  
msg_stringr:  r;  s	            r#   test_enable_UTF8_True_append.NewIMAPTestsMixin.test_enable_UTF8_True_append=  s   	50 	5  %56))73%%h0ABt$/:--.t$))73.
MM$zD088AC	d#f:-55g>	r&   c                     " S S[         5      nU R                  U5      u  p#UR                  SS 5      u  pCU R                  US5        UR	                  S5      u  pCU R                  US5        U R                  UR                  5        U R                  [        R                  R                  S5         UR                  SS	5        S S S 5        g ! , (       d  f       g = f)
Nc                   $    \ rS rSrSrS rS rSrg)PNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Serveri`  r&  c                 *    U R                  USS5        g rB  rC  r   s      r#   rD  [NewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Server.cmd_ENABLEb  rF  r&   c              3   z   #    U R                  S5        S v U R                  l        U R                  USS5        g 7frH  rJ  r   s      r#   r   aNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Server.cmd_AUTHENTICATEd  rM  rN  rX   NrY   rZ   r[   r\   r   rD  r   r^   rX   r&   r#   
UTF8Serverrt  `  s    4LBDr&   rz  r\  c                     gr^  rX   r_  s    r#   ra  NNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.<lambda>i  s    r&   r   r7  zcharset.*UTF8r)  bar)ru   r   rn  r   r-  
assertTruer+  r,  r   rO   rK   search)r    rz  r   r  r:  s        r#   *test_search_disallows_charset_in_utf8_mode<NewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode_  s    	D* 	D KK
+	$$X/@Ad#}-d#++,##GMM$7$7IMM%' JIIs   4C
Cc                      " S S[         5      nU R                  U5      u  p#U R                  [        R                  R
                  S5         UR                  SS 5        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)6NewIMAPTestsMixin.test_bad_auth_name.<locals>.MyServerir  c                 N    U R                  USSR                  US   5      5        g Nr   z#unrecognized authentication type {}r   r   formatr   s      r#   r   GNewIMAPTestsMixin.test_bad_auth_name.<locals>.MyServer.cmd_AUTHENTICATEs  s'    !!#t9@@aIKr&   rX   NrY   rZ   r[   r\   r   r^   rX   r&   r#   MyServerr  r  s    Kr&   r  z'unrecognized authentication type METHODMETHODc                      gNr   rX   rX   r&   r#   ra  6NewIMAPTestsMixin.test_bad_auth_name.<locals>.<lambda>y  s    !r&   ru   r   r,  r   rO   rK   rn  r    r  r   r  s       r#   test_bad_auth_name$NewIMAPTestsMixin.test_bad_auth_nameq  s`    	K( 	K KK)	##GMM$7$79;)4; ; ;   A**
A8c                      " S S[         5      nU R                  U5      u  p#U R                  [        R                  R
                  S5         UR                  SS 5        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)?NewIMAPTestsMixin.test_invalid_authentication.<locals>.MyServeri|  c              3   f   #    U R                  S5        S v U l        U R                  USS5        g 7fNrI  r   z[AUTHENTICATIONFAILED] invalidr   rK  r   r   s      r#   r   PNewIMAPTestsMixin.test_invalid_authentication.<locals>.MyServer.cmd_AUTHENTICATE}  -     ##C( %!!#t-MN   /1rK  Nr  rX   r&   r#   r  r  |  s    Or&   r  z \[AUTHENTICATIONFAILED\] invalidr\  c                     gr^  rX   r_  s    r#   ra  ?NewIMAPTestsMixin.test_invalid_authentication.<locals>.<lambda>  s    Gr&   r  r  s       r#   test_invalid_authentication-NewIMAPTestsMixin.test_invalid_authentication{  sa    	O( 	O
 KK)	##GMM$7$735*;<5 5 5r  c                      " S S[         5      nU R                  U5      u  p#UR                  SS 5      u  pEU R                  US5        U R                  UR                  S5        g )Nc                       \ rS rSrS rSrg)CNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.MyServeri  c              3   z   #    U R                  S5        S v U R                  l        U R                  USS5        g 7frH  rJ  r   s      r#   r   TNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.MyServer.cmd_AUTHENTICATE  rM  rN  rX   Nr  rX   r&   r#   r  r        Dr&   r  r\  c                     gr^  rX   r_  s    r#   ra  CNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.<lambda>  rc  r&   r   rd  ru   r   rn  r   rK  r    r  r   rz   r   r  s         r#   test_valid_authentication_bytes1NewIMAPTestsMixin.test_valid_authentication_bytes  s\    	D( 	D
 X.%%h0ABt$/:r&   c                      " S S[         5      nU R                  U5      u  p#UR                  SS 5      u  pEU R                  US5        U R                  UR                  S5        g )Nc                       \ rS rSrS rSrg)HNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.MyServeri  c              3   z   #    U R                  S5        S v U R                  l        U R                  USS5        g 7frH  rJ  r   s      r#   r   YNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.MyServer.cmd_AUTHENTICATE  rM  rN  rX   Nr  rX   r&   r#   r  r    r  r&   r  r\  c                     gNfakerX   r_  s    r#   ra  HNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.<lambda>  s    &r&   r   rd  r  r  s         r#   $test_valid_authentication_plain_text6NewIMAPTestsMixin.test_valid_authentication_plain_text  s\    	D( 	D
 X.%%h0@At$/:r&   md5opensslc                     U R                  [        5      u  pU R                  SUR                  5        UR	                  SS5      u  p2U R                  US5        g )NAUTH=CRAM-MD5tim   tanstaaftanstaafr   r   r   rP   r   login_cram_md5r   r    r   r  rets       r#   test_login_cram_md5_bytes+NewIMAPTestsMixin.test_login_cram_md5_bytes  sL    KK 45	ov':':;&&u.ABd#r&   c                     U R                  [        5      u  pU R                  SUR                  5        UR	                  SS5      u  p2U R                  US5        g )Nr  r  tanstaaftanstaafr   r  r  s       r#   test_login_cram_md5_plain_text0NewIMAPTestsMixin.test_login_cram_md5_plain_text  sL    KK 45	ov':':;&&u.@Ad#r&   c                    S nU R                  [        5      u  p#U R                  SUR                  5        [        R
                  " S5      n[        R                  " SUS9   U R                  [        R                  R                  U5         UR                  SS5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                      [         erC   )
ValueError)akws     r#   side_effectBNewIMAPTestsMixin.test_login_cram_md5_blocked.<locals>.side_effect  s    r&   r  z(CRAM-MD5 authentication is not supportedz	hmac.HMAC)r  r  r  )r   r   rP   r   reescaper   patchr,  r   rO   rK   r  )r    r  r   r  msgs        r#   test_login_cram_md5_blocked-NewIMAPTestsMixin.test_login_cram_md5_blocked  s    	 KK 45	ov':':;iiBCJJ{<""7==#6#6<!!%)<= = =<<< =<s$   "+CB1 C1
B?	;C
Cc                      " S S[         5      nU R                  U5      u  p#U R                  [        R                  R
                  S5         UR                  SS 5        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)?NewIMAPTestsMixin.test_aborted_authentication.<locals>.MyServeri  c              3      #    U R                  S5        S v U l        U R                  S:X  a  U R                  USS5        g U R                  USS5        g 7fNrI  s   *
r   z[AUTHENTICATIONFAILED] abortedr   zMYAUTH successfulr  r   s      r#   r   PNewIMAPTestsMixin.test_aborted_authentication.<locals>.MyServer.cmd_AUTHENTICATE  sR     ##C( %==H,%%8:
 %%c41DE   AAr  Nr  rX   r&   r#   r  r    s    	Fr&   r  z \[AUTHENTICATIONFAILED\] abortedr\  c                     g rC   rX   r_  s    r#   ra  ?NewIMAPTestsMixin.test_aborted_authentication.<locals>.<lambda>  s    Dr&   r  r  s       r#   test_aborted_authentication-NewIMAPTestsMixin.test_aborted_authentication  s`    
	F( 
	F KK)	##GMM$7$735.95 5 5r  zimaplib._MAXLINE
   c                      " S S[         5      nU R                  USS9u  p#U R                  [        R                  R
                  S5         U R                  " UR                  6   S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrS rSrg):NewIMAPTestsMixin.test_linetoolong.<locals>.TooLongHandleri  c                 :    U R                   R                  S5        g )Ns   * OK xxxxxxxxxxx
r  r)   s    r#   r   ANewIMAPTestsMixin.test_linetoolong.<locals>.TooLongHandler.handle  s    

  !?@r&   rX   Nr  rX   r&   r#   TooLongHandlerr    s    Ar&   r  Fr  zgot more than 10 bytes)ru   r   r,  r   rO   rK   r   r   )r    r  r  rz   s       r#   test_linetoolong"NewIMAPTestsMixin.test_linetoolong  sf    	A. 	A KKK>	##GMM$7$7(*OOV223* * *s   A//
A=c                     U R                  [        SS9u  pU R                  " UR                  6     S S S 5        g ! , (       d  f       g = f)NFr  )r   ru   r   r   )r    r  rz   s      r#   test_simple_with_statement,NewIMAPTestsMixin.test_simple_with_statement  s8    KK 15KA	__f334 544s	   ;
A	c                 n   U R                  [        SS9u  pU R                  " UR                  SS 06 nU R	                  UR
                  R                  S 5        S S S 5        U R                  " UR                  S[        R                  06 nU R	                  UR
                  R                  [        R                  5        S S S 5        U R                  [        5         U R                  " UR                  SS06  S S S 5        g ! , (       d  f       N= f! , (       d  f       NZ= f! , (       d  f       g = f)NFr  r   r   )r   ru   r   r   r   sockr   r   r   rM   r  )r    r  rz   r   s       r#   test_imaplib_timeout_test+NewIMAPTestsMixin.test_imaplib_timeout_test  s    KK 15KA	__f33BTBfV[[00$7 C__f33VW=U=UVZ`V[[00'2J2JK Wz*OOV22>A> +*	 CBVV**s#   'D5DD&
D
D#&
D4c                      " S S[         5      nU R                  U5      u  p#UR                  S   nU R                  [        5         U R                  SUSS9nS S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)QNewIMAPTestsMixin.test_imaplib_timeout_functionality_test.<locals>.TimeoutHandleri  c                 Z    [         R                  " S5        [        R                  U 5        g r  )r   sleepru   r   r)   s    r#   r   XNewIMAPTestsMixin.test_imaplib_timeout_functionality_test.<locals>.TimeoutHandler.handle  s    

1!((.r&   rX   Nr  rX   r&   r#   TimeoutHandlerr    s    /r&   r  r   	localhostgMbP?)r   )ru   r   r   rM   TimeoutErrorr   )r    r  r  rz   addrr   s         r#   'test_imaplib_timeout_functionality_test9NewIMAPTestsMixin.test_imaplib_timeout_functionality_test  s_    	/. 	/
 KK/	$$Q'|,__[$_FF -,,s   A""
A0c                 (   U R                  [        SS9u  pU R                  " UR                  6  nUR	                  SS5        U R                  UR                  S5        S S S 5        U R                  UR                  5        g ! , (       d  f       N*= fNFr  r5  r6  )r   ru   r   r   r8  r   r|   assertIsNoner    r  rz   imaps       r#   test_with_statement%NewIMAPTestsMixin.test_with_statement  so    KK 15KA	__f334JJvv&V]]F3 5 	&--( 54s   /B
Bc                 ~   U R                  [        SS9u  pU R                  " UR                  6  nUR	                  SS5        U R                  UR                  S5        UR                  5         U R                  UR                  5        S S S 5        U R                  UR                  5        g ! , (       d  f       N*= fr   )	r   ru   r   r   r8  r   r|   logoutr  r  s       r#   test_with_statement_logout,NewIMAPTestsMixin.test_with_statement_logout  s    KK 15KA	__f334JJvv&V]]F3KKMfmm,	 5
 	&--( 54s   AB..
B<c                     U R                  [        5      u  pUR                  SS5      u  p4U R                  US5        U R                  US   S5        U R                  UR                  S5        g )Nr5  r6  r   r      LOGIN completedAUTH)r   ru   r8  r   r  r9  s        r#   
test_loginNewIMAPTestsMixin.test_login  s^    KK 12	LL0	d#a"45v.r&   c                 Z   U R                  [        5      u  pUR                  SS5      u  p4U R                  US5        U R                  US   S5        UR	                  5       u  p4U R                  USX445        U R                  US   SX445        U R                  UR
                  S5        g )	Nr5  r6  r   r   r  BYEs   IMAP4ref1 Server logging outr  )r   ru   r8  r   r  r  r9  s        r#   test_logoutNewIMAPTestsMixin.test_logout  s    KK 12	LL0	d#a"45MMO	ec[1a"AC;Ox0r&   c                      " S S[         5      nU R                  U5      u  p#UR                  SS5        UR                  5       u  pEU R	                  US5        U R	                  US   S5        g )Nc                       \ rS rSrS rSrg),NewIMAPTestsMixin.test_lsub.<locals>.LsubCmdi  c                 J    U R                  S5        U R                  USS5      $ )Nz* LSUB () "." directoryAr   zLSUB completedr   r   s      r#   cmd_LSUB5NewIMAPTestsMixin.test_lsub.<locals>.LsubCmd.cmd_LSUB  s'    ##$>?((d4DEEr&   rX   N)rY   rZ   r[   r\   r  r^   rX   r&   r#   LsubCmdr    s    Fr&   r  r5  r6  r   r   s   () "." directoryA)ru   r   r8  lsubr   )r    r  r   r  r:  r;  s         r#   	test_lsubNewIMAPTestsMixin.test_lsub  sc    	F' 	F KK(	VV$KKM	d#a"67r&   c                 r   U R                  [        5      u  pUR                  SS5        UR                  5       u  p4U R	                  US5        U R	                  US   S5        UR                  5       u  p4U R	                  US5        U R	                  US   S5        U R	                  UR                  S5        g )Nr5  r6  r   r      2s*   Returned to authenticated state. (Success)r  )r   ru   r8  selectr   unselectr  r9  s        r#   test_unselectNewIMAPTestsMixin.test_unselect  s    KK 12	VV$MMO	d#a$'OO%	d#a"OPv.r&   )r   rz   r   )T)%rY   rZ   r[   r\   r   r   r   r  r!  r.  r2  r<  rp  r  r  r  r  r  r   requires_hashdigestr  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r!  r^   rX   r&   r#   r   r      s    F(B 22.!) D($5	=	;	; ''t<$ =$ ''t<$ =$>:" 
ZZ"B'4 (4
?	G))/1	8
/r&   r   c                   D    \ rS rSr\R
                  r\R                  r	Sr
g)NewIMAPTestsi(  rX   N)rY   rZ   r[   r\   r   rO   r   r  	TCPServerr   r^   rX   r&   r#   r%  r%  (  s    J))Lr&   r%  zSSL not availablec                   (    \ rS rSr\r\rS rS r	Sr
g)NewIMAPSSLTestsi-  c                 D   [         R                  " [         R                  5      nU R                  UR                  [         R
                  5        U R                  UR                  S5        UR                  [        5        [        R                  " S[        R                  5      nU R                  [         R                  U5         U R                  [        SS9u  p4U R                   " UR"                  SU06nUR%                  5         S S S 5        g ! , (       d  f       g = f)NT(
            IP address mismatch, certificate is not valid for '127.0.0.1'   # OpenSSL
            |
            CERTIFICATE_VERIFY_FAILED                                       # AWS-LC
        )Fr  ssl_context)re   rf   PROTOCOL_TLS_CLIENTr   verify_modeCERT_REQUIREDcheck_hostnameload_verify_locationsCAFILEr  compileXr,  CertificateErrorr   ru   r   r   r  )r    r+  regexr  rz   r   s         r#   test_ssl_raisesNewIMAPSSLTests.test_ssl_raises2  s    nnS%<%<=00#2C2CD33T:))&1 

  dd	
 ##C$8$8%@$5uEIA__f&;&; >1<>FOO	 A@@s   AD
Dc                     [         R                  " [         R                  5      nUR                  [        5        U R                  [        SS9u  p#U R                  SUR                  S   US9nUR                  5         g )NFr  r  r   r+  )
re   rf   r,  r0  r1  r   ru   r   r   r  )r    r+  r  rz   r   s        r#   test_ssl_verified!NewIMAPSSLTests.test_ssl_verifiedD  sh    nnS%<%<=))&1KK 15KA	f.C.CA.F-8 ! :r&   rX   N)rY   rZ   r[   r\   	IMAP4_SSLr   r`   r   r6  r:  r^   rX   r&   r#   r(  r(  -  s    J"L$r&   r(  c                   x   \ rS rSr\R
                  r\R                  r	S r
S r\S 5       r\S 5       r\R                   S 5       r\R                   S 5       r\R                   S 5       r\R                   S	 5       r " S
 S\5      r\R                   S 5       r\R                   S 5       r\R                   S 5       r\R                   S 5       r\R                   S 5       r\R                   S 5       r\R                   S 5       r\R                   S 5       r\R                   \R@                  " SSS9S 5       5       r!\R                   S 5       r"S r#S r$\R                   S 5       r%\R                   S 5       r&\R                   S 5       r'\R                   \(\)RT                  " SS5      S 5       5       5       r+S r,g!)"ThreadedNetworkedTestsiM  c                 *    " S SU R                   5      n[        (       a  [        S5        U" X5      nU R                  UR                  UR
                  R                  5       5        [        (       aC  [        S5        [        SU5        [        SU R                   5        [        SUR                  5        [        R                  " SU R                   -  UR                  S	S
0S9nSUl        UR                  5         [        (       a  [        S5        XE4$ )Nc                       \ rS rSrS rSrg)4ThreadedNetworkedTests.make_server.<locals>.MyServeriS  c                 F    U R                  U5        U R                  5         e rC   r   r   s      r#   r   AThreadedNetworkedTests.make_server.<locals>.MyServer.handle_errorT  s    ""7+!!#r&   rX   Nr   rX   r&   r#   r  rA  S  s    r&   r  zcreating serverzserver createdzADDR =zCLASS =zHDLR =z
%s servingr   r   r   Tzserver running)r   r   r   r   r   rG   getsocknameRequestHandlerClassr   r   r   r   r   )r    r  hdlrr  rz   r>   s         r#   make_server"ThreadedNetworkedTests.make_serverQ  s    	t(( 	 7#$$%..0I0I0KL7"#(D!)T../(F667 1 11'' $T*, 		7"#yr&   c                     [         (       a  [        S5        UR                  5         UR                  5         UR	                  5         [         (       a  [        S5        g g )Nzwaiting for serverdone)r   r   r  r   r   )r    rz   r   s      r#   reap_server"ThreadedNetworkedTests.reap_serverq  s@    7&'7&M r&   c              #      #    U R                  [        R                  S4U5      u  p# Uv   U R                  X#5        g ! U R                  X#5        f = f7f)Nr   )rG  r   r   rK  )r    rF  rz   r   s       r#   reaped_server$ThreadedNetworkedTests.reaped_serverz  sJ     ))=+=+=q*A4H	-LV,DV,s   %A> AAAc              #      #    U R                  U5       nU R                  " UR                  6 n X#4v   UR                  5          S S S 5        g ! UR                  5         f = f! , (       d  f       g = f7frC   )rN  r   r   r  )r    rF  rz   r   s       r#   reaped_pair"ThreadedNetworkedTests.reaped_pair  s\     %__f&;&;<F n$ &%
  &%s2   A4A#AA#	A4A  A##
A1-A4c                     U R                  [        5       nU R                  " UR                  6 nUR	                  5         S S S 5        g ! , (       d  f       g = frC   )rN  ru   r   r   r  r    rz   r   s      r#   test_connect#ThreadedNetworkedTests.test_connect  s=     12f__f&;&;<FOO 322s   *A		
Ac                     " S S[         5      nU R                  U5       u  p#UR                  SS 5      u  pEU R                  US5        U R                  UR                  S5        UR                  S5        UR                  SS	S
5      u  nu  nU R                  SU5        UR                  S5        UR	                  S5      u  nu  nU R                  SU5        S S S 5        g ! , (       d  f       g = f)Nc                   :   ^  \ rS rSrU 4S jrS rS rS rSrU =r	$ )EThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandleri  c                 4   > / SQU l         [        TU ]	  5         g )N)AnsweredFlaggedDeletedSeenDraft)flagsrx   r   r}   s    r#   r   LThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.handle  s    P
 r&   c              3   z   #    U R                  S5        S v U R                  l        U R                  USS5        g 7frH  rJ  r   s      r#   r   VThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_AUTHENTICATE  rM  rN  c                 4   SR                  U R                  5      nU R                  SU-  R                  S5      5        U R                  S5        U R                  S5        SU-  nU R                  UR                  S5      5        U R	                  USS5        g )	N \z* FLAGS (%s)r[  r   s
   * 0 RECENTz-* OK [PERMANENTFLAGS %s \*)] Flags permitted.r   r   )r   r`  r   r   r   )r    r   r   flag_msgr  s        r#   r   PThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_SELECT  s}     ::djj1(!: B B7 KL..G"#

7 34!!#t-MNr&   c                 X   US   R                  S5      R                  S5      R                  5       nU R                  R                  U5        SSR	                  U R                  5      -  nSUS   < SU< 3nU R                  UR                  S	5      5        U R                  US
S5        g )Nr   ()z(FLAGS (%s))re  z* r   z FETCH r[  r   zSTORE completed.)r   r   r`  extendr   r   r   r   )r    r   r   	new_flags	flags_msgr  s         r#   	cmd_STOREOThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_STORE  s     GMM#.44S9??A	

!!),*UZZ

-CC	)-a)<

7 34!!#t-?@r&   )r`  )
rY   rZ   r[   r\   r   r   r   rn  r^   r   r   s   @r#   BracketFlagHandlerrY    s     !D
OA Ar&   rp  r\  c                     gr^  rX   r_  s    r#   ra  ;ThreadedNetworkedTests.test_bracket_flags.<locals>.<lambda>      r&   r   rd  test   1z+FLAGSz[test]s   [test]PERMANENTFLAGS)ru   rQ  rn  r   rK  r  storerP   )r    rp  rz   r   r   r;  r:  s          r#   test_bracket_flags)ThreadedNetworkedTests.test_bracket_flags  s    	A!2 	A: 015Ef,,X7HIJDT4(V__o>MM&! ,,tXx@KC$MM)T*MM&! //*:;KC$MM)T* 211s   B:C$$
C2c                     " S S[         R                  5      nU R                  U5       nU R                  " [        R
                  R                  U R                  /UR                  Q76   S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)9ThreadedNetworkedTests.test_issue5949.<locals>.EOFHandleri  c                 :    U R                   R                  S5        g r  r  r)   s    r#   r   @ThreadedNetworkedTests.test_issue5949.<locals>.EOFHandler.handle  s    

  )r&   rX   Nr  rX   r&   r#   r  r|    s    *r&   r  )	r  r  rN  rM   r   rO   r  r   r   )r    r  rz   s      r#   test_issue5949%ThreadedNetworkedTests.test_issue5949  sc    	*:: 	*
 
+vgmm11"ooG060E0EG ,++s   AA55
Bc                      " S S[         5      nU R                  U5       nU R                  " [        R                  R
                  U R                  /UR                  Q76   S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)GThreadedNetworkedTests.test_line_termination.<locals>.BadNewlineHandleri  c                 L    U R                  S5        U R                  USS5        g r  r  r   s      r#   r   VThreadedNetworkedTests.test_line_termination.<locals>.BadNewlineHandler.cmd_CAPABILITY  r  r&   rX   Nr  rX   r&   r#   r   r    s    Er&   r   )ru   rN  rM   r   rO   r  r   r   )r    r   rz   s      r#   r!  ,ThreadedNetworkedTests.test_line_termination  sa    	E 1 	E  12fgmm11"ooG060E0EG 322   AA++
A9c                   $    \ rS rSrSrS rS rSrg)!ThreadedNetworkedTests.UTF8Serveri  r&  c                 *    U R                  USS5        g rB  rC  r   s      r#   rD  ,ThreadedNetworkedTests.UTF8Server.cmd_ENABLE  s    c4)<=r&   c              #   z   #    U R                  S5        S v U R                  l        U R                  USS5        g 7frH  rJ  r   s      r#   r   2ThreadedNetworkedTests.UTF8Server.cmd_AUTHENTICATE  s2     $#(DKK c4)>?rN  rX   Nry  rX   r&   r#   rz  r    s    0	>	@r&   rz  c                 H   U R                  U R                  5       u  pU R                  UR                  5        U R	                  [
        R                  R                  UR                  S5        U R                  UR                  5        S S S 5        g ! , (       d  f       g = f)Nr)  )	rQ  rz  r*  r+  rM   r   rO   rK   r-  rT  s      r#   r.  ;ThreadedNetworkedTests.test_enable_raises_error_if_not_AUTH  sm    doo.2B6V001gmm116==%HV001 /..s   A.B
B!c                      " S SU R                   5      nU R                  U5       u  p#U R                  [        R                  R
                  UR                  S5        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrSrSrg)XThreadedNetworkedTests.test_enable_raises_error_if_no_capability.<locals>.NoEnableServeri  r  rX   Nr'  rX   r&   r#   NoEnableServerr    s    !Lr&   r  r)  )rz  rQ  rM   r   rO   rK   r-  )r    r  rz   r   s       r#   r2  @ThreadedNetworkedTests.test_enable_raises_error_if_no_capability  sQ    	"T__ 	"n-1A&gmm116==%H .--s   8A((
A6c                 p    " S S[         5      nU R                  [        R                  R                  5         U R                  U5       u  p#UR                  SS5      u  pEU R                  US5        UR                  S5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                       \ rS rSrSrg)\ThreadedNetworkedTests.test_enable_UTF8_raises_error_if_not_supported.<locals>.NonUTF8Serveri  rX   Nrs   rX   r&   r#   NonUTF8Serverr    s    r&   r  r5  r6  r   r7  )	ru   rM   r   rO   rK   rQ  r8  r   r-  )r    r  rz   r   r:  r;  s         r#   r<  EThreadedNetworkedTests.test_enable_UTF8_raises_error_if_not_supported  s    	- 	w}}223!!-04DV"LL8	  d+m, 1 4300 43s#   B':BB'
B$	 B''
B5c           
          " S SU R                   5      nU R                  U5       u  p#U R                  UR                  S5        UR	                  SS 5      u  pEU R                  US5        U R                  UR
                  S5        UR                  S5      u  pEU R                  US5        U R                  UR                  S	5        S
nUR                  S S S US-   R                  S	5      5      u  pxU R                  US5        U R                  UR
                  SSSSU-  R                  S	5      S/5        S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)MThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.UTF8AppendServeri  c              3     #    U R                  S5        X R                  l        S v nU R                  R                  R                  U5        S v nU R                  R                  R                  U5        U R	                  USS5        g 7frP  rR  rT  s       r#   rV  XThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_APPEND  rX  rY  rX   N)rY   rZ   r[   r\   rV  r^   rX   r&   r#   rZ  r    s    5r&   rZ  r[  r\  c                     gr^  rX   r_  s    r#   ra  EThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.<lambda>  s    gr&   r   rd  r7  re  rf  rg  rh  ri  rj  rk  rl  )	rz  rQ  r   rm  rn  rK  r-  rS  r   )	r    rZ  rz   r   r   r  ro  r:  r;  s	            r#   rp  3ThreadedNetworkedTests.test_enable_UTF8_True_append   s1   	5t 	5 ./3CFV--w7))(4EFGDT4(V__,.mmM2GDT4(V--w72JdD:#4"<"<W"EGICS$'V__&Hz199'B 0//s   DE
Ec                    U R                  U R                  5       u  pUR                  SS 5      u  p4U R                  US5        UR	                  S5      u  p4U R                  US5        U R                  UR                  5        U R                  [        R                  R                  UR                  SS5        S S S 5        g ! , (       d  f       g = f)Nr\  c                     gr^  rX   r_  s    r#   ra  SThreadedNetworkedTests.test_search_disallows_charset_in_utf8_mode.<locals>.<lambda>%  s    Wr&   r   r7  r)  r}  )rQ  rz  rn  r   r-  r~  r+  rM   r   rO   rK   r  )r    rz   r   r:  r  s        r#   r  AThreadedNetworkedTests.test_search_disallows_charset_in_utf8_mode"  s    doo.2B6((3DEFCS$']]=1FCS$'OOF//0gmm116==%O /..s   B C
Cc                 (    " S S[         5      nU R                  U5       u  p#U R                  [        R                  R
                  5         UR                  SS 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                       \ rS rSrS rSrg);ThreadedNetworkedTests.test_bad_auth_name.<locals>.MyServeri/  c                 N    U R                  USSR                  US   5      5        g r  r  r   s      r#   r   LThreadedNetworkedTests.test_bad_auth_name.<locals>.MyServer.cmd_AUTHENTICATE1  s&    !!#t .,,2F47O=r&   rX   Nr  rX   r&   r#   r  r  /  s    =r&   r  r  c                      gr  rX   rX   r&   r#   ra  ;ThreadedNetworkedTests.test_bad_auth_name.<locals>.<lambda>7  s    ar&   ru   rQ  rM   r   rO   rK   rn  )r    r  rz   r   s       r#   r  )ThreadedNetworkedTests.test_bad_auth_name,  si    	=( 	= h'+;F""7==#6#67##Hi8 8 ('77 ('s#   ,BA2!B2
B 	<B
Bc                 ,    " S S[         5      nU R                  U5       u  p#U R                  [        R                  R
                  5         UR                  SS 5      u  pES S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)DThreadedNetworkedTests.test_invalid_authentication.<locals>.MyServeri<  c              3   f   #    U R                  S5        S v U l        U R                  USS5        g 7fr  r  r   s      r#   r   UThreadedNetworkedTests.test_invalid_authentication.<locals>.MyServer.cmd_AUTHENTICATE>  r  r  r  Nr  rX   r&   r#   r  r  <  s    Or&   r  r\  c                     gr^  rX   r_  s    r#   ra  DThreadedNetworkedTests.test_invalid_authentication.<locals>.<lambda>E  s    Wr&   r  r    r  rz   r   r   r;  s         r#   r  2ThreadedNetworkedTests.test_invalid_authentication9  sp    	O( 	O h'+;F""7==#6#67#00;LM
 8 ('77 ('#   ,BA4#B4
B	>B
Bc                     " S S[         5      nU R                  U5       u  p#UR                  SS 5      u  pEU R                  US5        U R                  UR                  S5        S S S 5        U R                  U5       u  p#UR                  SS 5      u  pEU R                  US5        U R                  UR                  S5        S S S 5        g ! , (       d  f       Nn= f! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)BThreadedNetworkedTests.test_valid_authentication.<locals>.MyServeriJ  c              3   z   #    U R                  S5        S v U R                  l        U R                  USS5        g 7frH  rJ  r   s      r#   r   SThreadedNetworkedTests.test_valid_authentication.<locals>.MyServer.cmd_AUTHENTICATEL  rM  rN  rX   Nr  rX   r&   r#   r  r  J  s    Dr&   r  r\  c                     gr^  rX   r_  s    r#   ra  BThreadedNetworkedTests.test_valid_authentication.<locals>.<lambda>R  rs  r&   r   rd  c                     gr  rX   r_  s    r#   ra  r  X  s    r&   )ru   rQ  rn  r   rK  r  s         r#   test_valid_authentication0ThreadedNetworkedTests.test_valid_authenticationG  s    	D( 	D h'+;F,,X7HIJDT4(V__,. ( h'+;F,,X7GHJDT4(V__,. (' (' ('s   AC AC 
C 
C.r  Tr  c                     " S S[         5      nU R                  U5       u  p#U R                  SUR                  ;   5        UR	                  SS5      u  pEU R                  US5        S S S 5        U R                  U5       u  p#U R                  SUR                  ;   5        UR	                  SS5      u  pEU R                  US5        S S S 5        g ! , (       d  f       No= f! , (       d  f       g = f)Nc                       \ rS rSrSrS rSrg)?ThreadedNetworkedTests.test_login_cram_md5.<locals>.AuthHandleria  r   c              3      #    U R                  S5        S v nUS:X  a  U R                  USS5        g U R                  USS5        g 7fr   r   r   s       r#   r   PThreadedNetworkedTests.test_login_cram_md5.<locals>.AuthHandler.cmd_AUTHENTICATEe  sO     ## %9 : 7 7%%c41FG%%c4=r   rX   Nr   rX   r&   r#   AuthHandlerr  a  s    8L>r&   r  r  r  r  r   r  )ru   rQ  r~  r   r  r   )r    r  rz   r   r  r;  s         r#   test_login_cram_md5*ThreadedNetworkedTests.test_login_cram_md5]  s    	>+ 	> k*.>vOOOv/B/BBC--e5GHICS$' +
 k*.>vOOOv/B/BBC--e5HIICS$' +* +*
 +*s   ACAC"
C"
C0c                 ,    " S S[         5      nU R                  U5       u  p#U R                  [        R                  R
                  5         UR                  SS 5      u  pES S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)DThreadedNetworkedTests.test_aborted_authentication.<locals>.MyServeri}  c              3      #    U R                  S5        S v U l        U R                  S:X  a  U R                  USS5        g U R                  USS5        g 7fr  r  r   s      r#   r   UThreadedNetworkedTests.test_aborted_authentication.<locals>.MyServer.cmd_AUTHENTICATE  sL     ##C( %==H,%%c41QR%%c41DEr  r  Nr  rX   r&   r#   r  r  }  s    Fr&   r  r\  c                     g rC   rX   r_  s    r#   ra  DThreadedNetworkedTests.test_aborted_authentication.<locals>.<lambda>  s    Tr&   r  r  s         r#   r  2ThreadedNetworkedTests.test_aborted_authenticationz  so    		F( 		F h'+;F""7==#6#67#00>J
 8 ('77 ('r  c                      " S S[         5      nU R                  U5       nU R                  " [        R                  R
                  U R                  /UR                  Q76   S S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)?ThreadedNetworkedTests.test_linetoolong.<locals>.TooLongHandleri  c                 h    U R                   R                  S[        R                  S-  -   S-   5        g )Ns   * OK    xr   )r   r   r   _MAXLINEr)   s    r#   r   FThreadedNetworkedTests.test_linetoolong.<locals>.TooLongHandler.handle  s)    

  G,<,<t,C!Cg!MNr&   rX   Nr  rX   r&   r#   r  r    s    Or&   r  )ru   rN  rM   r   rO   rK   r   r   )r    r  rz   s      r#   r  'ThreadedNetworkedTests.test_linetoolong  s`    	O. 	O
 /6gmm11"ooG060E0EG 0//r  c           	        ^ Sm " U4S jS[         5      n[        SS5       H  nSU-  mU R                  ST 35         U R                  U5       nU R	                  [
        R                  R                  5         U R                  " UR                  6   S S S 5        S S S 5        S S S 5        M     g ! , (       d  f       N#= f! , (       d  f       N,= f! , (       d  f       M  = f)Nr   c                   "   > \ rS rSrU 4S jrSrg)GThreadedNetworkedTests.test_truncated_large_literal.<locals>.BadHandleri  c                 P   > U R                  ST-  5        U R                  S5        g )Nz	* OK {%d}r   )r   )r    sizes    r#   r   NThreadedNetworkedTests.test_truncated_large_literal.<locals>.BadHandler.handle  s$    ##K$$67##K0r&   rX   Nr  )r  s   r#   
BadHandlerr    s    1 1r&   r     @   r   zsize=2e)
ru   rangesubTestrN  rM   r   rO   r  r   r   )r    r  exponentrz   r  s       @r#   test_truncated_large_literal3ThreadedNetworkedTests.test_truncated_large_literal  s    	1* 	1
 b"H=Dv./''
3v**7==+>+>?)>)>? @ 4 0/ & @? 43 0/s;   C*C:B1	CC1
B?;C
CC
C"	c                     U R                  [        5       nU R                  " UR                  6     S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = frC   )rN  ru   r   r   )r    rz   s     r#   r  1ThreadedNetworkedTests.test_simple_with_statement  sG      12f&"7"78 9 3288 32s!   AAA
A	A
A"c                 Z   U R                  [        5       nU R                  " UR                  6  nUR	                  SS5        U R                  UR                  S5        S S S 5        U R                  UR                  5        S S S 5        g ! , (       d  f       N2= f! , (       d  f       g = fNr5  r6  )rN  ru   r   r   r8  r   r|   r  r    rz   r  s      r#   r  *ThreadedNetworkedTests.test_with_statement  sz     12f&"7"78D

66*  7 9 fmm,	 3288 32s"   B/B#B
B	B
B*c                    U R                  [        5       nU R                  " UR                  6  nUR	                  SS5        U R                  UR                  S5        UR                  5         U R                  UR                  5        S S S 5        U R                  UR                  5        S S S 5        g ! , (       d  f       N2= f! , (       d  f       g = fr  )	rN  ru   r   r   r8  r   r|   r  r  r  s      r#   r  1ThreadedNetworkedTests.test_with_statement_logout  s      12f&"7"78D

66*  7!!&--0	 9
 fmm, 3288 32s#   CAB6
#C6
C	 C
Cz Won't work if __debug__ is Falsec                    SS/0nU R                  [        5       nU R                  " UR                  6  n[        R
                  R                  US5       nUR                  U5        UR                  S5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nz
READ-WRITEr&   _mesgz)untagged responses dump:READ-WRITE: [b''])	rN  ru   r   r   r   r  object_dump_urassert_called_with)r    untagged_resp_dictrz   r  	mock_mesgs        r#   test_dump_ur#ThreadedNetworkedTests.test_dump_ur  s    
 +SE2 12f&"7"78DZZ&&tW5MM"4500C 6 9 3255 98 32s:   B4!B##B9B#B4
B B##
B1	-B44
CrX   N)-rY   rZ   r[   r\   r  r&  r   r   rO   r   rG  rK  r   rN  rQ  r   reap_threadsrU  rx  r  r!  ru   rz  r.  r2  r<  rp  r  r  r  r  r   r#  r  r  r  r  r  r  r  r	   unittest
skipUnlessr  r^   rX   r&   r#   r>  r>  M  sz   ))LJ@ - -     "" #
 "".+ #.+` ""	G #	G ""
G #
G	@& 	@ ""2 #2 ""I #I ""- #- "" #B ""P #P ""
9 #
9 ""N #N "". #.* ""''t<( = #(6 ""K #K$G@ "" # ""- #- ""- #- ""$FG
 H  #
r&   r>  c                   @    \ rS rSr\r\r\R                  S 5       r
Srg)ThreadedNetworkedTestsSSLi  c                    [         R                  " [         R                  5      nUR                  [        5        [
        R                  " S[
        R                  5      nU R                  [         R                  U5         U R                  [        5       nU R                  " UR                  SU06nUR                  5         S S S 5        S S S 5        U R                  [        5       nU R                  SUR                  S   US9nUR                  5         S S S 5        g ! , (       d  f       Nc= f! , (       d  f       Nl= f! , (       d  f       g = f)Nr*  r+  r  r   r9  )re   rf   r,  r0  r1  r  r2  r3  r,  r4  rN  ru   r   r   r  )r    r+  r5  rz   r   s        r#   r:  +ThreadedNetworkedTestsSSL.test_ssl_verified  s   nnS%<%<=))&1 

  dd	
 ##C$8$8%@##$56&&*?*? B5@B! 7 A  12f__[&2G2G2J1< % >FOO 32 76 A@ 32s0   ?D0-DD0'/E
D-	)D00
D>
ErX   N)rY   rZ   r[   r\   r`   r   r<  r   r   r  r:  r^   rX   r&   r#   r  r    s$    "LJ"" #r&   r  __main__)5rt  r   test.supportr   
contextlibr   r   os.pathosr  r   r   r   r  rG   r   r   r   r	   r
   r   r   r  r   r   r   r   re   ImportErrorrequires_working_socketpathr   dirname__file__curdirri   r1  TestCaser   r&  r`   r<  r  ru   r   r   r%  r  r(  r>  r  rY   mainrX   r&   r#   <module>r     s    & %       	  _ _ ' )   2 2   t ,77<<1>RYY
N[	bggooh/<299j.	Y>;(## >;B (,00 ( !!I  I\A99 \A~
6, 
6E/ E/P
*$h&7&7 *
 
S-.'):):  />X.. D 
S-. 6  /6 zMMO k  
Cs   "H HH