HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //proc/thread-self/root/usr/local/lib/python3.7/test/__pycache__/test_imaplib.cpython-37.opt-1.pyc
B

��gK��@sfddlmZddlmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
mZmZmZmZmZmZddlZddlmZddlmZmZmZyddlZWnek
r�dZYnXej�ej�e�p�ejd�Z ej�ej�e�p�ejd�Z!Gd	d
�d
ej"�Z#e�r0Gdd�dej$�Z%ej&Z&nGd
d�d�Z%dZ&Gdd�dej'�Z(Gdd�d�Z)Gdd�de)ej"�Z*e�+ed�Gdd�de)ej"��Z,Gdd�dej"�Z-e�+ed�Gdd�de-��Z.e�+e�/d�d�e�0d�Gdd�dej"���Z1e�+ed�e�+e�/d�d�e�0d�Gd d!�d!e1����Z2e�+ed�e�0d�Gd"d#�d#e1���Z3e4d$k�rbe�5�dS)%�)�support)�contextmanagerN)�reap_threads�verbose�transient_internet�run_with_tz�run_with_locale�cpython_only)�mock)�datetime�timezone�	timedeltazkeycert3.pemzpycacert.pemc@sXeZdZdd�Zed�dd��Zdd�Zedd	d
�ed�dd
���Zdd�Z	dd�Z
dS)�TestImaplibcCsbt�d�}t�d�}|�t�|�|�t�d�}|�t�|�|�t�d�}|�t�|�|�dS)N)	i��rrrr���rrs.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"))�calendarZtimegm�imaplib�Internaldate2tuple�assertEqual�timeZmktime)�selfZt0�tt�r�-/usr/local/lib/python3.7/test/test_imaplib.py�test_Internaldate2tuples
z#TestImaplib.test_Internaldate2tuplezMST+07MDT,M4.1.0,M10.5.0cCs|�t�d�t�d��dS)Ns.25 (INTERNALDATE "02-Apr-2000 02:30:00 +0000")s.25 (INTERNALDATE "02-Apr-2000 03:30:00 +0000"))ZassertNotEqualrr)rrrr�"test_Internaldate2tuple_issue10941)sz.TestImaplib.test_Internaldate2tuple_issue10941cCs*ddt�d�ddt�dttdd���dgS)Ni�5wge��A)	i���r�!�rrr)	i�rrrrrrrrri z"18-May-2033 05:33:20 +0200")rZ	localtimerZ
fromtimestamprr
)rrrr�
timevalues0szTestImaplib.timevalues�LC_ALL�de_DE�fr_FRzSTD-1DST,M3.2.0,M11.1.0cCs0d}x&|��D]}t�|�}|�||�qWdS)Nz"18-May-2033 05:33:20 +0200")r r�Time2Internaldater)rZexpected�tZinternalrrr�test_Time2Internaldate8s
z"TestImaplib.test_Time2InternaldatecCs x|��D]}t�|�q
WdS)N)r rr$)rr%rrr�,test_that_Time2Internaldate_returns_a_resultCsz8TestImaplib.test_that_Time2Internaldate_returns_a_resultc	Cs�t���<}y|�dtjf�|�d�Wntjk
r>YnXWdQRXt��}|�t	��}t�
�WdQRX|�|jj
|�dS)N�z3Cannot run the test with local IMAP server running.)�socket�connectrZ
IMAP4_PORTZskipTest�errorrZget_socket_conn_refused_errs�assertRaises�OSError�IMAP4�assertInZ	exception�errno)r�sZexpected_errnos�cmrrr�test_imap4_host_default_valueJs

z)TestImaplib.test_imap4_host_default_valueN)�__name__�
__module__�__qualname__rrrr rr&r'r3rrrrrs
rc@seZdZdd�ZdS)�SecureTCPServercCs6|j��\}}t��}|�t�|j|dd�}||fS)NT)Zserver_side)r)Zaccept�ssl�
SSLContext�load_cert_chain�CERTFILEZwrap_socket)rZ	newsocketZfromaddr�contextZ
connstreamrrr�get_request^s

zSecureTCPServer.get_requestN)r4r5r6r=rrrrr7\sr7c@seZdZdS)r7N)r4r5r6rrrrr7iscsheZdZdZdZdZ�fdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Z�ZS)�SimpleIMAPHandlerrNr(cst���d|j_dS)N)�super�setup�server�logged)r)�	__class__rrr@ts
zSimpleIMAPHandler.setupcCs$trtd|���|j�|�dS)NzSENT: %r)r�print�strip�wfile�write)r�messagerrr�_sendxszSimpleIMAPHandler._sendcCs|�|d�dS)Ns
)rI)rrHrrr�
_send_line}szSimpleIMAPHandler._send_linecCs|�|�d��dS)N�ASCII)rJ�encode)rrHrrr�_send_textline�sz SimpleIMAPHandler._send_textlinecCs|�d�|||f��dS)N� )rM�join)r�tag�coderHrrr�_send_tagged�szSimpleIMAPHandler._send_taggedcCs$|�d��xd}xJy$|j�d�}|dkr.dS||7}Wntk
rLdSX|�d�rPqWtrrtd|���|jr�y|j�	|�Wqt
k
r�d|_YqXq|�d���}|d}|d}|dd�}t
|d	|��r
t|d	|�||�}|�r||_t|�q|�|d
|d�qWdS)Nz* OK IMAP4rev1�rs
zGOT: %rrKr�Zcmd_ZBADz unknown)rMZrfile�readr-�endswithrrDrE�continuation�send�
StopIteration�decode�split�hasattr�getattr�nextrR)r�line�partZ	splitlinerP�cmd�argsrWrrr�handle�s>


zSimpleIMAPHandler.handlecCs4|jrd|jnd}|�d|�|�|dd�dS)Nz
IMAP4rev1 Z	IMAP4rev1z
* CAPABILITY �OKzCAPABILITY completed)�capabilitiesrMrR)rrPrbZcapsrrr�cmd_CAPABILITY�sz SimpleIMAPHandler.cmd_CAPABILITYcCs$d|j_|�d�|�|dd�dS)Nz"* BYE IMAP4ref1 Server logging outrdzLOGOUT completed)rArBrMrR)rrPrbrrr�
cmd_LOGOUT�s
zSimpleIMAPHandler.cmd_LOGOUTcCs|d|j_|�|dd�dS)NrrdzLOGIN completed)rArBrR)rrPrbrrr�	cmd_LOGIN�szSimpleIMAPHandler.cmd_LOGIN)r4r5r6ZtimeoutrWrer@rIrJrMrRrcrfrgrh�
__classcell__rr)rCrr>os*r>c@s�eZdZdZd3dd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Ze�d#d$�d%d&��Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�ZdS)4�NewIMAPTestsMixinNTcCs�Gdd�d|j�}|�|j�|�tjdf|�|_tj|jd|jj	ddid�|_
d|j
_|j
��|rx|j
|jj�|_|j|jfS)	a
        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@seZdZdd�ZdS)z/NewIMAPTestsMixin._setup.<locals>.TestTCPServercSs|�|�|���dS)zP
                End request and raise the error if one occurs.
                N)�
close_request�server_close)r�request�client_addressrrr�handle_error�s
z<NewIMAPTestsMixin._setup.<locals>.TestTCPServer.handle_errorN)r4r5r6rorrrr�
TestTCPServer�srprz-server�
poll_intervalg{�G�z�?)�name�target�kwargsT)�server_classZ
addCleanup�_cleanupr�HOSTrA�	threading�ThreadZ_testMethodName�
serve_forever�thread�daemon�start�
imap_class�server_address�client)rZimap_handlerr*rprrr�_setup�s	
zNewIMAPTestsMixin._setupcCsL|jdk	r |jjdkr |j��|j��|j��t�|jd�d|_dS)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�LOGOUTg@)r��state�shutdownrArlrZjoin_threadr{)rrrrrv�s


zNewIMAPTestsMixin._cleanupcCsBGdd�dtj�}|j|dd�\}}|jtjj|jf|j��dS)Nc@seZdZdd�ZdS)zONewIMAPTestsMixin.test_EOF_without_complete_welcome_message.<locals>.EOFHandlercSs|j�d�dS)Ns* OK)rFrG)rrrrrc�szVNewIMAPTestsMixin.test_EOF_without_complete_welcome_message.<locals>.EOFHandler.handleN)r4r5r6rcrrrr�
EOFHandler�sr�F)r*)	�socketserver�StreamRequestHandlerr�r,rr.�abortr~r)rr��_rArrr�)test_EOF_without_complete_welcome_message�sz;NewIMAPTestsMixin.test_EOF_without_complete_welcome_messagecCs@Gdd�dt�}|j|dd�\}}|jtjj|jf|j��dS)Nc@seZdZdd�ZdS)zBNewIMAPTestsMixin.test_line_termination.<locals>.BadNewlineHandlercSs|�d�|�|dd�dS)Ns* CAPABILITY IMAP4rev1 AUTH
rdzCAPABILITY completed)rIrR)rrPrbrrrrfs
zQNewIMAPTestsMixin.test_line_termination.<locals>.BadNewlineHandler.cmd_CAPABILITYN)r4r5r6rfrrrr�BadNewlineHandler�sr�F)r*)r>r�r,rr.r�r~r)rr�r�rArrr�test_line_termination�sz'NewIMAPTestsMixin.test_line_terminationc	Cs`Gdd�dt�}|�|�\}}|�|j�|�tjjd��|�d�WdQRX|�|j�dS)Nc@seZdZdZdS)zMNewIMAPTestsMixin.test_enable_raises_error_if_not_AUTH.<locals>.EnableHandlerzAUTH ENABLE UTF8=ACCEPTN)r4r5r6rerrrr�
EnableHandlersr�zENABLE.*NONAUTH�foo)	r>r��assertFalse�utf8_enabled�assertRaisesRegexrr.r+�enable)rr�r�r�rrr�$test_enable_raises_error_if_not_AUTHsz6NewIMAPTestsMixin.test_enable_raises_error_if_not_AUTHc	Cs8|�t�\}}|�tjjd��|�d�WdQRXdS)Nzdoes not support ENABLEr�)r�r>r�rr.r+r�)rr�r�rrr�)test_enable_raises_error_if_no_capabilitys
z;NewIMAPTestsMixin.test_enable_raises_error_if_no_capabilityc	CsT|�t�\}}|�dd�\}}|�|d�|�tjjd��|�d�WdQRXdS)N�user�passrdzdoes not support ENABLEzUTF8=ACCEPT)	r�r>�loginrr�rr.r+r�)rr�r��typ�datarrr�.test_enable_UTF8_raises_error_if_not_supporteds
z@NewIMAPTestsMixin.test_enable_UTF8_raises_error_if_not_supportedc	Cs�Gdd�dt�}|�|�\}}|�|jd�|�ddd��\}}|�|d�|�|jd�|�d	�\}}|�|d�|�|jd
�d}|�ddd|�d
��\}}|�|d�|�|jd|�d
��dS)
Nc@s(eZdZdZdd�Zdd�Zdd�ZdS)	zHNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServerzENABLE UTF8=ACCEPTcSs|�|dd�dS)NrdzENABLE successful)rR)rrPrbrrr�
cmd_ENABLE!szSNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_ENABLEcss&|�d�dV|j_|�|dd�dS)N�+rdzFAKEAUTH successful)rMrA�responserR)rrPrbrrr�cmd_AUTHENTICATE#s

zYNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_AUTHENTICATEcss&|�d�dV|j_|�|dd�dS)Nr�rd�okay)rMrAr�rR)rrPrbrrr�
cmd_APPEND's

zSNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_APPENDN)r4r5r6rer�r�r�rrrr�UTF8AppendServersr��ascii�MYAUTHcSsdS)Nsfaker)�xrrr�<lambda>-rSz@NewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.<lambda>rds
ZmFrZQ==
zUTF8=ACCEPTzutf-8uSubject: üñí©öðézUTF8 (%s)
)	r>r�r�	_encoding�authenticater�r��appendrL)	rr�r�rArQr��
msg_stringr�r�rrr�test_enable_UTF8_True_appendsz.NewIMAPTestsMixin.test_enable_UTF8_True_appendc	Cs�Gdd�dt�}|�|�\}}|�ddd��\}}|�|d�|�d�\}}|�|d�|�|j�|�tj	j
d��|�d	d
�WdQRXdS)Nc@s eZdZdZdd�Zdd�ZdS)zPNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8ServerzAUTH ENABLE UTF8=ACCEPTcSs|�|dd�dS)NrdzENABLE successful)rR)rrPrbrrrr�<sz[NewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Server.cmd_ENABLEcss&|�d�dV|j_|�|dd�dS)Nr�rdzFAKEAUTH successful)rMrAr�rR)rrPrbrrrr�>s

zaNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Server.cmd_AUTHENTICATEN)r4r5r6rer�r�rrrr�
UTF8Server:sr�r�cSsdS)Nsfaker)r�rrrr�CrSzNNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.<lambda>rdzUTF8=ACCEPTz
charset.*UTF8r��bar)r>r�r�rr��
assertTruer�r�rr.r+�search)rr�r�r�r�rrr�*test_search_disallows_charset_in_utf8_mode9sz<NewIMAPTestsMixin.test_search_disallows_charset_in_utf8_modec	CsNGdd�dt�}|�|�\}}|�tjjd��|�ddd��WdQRXdS)Nc@seZdZdd�ZdS)z6NewIMAPTestsMixin.test_bad_auth_name.<locals>.MyServercSs|�|dd�|d��dS)N�NOz#unrecognized authentication type {}r)rR�format)rrPrbrrrr�MszGNewIMAPTestsMixin.test_bad_auth_name.<locals>.MyServer.cmd_AUTHENTICATEN)r4r5r6r�rrrr�MyServerLsr�z'unrecognized authentication type METHOD�METHODcSsdS)Nrrrrrrr�SrSz6NewIMAPTestsMixin.test_bad_auth_name.<locals>.<lambda>)r>r�r�rr.r+r�)rr�r�r�rrr�test_bad_auth_nameKs

z$NewIMAPTestsMixin.test_bad_auth_namec	CsNGdd�dt�}|�|�\}}|�tjjd��|�ddd��WdQRXdS)Nc@seZdZdd�ZdS)z?NewIMAPTestsMixin.test_invalid_authentication.<locals>.MyServercss$|�d�dV|_|�|dd�dS)Nr�r�z[AUTHENTICATIONFAILED] invalid)rMr�rR)rrPrbrrrr�Ws
zPNewIMAPTestsMixin.test_invalid_authentication.<locals>.MyServer.cmd_AUTHENTICATEN)r4r5r6r�rrrrr�Vsr�z \[AUTHENTICATIONFAILED\] invalidr�cSsdS)Nsfaker)r�rrrr�^rSz?NewIMAPTestsMixin.test_invalid_authentication.<locals>.<lambda>)r>r�r�rr.r+r�)rr�r�r�rrr�test_invalid_authenticationUs

z-NewIMAPTestsMixin.test_invalid_authenticationcCsPGdd�dt�}|�|�\}}|�ddd��\}}|�|d�|�|jd�dS)Nc@seZdZdd�ZdS)zCNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.MyServercss&|�d�dV|j_|�|dd�dS)Nr�rdzFAKEAUTH successful)rMrAr�rR)rrPrbrrrr�bs

zTNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.MyServer.cmd_AUTHENTICATEN)r4r5r6r�rrrrr�asr�r�cSsdS)Nsfaker)r�rrrr�grSzCNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.<lambda>rds
ZmFrZQ==
)r>r�r�rr�)rr�r�rArQr�rrr�test_valid_authentication_bytes`s
z1NewIMAPTestsMixin.test_valid_authentication_bytescCsPGdd�dt�}|�|�\}}|�ddd��\}}|�|d�|�|jd�dS)Nc@seZdZdd�ZdS)zHNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.MyServercss&|�d�dV|j_|�|dd�dS)Nr�rdzFAKEAUTH successful)rMrAr�rR)rrPrbrrrr�ms

zYNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.MyServer.cmd_AUTHENTICATEN)r4r5r6r�rrrrr�lsr�r�cSsdS)N�faker)r�rrrr�rrSzHNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.<lambda>rds
ZmFrZQ==
)r>r�r�rr�)rr�r�rArQr�rrr�$test_valid_authentication_plain_textks
z6NewIMAPTestsMixin.test_valid_authentication_plain_textcCsNGdd�dt�}|�|�\}}|�d|jk�|�dd�\}}|�|d�dS)Nc@seZdZdZdd�ZdS)z@NewIMAPTestsMixin.test_login_cram_md5_bytes.<locals>.AuthHandlerzLOGINDISABLED AUTH=CRAM-MD5css:|�d�dV}|dkr(|�|dd�n|�|dd�dS)Nz:+ PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ=s2dGltIGYxY2E2YmU0NjRiOWVmYTFjY2E2ZmZkNmNmMmQ5ZjMy
rdzCRAM-MD5 successfulr�z	No access)rMrR)rrPrb�rrrrr�ys

zQNewIMAPTestsMixin.test_login_cram_md5_bytes.<locals>.AuthHandler.cmd_AUTHENTICATEN)r4r5r6rer�rrrr�AuthHandlerwsr�z
AUTH=CRAM-MD5�timstanstaaftanstaafrd)r>r�r�re�login_cram_md5r)rr�r�r��retrrr�test_login_cram_md5_bytesvs
z+NewIMAPTestsMixin.test_login_cram_md5_bytescCsNGdd�dt�}|�|�\}}|�d|jk�|�dd�\}}|�|d�dS)Nc@seZdZdZdd�ZdS)zENewIMAPTestsMixin.test_login_cram_md5_plain_text.<locals>.AuthHandlerzLOGINDISABLED AUTH=CRAM-MD5css:|�d�dV}|dkr(|�|dd�n|�|dd�dS)Nz:+ PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ=s2dGltIGYxY2E2YmU0NjRiOWVmYTFjY2E2ZmZkNmNmMmQ5ZjMy
rdzCRAM-MD5 successfulr�z	No access)rMrR)rrPrbr�rrrr��s

zVNewIMAPTestsMixin.test_login_cram_md5_plain_text.<locals>.AuthHandler.cmd_AUTHENTICATEN)r4r5r6rer�rrrrr��sr�z
AUTH=CRAM-MD5r��tanstaaftanstaafrd)r>r�r�rer�r)rr�r�r�r�rrr�test_login_cram_md5_plain_text�s
z0NewIMAPTestsMixin.test_login_cram_md5_plain_textc	CsNGdd�dt�}|�|�\}}|�tjjd��|�ddd��WdQRXdS)Nc@seZdZdd�ZdS)z?NewIMAPTestsMixin.test_aborted_authentication.<locals>.MyServercss>|�d�dV|_|jdkr,|�|dd�n|�|dd�dS)Nr�s*
r�z[AUTHENTICATIONFAILED] abortedrdzMYAUTH successful)rMr�rR)rrPrbrrrr��s

zPNewIMAPTestsMixin.test_aborted_authentication.<locals>.MyServer.cmd_AUTHENTICATEN)r4r5r6r�rrrrr��sr�z \[AUTHENTICATIONFAILED\] abortedr�cSsdS)Nr)r�rrrr��rSz?NewIMAPTestsMixin.test_aborted_authentication.<locals>.<lambda>)r>r�r�rr.r+r�)rr�r�r�rrr�test_aborted_authentication�s

z-NewIMAPTestsMixin.test_aborted_authenticationzimaplib._MAXLINE�
c	CsNGdd�dt�}|j|dd�\}}|�tjjd��|j|j�WdQRXdS)Nc@seZdZdd�ZdS)z:NewIMAPTestsMixin.test_linetoolong.<locals>.TooLongHandlercSs|j�d�dS)Ns* OK xxxxxxxxxxx
)rFrG)rrrrrc�szANewIMAPTestsMixin.test_linetoolong.<locals>.TooLongHandler.handleN)r4r5r6rcrrrr�TooLongHandler�sr�F)r*zgot more than 10 bytes)r>r�r�rr.r+r~r)rr�r�rArrr�test_linetoolong�s

z"NewIMAPTestsMixin.test_linetoolongc	Cs.|jtdd�\}}|j|j��WdQRXdS)NF)r*)r�r>r~r)rr�rArrr�test_simple_with_statement�sz,NewIMAPTestsMixin.test_simple_with_statementc	CsT|jtdd�\}}|j|j�� }|�dd�|�|jd�WdQRX|�|j�dS)NF)r*r�r�)r�r>r~rr�rrB�assertIsNone)rr�rA�imaprrr�test_with_statement�s
z%NewIMAPTestsMixin.test_with_statementc	Csh|jtdd�\}}|j|j��4}|�dd�|�|jd�|��|�|j�WdQRX|�|j�dS)NF)r*r�r�)	r�r>r~rr�rrB�logoutr�)rr�rAr�rrr�test_with_statement_logout�sz,NewIMAPTestsMixin.test_with_statement_logoutcCsL|�t�\}}|�dd�\}}|�|d�|�|dd�|�|jd�dS)Nr�r�rdrsLOGIN completed�AUTH)r�r>r�rr�)rr�r�r�r�rrr�
test_login�s
zNewIMAPTestsMixin.test_logincCs�|�t�\}}|�dd�\}}|�|d�|�|dd�|��\}}|�|d||f�|�|dd||f�|�|jd�dS)	Nr�r�rdrsLOGIN completed�BYEsIMAP4ref1 Server logging outr�)r�r>r�rr�r�)rr�r�r�r�rrr�test_logout�szNewIMAPTestsMixin.test_logoutcCsVGdd�dt�}|�|�\}}|�dd�|��\}}|�|d�|�|dd�dS)Nc@seZdZdd�ZdS)z,NewIMAPTestsMixin.test_lsub.<locals>.LsubCmdcSs|�d�|�|dd�S)Nz* LSUB () "." directoryArdzLSUB completed)rMrR)rrPrbrrr�cmd_LSUB�s
z5NewIMAPTestsMixin.test_lsub.<locals>.LsubCmd.cmd_LSUBN)r4r5r6r�rrrr�LsubCmd�sr�r�r�rdrs() "." directoryA)r>r�r�Zlsubr)rr�r�r�r�r�rrr�	test_lsub�szNewIMAPTestsMixin.test_lsub)T)r4r5r6r�r�rvr�r�r�r�r�r�r�r�r�r�r�r�r�r�r
�patchr�r�r�r�r�r�r�rrrrrj�s0
!			

rjc@seZdZejZejZdS)�NewIMAPTestsN)	r4r5r6rr.r~r��	TCPServerrurrrrr��sr�zSSL not availablec@s0eZdZeZeZdd�Zdd�Ze	dd��Z
dS)�NewIMAPSSLTestsc	Cszt�tj�}|�|jtj�|�|jd�|�t�|�	tj
d��.|�t�\}}|j
|jd|i�}|��WdQRXdS)NTz=IP address mismatch, certificate is not valid for '127.0.0.1'�ssl_context)r8r9�PROTOCOL_TLS_CLIENTr�verify_modeZ
CERT_REQUIRED�check_hostname�load_verify_locations�CAFILEr��CertificateErrorr�r>r~rr�)rr�r�rAr�rrr�test_ssl_raises�s

zNewIMAPSSLTests.test_ssl_raisescCsFt�tj�}|�t�|�t�\}}|jd|jd|d�}|�	�dS)N�	localhostr)r�)
r8r9r�r�r�r�r>r~rr�)rr�r�rAr�rrr�test_ssl_verifieds
z!NewIMAPSSLTests.test_ssl_verifiedcCsft�dtf��Ntj�|jd��2tj�|jd��|jddtd�WdQRXWdQRXWdQRXdS)Nr(�openZ_connectr��)�certfile)rZcheck_warnings�DeprecationWarningr
r��objectr~r;)rrrr�test_certfile_arg_warnsz&NewIMAPSSLTests.test_certfile_arg_warnN)r4r5r6�	IMAP4_SSLr~r7rur�r�r	r�rrrrr��s
r�c@s$eZdZejZejZdd�Z	dd�Z
edd��Zedd��Z
ed	d
��Zedd��Zed
d��Zedd��ZGdd�de�Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd ��Zed!d"��Zed#d$��Zed%d&��Zd'd(�Zed)d*��Z ed+d,��Z!ed-d.��Z"d/S)0�ThreadedNetworkedTestscCs�Gdd�d|j�}trtd�|||�}|�|j|j���trjtd�td|�td|j�td|j�tj	d|j|j
d	d
id�}d|_|��tr�td
�||fS)Nc@seZdZdd�ZdS)z4ThreadedNetworkedTests.make_server.<locals>.MyServercSs|�|�|���dS)N)rkrl)rrmrnrrrros
zAThreadedNetworkedTests.make_server.<locals>.MyServer.handle_errorN)r4r5r6rorrrrr�sr�zcreating serverzserver createdzADDR =zCLASS =zHDLR =z
%s servingrqg{�G�z�?)rrrsrtTzserver running)
rurrDrrr)ZgetsocknameZRequestHandlerClassrxryrzr|r})rZaddr�hdlrr�rAr%rrr�make_servers&

z"ThreadedNetworkedTests.make_servercCs4trtd�|��|��|��tr0td�dS)Nzwaiting for serverZdone)rrDr�rlrO)rrAr{rrr�reap_server7sz"ThreadedNetworkedTests.reap_serverc
cs4|�tjdf|�\}}z
|VWd|�||�XdS)Nr)r�rrwr�)rr�rAr{rrr�
reaped_server@s
z$ThreadedNetworkedTests.reaped_serverc	cs@|�|��,}|j|j�}z||fVWd|��XWdQRXdS)N)r�r~rr�)rr�rAr�rrr�reaped_pairHs
z"ThreadedNetworkedTests.reaped_pairc	Cs.|�t��}|j|j�}|��WdQRXdS)N)r�r>r~rr�)rrAr�rrr�test_connectQsz#ThreadedNetworkedTests.test_connectc	Cs�Gdd�dt�}|�|���\}}|�ddd��\}}|�|d�|�|jd�|�d�|�d	d
d�\}\}|�d|�|�d�|�d
�\}\}|�d|�WdQRXdS)Ncs4eZdZ�fdd�Zdd�Zdd�Zdd�Z�ZS)	zEThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandlercsdddddg|_t���dS)NZAnsweredZFlaggedZDeletedZSeenZDraft)�flagsr?rc)r)rCrrrcbszLThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.handlecss&|�d�dV|j_|�|dd�dS)Nr�rdzFAKEAUTH successful)rMrAr�rR)rrPrbrrrr�fs

zVThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_AUTHENTICATEcSs^d�|j�}|�d|�d��|�d�|�d�d|}|�|�d��|�|dd�dS)	Nz \z* FLAGS (%s)r�s
* 2 EXISTSs
* 0 RECENTz-* OK [PERMANENTFLAGS %s \*)] Flags permitted.rdz[READ-WRITE] SELECT completed.)rOr�rJrLrR)rrPrbZflag_msg�msgrrr�
cmd_SELECTks

zPThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_SELECTcSsf|d�d��d���}|j�|�dd�|j�}d|d|f}|�|�d��|�|d	d
�dS)NrT�(�)z(FLAGS (%s))z \z
* %s FETCH %srr�rdzSTORE completed.)rEr[r��extendrOrJrLrR)rrPrbZ	new_flagsZ	flags_msgr�rrr�	cmd_STOREuszOThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_STORE)r4r5r6rcr�r�r�rirr)rCr�BracketFlagHandler`s
r�r�cSsdS)Nsfaker)r�rrrr�~rSz;ThreadedNetworkedTests.test_bracket_flags.<locals>.<lambda>rds
ZmFrZQ==
�test�1z+FLAGSz[test]s[test]ZPERMANENTFLAGS)r>r�r�rr�Zselect�storer/)rr�rAr�rQr�r�rrr�test_bracket_flagsWs	

z)ThreadedNetworkedTests.test_bracket_flagsc	CsFGdd�dtj�}|�|�� }|jtjj|jf|j��WdQRXdS)Nc@seZdZdd�ZdS)z9ThreadedNetworkedTests.test_issue5949.<locals>.EOFHandlercSs|j�d�dS)Ns* OK)rFrG)rrrrrc�sz@ThreadedNetworkedTests.test_issue5949.<locals>.EOFHandler.handleN)r4r5r6rcrrrrr��sr�)	r�r�r�r,rr.r�r~r)rr�rArrr�test_issue5949�s
z%ThreadedNetworkedTests.test_issue5949c	CsDGdd�dt�}|�|�� }|jtjj|jf|j��WdQRXdS)Nc@seZdZdd�ZdS)zGThreadedNetworkedTests.test_line_termination.<locals>.BadNewlineHandlercSs|�d�|�|dd�dS)Ns* CAPABILITY IMAP4rev1 AUTH
rdzCAPABILITY completed)rIrR)rrPrbrrrrf�s
zVThreadedNetworkedTests.test_line_termination.<locals>.BadNewlineHandler.cmd_CAPABILITYN)r4r5r6rfrrrrr��sr�)r>r�r,rr.r�r~r)rr�rArrrr��s
z,ThreadedNetworkedTests.test_line_terminationc@s eZdZdZdd�Zdd�ZdS)z!ThreadedNetworkedTests.UTF8ServerzAUTH ENABLE UTF8=ACCEPTcCs|�|dd�dS)NrdzENABLE successful)rR)rrPrbrrrr��sz,ThreadedNetworkedTests.UTF8Server.cmd_ENABLEccs&|�d�dV|j_|�|dd�dS)Nr�rdzFAKEAUTH successful)rMrAr�rR)rrPrbrrrr��s

z2ThreadedNetworkedTests.UTF8Server.cmd_AUTHENTICATEN)r4r5r6rer�r�rrrrr��sr�c	CsL|�|j��6\}}|�|j�|�tjj|jd�|�|j�WdQRXdS)Nr�)	r�r�r�r�r,rr.r+r�)rrAr�rrrr��sz;ThreadedNetworkedTests.test_enable_raises_error_if_not_AUTHc	CsDGdd�d|j�}|�|��\}}|�tjj|jd�WdQRXdS)Nc@seZdZdZdS)zXThreadedNetworkedTests.test_enable_raises_error_if_no_capability.<locals>.NoEnableServerr�N)r4r5r6rerrrr�NoEnableServer�sr�r�)r�r�r,rr.r+r�)rr�rAr�rrrr��sz@ThreadedNetworkedTests.test_enable_raises_error_if_no_capabilityc
CsnGdd�dt�}|�tjj��F|�|��0\}}|�dd�\}}|�|d�|�d�WdQRXWdQRXdS)Nc@seZdZdS)z\ThreadedNetworkedTests.test_enable_UTF8_raises_error_if_not_supported.<locals>.NonUTF8ServerN)r4r5r6rrrr�
NonUTF8Server�sr�r�r�rdzUTF8=ACCEPT)	r>r,rr.r+r�r�rr�)rr�rAr�r�r�rrrr��s
zEThreadedNetworkedTests.test_enable_UTF8_raises_error_if_not_supportedc		Cs�Gdd�d|j�}|�|���\}}|�|jd�|�ddd��\}}|�|d�|�|jd�|�d	�\}}|�|d�|�|jd
�d}|�ddd|�d
��\}}|�|d�|�|jd|�d
��WdQRXdS)
Nc@seZdZdd�ZdS)zMThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.UTF8AppendServercss&|�d�dV|j_|�|dd�dS)Nr�rdr�)rMrAr�rR)rrPrbrrrr��s

zXThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_APPENDN)r4r5r6r�rrrrr��sr�r�r�cSsdS)Nsfaker)r�rrrr��rSzEThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.<lambda>rds
ZmFrZQ==
zUTF8=ACCEPTzutf-8uSubject: üñí©öðézUTF8 (%s)
)	r�r�rr�r�r�r�r�rL)	rr�rAr�rQr�r�r�r�rrrr��s"z3ThreadedNetworkedTests.test_enable_UTF8_True_appendc	Cs||�|j��f\}}|�ddd��\}}|�|d�|�d�\}}|�|d�|�|j�|�tj	j
|jdd�WdQRXdS)Nr�cSsdS)Nsfaker)r�rrrr��rSzSThreadedNetworkedTests.test_search_disallows_charset_in_utf8_mode.<locals>.<lambda>rdzUTF8=ACCEPTr�r�)r�r�r�rr�r�r�r,rr.r+r�)rrAr�r�r�rrrr��szAThreadedNetworkedTests.test_search_disallows_charset_in_utf8_modec
CsXGdd�dt�}|�|��4\}}|�tjj��|�ddd��WdQRXWdQRXdS)Nc@seZdZdd�ZdS)z;ThreadedNetworkedTests.test_bad_auth_name.<locals>.MyServercSs|�|dd�|d��dS)Nr�z#unrecognized authentication type {}r)rRr�)rrPrbrrrr��szLThreadedNetworkedTests.test_bad_auth_name.<locals>.MyServer.cmd_AUTHENTICATEN)r4r5r6r�rrrrr��sr�r�cSsdS)Nrrrrrrr��rSz;ThreadedNetworkedTests.test_bad_auth_name.<locals>.<lambda>)r>r�r,rr.r+r�)rr�rAr�rrrr��sz)ThreadedNetworkedTests.test_bad_auth_namec
Cs\Gdd�dt�}|�|��8\}}|�tjj��|�ddd��\}}WdQRXWdQRXdS)Nc@seZdZdd�ZdS)zDThreadedNetworkedTests.test_invalid_authentication.<locals>.MyServercss$|�d�dV|_|�|dd�dS)Nr�r�z[AUTHENTICATIONFAILED] invalid)rMr�rR)rrPrbrrrr�s
zUThreadedNetworkedTests.test_invalid_authentication.<locals>.MyServer.cmd_AUTHENTICATEN)r4r5r6r�rrrrr��sr�r�cSsdS)Nsfaker)r�rrrr�rSzDThreadedNetworkedTests.test_invalid_authentication.<locals>.<lambda>)r>r�r,rr.r+r�)rr�rAr�rQr�rrrr��sz2ThreadedNetworkedTests.test_invalid_authenticationc	Cs�Gdd�dt�}|�|��8\}}|�ddd��\}}|�|d�|�|jd�WdQRX|�|��8\}}|�ddd��\}}|�|d�|�|jd�WdQRXdS)	Nc@seZdZdd�ZdS)zBThreadedNetworkedTests.test_valid_authentication.<locals>.MyServercss&|�d�dV|j_|�|dd�dS)Nr�rdzFAKEAUTH successful)rMrAr�rR)rrPrbrrrr�s

zSThreadedNetworkedTests.test_valid_authentication.<locals>.MyServer.cmd_AUTHENTICATEN)r4r5r6r�rrrrr�
sr�r�cSsdS)Nsfaker)r�rrrr�rSzBThreadedNetworkedTests.test_valid_authentication.<locals>.<lambda>rds
ZmFrZQ==
cSsdS)Nr�r)r�rrrr�rS)r>r�r�rr�)rr�rAr�rQr�rrr�test_valid_authentication
sz0ThreadedNetworkedTests.test_valid_authenticationc	Cs�Gdd�dt�}|�|��6\}}|�d|jk�|�dd�\}}|�|d�WdQRX|�|��6\}}|�d|jk�|�dd�\}}|�|d�WdQRXdS)Nc@seZdZdZdd�ZdS)z?ThreadedNetworkedTests.test_login_cram_md5.<locals>.AuthHandlerzLOGINDISABLED AUTH=CRAM-MD5css:|�d�dV}|dkr(|�|dd�n|�|dd�dS)Nz:+ PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ=s2dGltIGYxY2E2YmU0NjRiOWVmYTFjY2E2ZmZkNmNmMmQ5ZjMy
rdzCRAM-MD5 successfulr�z	No access)rMrR)rrPrbr�rrrr�'s

zPThreadedNetworkedTests.test_login_cram_md5.<locals>.AuthHandler.cmd_AUTHENTICATEN)r4r5r6rer�rrrrr�#sr�z
AUTH=CRAM-MD5r�r�rdstanstaaftanstaaf)r>r�r�rer�r)rr�rAr�r�r�rrr�test_login_cram_md5 sz*ThreadedNetworkedTests.test_login_cram_md5c
Cs\Gdd�dt�}|�|��8\}}|�tjj��|�ddd��\}}WdQRXWdQRXdS)Nc@seZdZdd�ZdS)zDThreadedNetworkedTests.test_aborted_authentication.<locals>.MyServercss>|�d�dV|_|jdkr,|�|dd�n|�|dd�dS)Nr�s*
r�z[AUTHENTICATIONFAILED] abortedrdzMYAUTH successful)rMr�rR)rrPrbrrrr�As


zUThreadedNetworkedTests.test_aborted_authentication.<locals>.MyServer.cmd_AUTHENTICATEN)r4r5r6r�rrrrr�?sr�r�cSsdS)Nr)r�rrrr�LrSzDThreadedNetworkedTests.test_aborted_authentication.<locals>.<lambda>)r>r�r,rr.r+r�)rr�rAr�rQr�rrrr�<sz2ThreadedNetworkedTests.test_aborted_authenticationc	CsDGdd�dt�}|�|�� }|jtjj|jf|j��WdQRXdS)Nc@seZdZdd�ZdS)z?ThreadedNetworkedTests.test_linetoolong.<locals>.TooLongHandlercSs|j�dtjdd�dS)Ns* OK �xs
)rFrGrZ_MAXLINE)rrrrrcQszFThreadedNetworkedTests.test_linetoolong.<locals>.TooLongHandler.handleN)r4r5r6rcrrrrr�Psr�)r>r�r,rr.r+r~r)rr�rArrrr�Os
z'ThreadedNetworkedTests.test_linetoolongc
Cs2|�t��}|j|j��WdQRXWdQRXdS)N)r�r>r~r)rrArrrr�Ysz1ThreadedNetworkedTests.test_simple_with_statementc
CsX|�t��D}|j|j�� }|�dd�|�|jd�WdQRX|�|j�WdQRXdS)Nr�r�)r�r>r~rr�rrBr�)rrAr�rrrr�`s
z*ThreadedNetworkedTests.test_with_statementc
Csl|�t��X}|j|j��4}|�dd�|�|jd�|��|�|j�WdQRX|�|j�WdQRXdS)Nr�r�)	r�r>r~rr�rrBr�r�)rrAr�rrrr�hsz1ThreadedNetworkedTests.test_with_statement_logoutN)#r4r5r6r�r�rurr.r~r�r�rr�r�rr�r�r�r�r>r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�s2 		1
	


r�c@s eZdZeZeZedd��ZdS)�ThreadedNetworkedTestsSSLc
Cs�t�tj�}|�t�|�tjd��6|�t�� }|j	|j
d|i�}|��WdQRXWdQRX|�t��$}|j	d|j
d|d�}|��WdQRXdS)Nz=IP address mismatch, certificate is not valid for '127.0.0.1'r�r�r)r�)r8r9r�r�r�r�r�r�r>r~rr�)rr�rAr�rrrr�ys

z+ThreadedNetworkedTestsSSL.test_ssl_verifiedN)	r4r5r6r7rur�r~rr�rrrrrtsrZnetworkznetwork resource disabledz'cyrus.andrew.cmu.edu blocks connectionsc@sBeZdZdZdZdZdZejZ	dd�Z
dd�Zd	d
�Zdd�Z
d
S)�RemoteIMAPTestzcyrus.andrew.cmu.edur�Z	anonymousr�c	Cs,t|j��|�|j|j�|_WdQRXdS)N)r�hostr~�portrA)rrrr�setUp�szRemoteIMAPTest.setUpc	Cs.|jdk	r*t|j��|j��WdQRXdS)N)rArrr�)rrrr�tearDown�s
zRemoteIMAPTest.tearDownc	Cszt|j��fx|jjD]}|�|t�qW|�d|jj�|�d|jj�|j�|j|j	�}|�
|dd�WdQRXdS)N�
LOGINDISABLEDzAUTH=ANONYMOUSrrd)rrrAre�assertIsInstance�strr/r��username�passwordr)r�cap�rsrrr�test_logincapa�szRemoteIMAPTest.test_logincapac	Cs<t|j��(|j��}d|_|�|dd|�WdQRXdS)Nrr�)rrrAr�r)rrrrrr��s
zRemoteIMAPTest.test_logoutN)r4r5r6rrr	r
rr.r~rrr
r�rrrrr�s	rcs$eZdZ�fdd�Zdd�Z�ZS)�RemoteIMAP_STARTTLSTestc	s>t���t|j�� |j��}|�|dd�WdQRXdS)Nrrd)r?rrrrAZstarttlsr)rr)rCrrr�s

zRemoteIMAP_STARTTLSTest.setUpcCs2x|jjD]}|�|t�q
W|�d|jj�dS)Nr)rArerr�assertNotIn)rrrrrr
�sz&RemoteIMAP_STARTTLSTest.test_logincapa)r4r5r6rr
rirr)rCrr�src@sTeZdZdZeZdd�Zdd�Zdd�Zdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dS)�RemoteIMAP_SSLTesti�cCsdS)Nr)rrrrr�szRemoteIMAP_SSLTest.setUpcCsdS)Nr)rrrrr�szRemoteIMAP_SSLTest.tearDowncCs(t�tj�}d|_tj|_|�t�|S)NF)r8r9r�r�Z	CERT_NONEr�r:r;)rr�rrr�create_ssl_context�s

z%RemoteIMAP_SSLTest.create_ssl_contextcCslz\x|jD]}|�|t�q
W|�d|j�|�d|j�|�|j|j�}|�|dd�Wd|�	�XdS)Nrz
AUTH=PLAINrrd)
rerrrr/r�r	r
rr�)rrArrrrr�check_logincapa�sz"RemoteIMAP_SSLTest.check_logincapac	Cs4t|j�� |�|j|j�}|�|�WdQRXdS)N)rrr~rr)r�_serverrrrr
�sz!RemoteIMAP_SSLTest.test_logincapac	CsDt|j��0|�|j|j�}|��}|�|dd|�WdQRXdS)Nrr�)rrr~rr�r)rrrrrrr��szRemoteIMAP_SSLTest.test_logoutc	Cs:t|j��&|jt|j|j|jt|��d�WdQRXdS)N)r�r�)rrr,�
ValueErrorr~rr;r)rrrr�#test_ssl_context_certfile_exclusive�sz6RemoteIMAP_SSLTest.test_ssl_context_certfile_exclusivec	Cs:t|j��&|jt|j|j|jt|��d�WdQRXdS)N)Zkeyfiler�)rrr,rr~rr;r)rrrr�"test_ssl_context_keyfile_exclusive�sz5RemoteIMAP_SSLTest.test_ssl_context_keyfile_exclusiveN)r4r5r6rr�r~rrrrr
r�rrrrrrr�sr�__main__)6r�r�
contextlibrr0rZos.path�osr�rrrxr)Ztest.supportrrrrrr	Zunittestr
rrr
r8�ImportError�pathrO�dirname�__file__�curdirr;r�ZTestCaserr�r7r�r�r>rjr�Z
skipUnlessr�r�rZis_resource_enabled�skiprrrr4�mainrrrr�<module>sf 
@	R*$c 


4