Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/test/__pycache__/test_imaplib.cpython-38.opt-2.pyc
U

>��g͛�@sbddlmZddlmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
mZmZmZmZmZmZddlZddlmZddlmZmZmZzddlZWnek
r�dZYnXej�ej�e�p�ejd�Z ej�ej�e�p�ejd�Z!Gd	d
�d
ej"�Z#e�r,Gdd�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�r^e�5�dS)%�)�support)�contextmanagerN)�reap_threads�verbose�transient_internet�run_with_tz�run_with_locale�cpython_only�requires_hashdigest)�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�time�mktime)�self�t0�tt�r�0/opt/cppython/lib/python3.8/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)s���z.TestImaplib.test_Internaldate2tuple_issue10941cCs*ddt�d�ddt�dttdd���dgS)Ni�5wge��A)	����r!�!�rrr)	r r!r"r!r#r$rrrri �"18-May-2033 05:33:20 +0200")r�	localtimerZ
fromtimestampr
rrrrr�
timevalues0s��zTestImaplib.timevalues�LC_ALL�de_DE�fr_FRzSTD-1DST,M3.2.0,M11.1.0cCs,d}|��D]}t�|�}|�||�qdS)Nr%)r'r�Time2Internaldater)rZexpected�tZinternalrrr�test_Time2Internaldate8s
z"TestImaplib.test_Time2InternaldatecCs|��D]}t�|�qdS�N)r'rr+)rr,rrr�,test_that_Time2Internaldate_returns_a_resultCsz8TestImaplib.test_that_Time2Internaldate_returns_a_resultc	Cs�t���<}z|�dtjf�|�d�Wntjk
r>YnXW5QRXt��}|�t	��}t�
�W5QRX|�|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�assertIn�	exception�errno)r�sZexpected_errnos�cmrrr�test_imap4_host_default_valueJs
�z)TestImaplib.test_imap4_host_default_valueN)�__name__�
__module__�__qualname__rrrr'rr-r/r<rrrrrs

rc@seZdZdd�ZdS)�SecureTCPServercCs6|j��\}}t��}|�t�|j|dd�}||fS)NT)Zserver_side)r1�accept�ssl�
SSLContext�load_cert_chain�CERTFILEZwrap_socket)rZ	newsocketZfromaddr�contextZ
connstreamrrr�get_request^s

zSecureTCPServer.get_requestN)r=r>r?rGrrrrr@\sr@c@seZdZdS)r@N�r=r>r?rrrrr@iscsheZdZdZdZdZ�fdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Z�ZS)�SimpleIMAPHandlerrNr0cst���d|j_dSr.)�super�setup�server�loggedr��	__class__rrrKts
zSimpleIMAPHandler.setupcCs$trtd|���|j�|�dS)NzSENT: %r)r�print�strip�wfile�write�r�messagerrr�_sendxszSimpleIMAPHandler._sendcCs|�|d�dS)N�
)rVrTrrr�
_send_line}szSimpleIMAPHandler._send_linecCs|�|�d��dS)N�ASCII)rX�encoderTrrr�_send_textline�sz SimpleIMAPHandler._send_textlinecCs|�d�|||f��dS)N� )r[�join)r�tag�coderUrrr�_send_tagged�szSimpleIMAPHandler._send_taggedcCs|�d�d}z&|j�d�}|dkr*WdS||7}Wntk
rJYdSX|�d�rqZqtrntd|���|jr�z|j�	|�Wq
t
k
r�d|_Yq
Xq
|�d���}|d}|d}|dd�}t
|d	|��rt|d	|�||�}|�r||_t|�q
|�|d
|d�q
dS)Nz* OK IMAP4rev1�rrWzGOT: %rrYr�Zcmd_ZBADz unknown)r[Zrfile�readr5�endswithrrPrQ�continuation�send�
StopIteration�decode�split�hasattr�getattr�nextr`)r�line�partZ	splitliner^�cmd�argsrerrr�handle�s:


zSimpleIMAPHandler.handlecCs4|jrd|jnd}|�d|�|�|dd�dS)Nz
IMAP4rev1 Z	IMAP4rev1z
* CAPABILITY �OK�CAPABILITY completed)�capabilitiesr[r`)rr^rpZcapsrrr�cmd_CAPABILITY�s��z SimpleIMAPHandler.cmd_CAPABILITYcCs$d|j_|�d�|�|dd�dS)Nz"* BYE IMAP4ref1 Server logging outrrzLOGOUT completed)rLrMr[r`�rr^rprrr�
cmd_LOGOUT�s
zSimpleIMAPHandler.cmd_LOGOUTcCs|d|j_|�|dd�dS)NrrrzLOGIN completed)rLrMr`rvrrr�	cmd_LOGIN�szSimpleIMAPHandler.cmd_LOGIN)r=r>r?�timeoutrertrKrVrXr[r`rqrurwrx�
__classcell__rrrNrrIos*rIc@s�eZdZdZd4dd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zed�dd��Zed�d d!��Zd"d#�Ze�d$d%�d&d'��Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�ZdS)5�NewIMAPTestsMixinNTcCs�Gdd�d|j�}|�|j�|�tjdf|�|_tj|jd|jj	ddid�|_
d|j
_|j
��|rx|j
|jj�|_|j|jfS)	Nc@seZdZdd�ZdS)z/NewIMAPTestsMixin._setup.<locals>.TestTCPServercSs|�|�|���dSr.�Z
close_request�server_close�rZrequestZclient_addressrrr�handle_error�s
z<NewIMAPTestsMixin._setup.<locals>.TestTCPServer.handle_errorN�r=r>r?rrrrr�
TestTCPServer�sr�rz-server�
poll_interval�{�G�z�?��name�target�kwargsT)�server_classZ
addCleanup�_cleanupr�HOSTrL�	threading�ThreadZ_testMethodName�
serve_forever�thread�daemon�start�
imap_class�server_address�client)rZimap_handlerr2r�rrr�_setup�s	�
zNewIMAPTestsMixin._setupcCsL|jdk	r |jjdkr |j��|j��|j��t�|jd�d|_dS)N�LOGOUTg@)r��state�shutdownrLr}r�join_threadr�rrrrr��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�rRrSrrrrrq�szVNewIMAPTestsMixin.test_EOF_without_complete_welcome_message.<locals>.EOFHandler.handleN�r=r>r?rqrrrr�
EOFHandler�sr�F�r2)	�socketserver�StreamRequestHandlerr�r4rr6�abortr�r�)rr��_rLrrr�)test_EOF_without_complete_welcome_message�s
�z;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
rrrs�rVr`rvrrrrus
zQNewIMAPTestsMixin.test_line_termination.<locals>.BadNewlineHandler.cmd_CAPABILITYN�r=r>r?rurrrr�BadNewlineHandler�sr�Fr�)rIr�r4rr6r�r�r�)rr�r�rLrrr�test_line_termination�s
�z'NewIMAPTestsMixin.test_line_terminationc	Cs`Gdd�dt�}|�|�\}}|�|j�|�tjjd��|�d�W5QRX|�|j�dS)Nc@seZdZdZdS)zMNewIMAPTestsMixin.test_enable_raises_error_if_not_AUTH.<locals>.EnableHandler�AUTH ENABLE UTF8=ACCEPTN�r=r>r?rtrrrr�
EnableHandlersr�zENABLE.*NONAUTH�foo)	rIr��assertFalse�utf8_enabled�assertRaisesRegexrr6r3�enable)rr�r�r�rrr�$test_enable_raises_error_if_not_AUTHsz6NewIMAPTestsMixin.test_enable_raises_error_if_not_AUTHc	Cs8|�t�\}}|�tjjd��|�d�W5QRXdS)N�does not support ENABLEr�)r�rIr�rr6r3r�)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�W5QRXdS)N�user�passrrr��UTF8=ACCEPT)	r�rI�loginrr�rr6r3r��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�NrrzENABLE successful�r`rvrrr�
cmd_ENABLE!szSNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_ENABLEcss&|�d�dV|j_|�|dd�dS�N�+rrzFAKEAUTH successful�r[rL�responser`rvrrr�cmd_AUTHENTICATE#s

zYNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_AUTHENTICATEcss&|�d�dV|j_|�|dd�dS�Nr�rrZokayr�rvrrr�
cmd_APPEND's

zSNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_APPENDN)r=r>r?rtr�r�r�rrrr�UTF8AppendServersr��ascii�MYAUTHcSsdS�Nsfaker��xrrr�<lambda>-raz@NewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.<lambda>rr�
ZmFrZQ==
r��utf-8�Subject: üñí©öðé�UTF8 (%s)
)	rIr�r�	_encoding�authenticater�r��appendrZ)	rr�r�rLr_r��
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
�W5QRXdS)Nc@s eZdZdZdd�Zdd�ZdS)zPNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Serverr�cSs|�|dd�dSr�r�rvrrrr�<sz[NewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Server.cmd_ENABLEcss&|�d�dV|j_|�|dd�dSr�r�rvrrrr�>s

zaNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Server.cmd_AUTHENTICATEN�r=r>r?rtr�r�rrrr�
UTF8Server:sr�r�cSsdSr�rr�rrrr�CrazNNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.<lambda>rrr�z
charset.*UTF8r��bar)rIr�r�rr��
assertTruer�r�rr6r3�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��W5QRXdS)Nc@seZdZdd�ZdS)z6NewIMAPTestsMixin.test_bad_auth_name.<locals>.MyServercSs|�|dd�|d��dS�N�NOz#unrecognized authentication type {}r�r`�formatrvrrrr�Ms�zGNewIMAPTestsMixin.test_bad_auth_name.<locals>.MyServer.cmd_AUTHENTICATEN�r=r>r?r�rrrr�MyServerLsr�z'unrecognized authentication type METHOD�METHODcSsdS�Nrrrrrrr�Sraz6NewIMAPTestsMixin.test_bad_auth_name.<locals>.<lambda>�rIr�r�rr6r3r��rr�r�r�rrr�test_bad_auth_nameKs
�z$NewIMAPTestsMixin.test_bad_auth_namec	CsNGdd�dt�}|�|�\}}|�tjjd��|�ddd��W5QRXdS)Nc@seZdZdd�ZdS)z?NewIMAPTestsMixin.test_invalid_authentication.<locals>.MyServercss$|�d�dV|_|�|dd�dS�Nr�r�z[AUTHENTICATIONFAILED] invalid�r[r�r`rvrrrr�Ws
zPNewIMAPTestsMixin.test_invalid_authentication.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�Vsr�z \[AUTHENTICATIONFAILED\] invalidr�cSsdSr�rr�rrrr�^raz?NewIMAPTestsMixin.test_invalid_authentication.<locals>.<lambda>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�dSr�r�rvrrrr�bs

zTNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�asr�r�cSsdSr�rr�rrrr�grazCNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.<lambda>rrr��rIr�r�rr��rr�r�rLr_r�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�dSr�r�rvrrrr�ms

zYNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�lsr�r�cSsdS�NZfakerr�rrrr�rrazHNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.<lambda>rrr�r�r�rrr�$test_valid_authentication_plain_textks
z6NewIMAPTestsMixin.test_valid_authentication_plain_text�md5cCsNGdd�dt�}|�|�\}}|�d|jk�|�dd�\}}|�|d�dS)Nc@seZdZdZdd�ZdS)z@NewIMAPTestsMixin.test_login_cram_md5_bytes.<locals>.AuthHandler�LOGINDISABLED AUTH=CRAM-MD5css:|�d�dV}|dkr(|�|dd�n|�|dd�dS�Nz:+ PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ=s2dGltIGYxY2E2YmU0NjRiOWVmYTFjY2E2ZmZkNmNmMmQ5ZjMy
rrzCRAM-MD5 successfulr�z	No access�r[r`�rr^rp�rrrrr�zs

zQNewIMAPTestsMixin.test_login_cram_md5_bytes.<locals>.AuthHandler.cmd_AUTHENTICATEN�r=r>r?rtr�rrrr�AuthHandlerxsr��
AUTH=CRAM-MD5�tim�tanstaaftanstaafrr�rIr�r�rt�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>.AuthHandlerr�css:|�d�dV}|dkr(|�|dd�n|�|dd�dSr�r�r�rrrr��s

zVNewIMAPTestsMixin.test_login_cram_md5_plain_text.<locals>.AuthHandler.cmd_AUTHENTICATENr�rrrrr��sr�r�r��tanstaaftanstaafrrr�r�rrr�test_login_cram_md5_plain_text�s
z0NewIMAPTestsMixin.test_login_cram_md5_plain_textc	CsNGdd�dt�}|�|�\}}|�tjjd��|�ddd��W5QRXdS)Nc@seZdZdd�ZdS)z?NewIMAPTestsMixin.test_aborted_authentication.<locals>.MyServercss>|�d�dV|_|jdkr,|�|dd�n|�|dd�dS�Nr�s*
r�z[AUTHENTICATIONFAILED] abortedrrzMYAUTH successfulr�rvrrrr��s

�zPNewIMAPTestsMixin.test_aborted_authentication.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr��sr�z \[AUTHENTICATIONFAILED\] abortedr�cSsdSr.rr�rrrr��raz?NewIMAPTestsMixin.test_aborted_authentication.<locals>.<lambda>r�r�rrr�test_aborted_authentication�s
�z-NewIMAPTestsMixin.test_aborted_authenticationzimaplib._MAXLINE�
c	CsNGdd�dt�}|j|dd�\}}|�tjjd��|j|j�W5QRXdS)Nc@seZdZdd�ZdS)z:NewIMAPTestsMixin.test_linetoolong.<locals>.TooLongHandlercSs|j�d�dS)Ns* OK xxxxxxxxxxx
r�rrrrrq�szANewIMAPTestsMixin.test_linetoolong.<locals>.TooLongHandler.handleNr�rrrr�TooLongHandler�srFr�zgot more than 10 bytes)rIr�r�rr6r3r�r�)rrr�rLrrr�test_linetoolong�s
�z"NewIMAPTestsMixin.test_linetoolongc	Cs.|jtdd�\}}|j|j��W5QRXdS)NFr�)r�rIr�r�)rr�rLrrr�test_simple_with_statement�sz,NewIMAPTestsMixin.test_simple_with_statementc	CsT|jtdd�\}}|j|j�� }|�dd�|�|jd�W5QRX|�|j�dS�NFr�r�r�)r�rIr�r�r�rrM�assertIsNone�rr�rL�imaprrr�test_with_statement�s
z%NewIMAPTestsMixin.test_with_statementc	Csh|jtdd�\}}|j|j��4}|�dd�|�|jd�|��|�|j�W5QRX|�|j�dSr)	r�rIr�r�r�rrM�logoutrrrrr�test_with_statement_logout�sz,NewIMAPTestsMixin.test_with_statement_logoutcCsL|�t�\}}|�dd�\}}|�|d�|�|dd�|�|jd�dS)Nr�r�rrr�LOGIN completed�AUTH)r�rIr�rr�r�rrr�
test_login�s
zNewIMAPTestsMixin.test_logincCs�|�t�\}}|�dd�\}}|�|d�|�|dd�|��\}}|�|d||f�|�|dd||f�|�|jd�dS)	Nr�r�rrrr
�BYEsIMAP4ref1 Server logging outr�)r�rIr�rrr�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 () "." directoryArrzLSUB completedr�rvrrr�cmd_LSUB�s
z5NewIMAPTestsMixin.test_lsub.<locals>.LsubCmd.cmd_LSUBN)r=r>r?rrrrr�LsubCmd�srr�r�rrrs() "." directoryA)rIr�r�Zlsubr)rrr�r�r�r�rrr�	test_lsub�szNewIMAPTestsMixin.test_lsub)T)r=r>r?r�r�r�r�r�r�r�r�r�r�r�r�r�r�r
r�r�rr�patchrrr
rrrrrrrrr{�s6
!			






r{c@seZdZejZejZdS)�NewIMAPTestsN)	r=r>r?rr6r�r��	TCPServerr�rrrrr�srzSSL not availablec@s0eZdZeZeZdd�Zdd�Ze	dd��Z
dS)�NewIMAPSSLTestsc	Cszt�tj�}|�|jtj�|�|jd�|�t�|�	tj
d��.|�t�\}}|j
|jd|i�}|��W5QRXdS)NT�=IP address mismatch, certificate is not valid for '127.0.0.1'�ssl_context)rBrC�PROTOCOL_TLS_CLIENTr�verify_modeZ
CERT_REQUIRED�check_hostname�load_verify_locations�CAFILEr��CertificateErrorr�rIr�r�r��rrr�rLr�rrr�test_ssl_raises�s
�
�zNewIMAPSSLTests.test_ssl_raisescCsFt�tj�}|�t�|�t�\}}|jd|jd|d�}|�	�dS)N�	localhostr�r)
rBrCrrrr�rIr�r�r�r!rrr�test_ssl_verifieds
�z!NewIMAPSSLTests.test_ssl_verifiedcCsft�dtf��Ntj�|jd��2tj�|jd��|jddtd�W5QRXW5QRXW5QRXdS)Nr0�openZ_connectr#�)�certfile)rZcheck_warnings�DeprecationWarningrr�objectr�rErrrr�test_certfile_arg_warnsz&NewIMAPSSLTests.test_certfile_arg_warnN)r=r>r?�	IMAP4_SSLr�r@r�r"r%r	r+rrrrr�src@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"��Zeed#�d$d%���Zed&d'��Zd(d)�Z ed*d+��Z!ed,d-��Z"ed.d/��Z#d0S)1�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|�|�|���dSr.r|r~rrrrs
zAThreadedNetworkedTests.make_server.<locals>.MyServer.handle_errorNr�rrrrr�sr�zcreating serverzserver createdzADDR =zCLASS =zHDLR =z
%s servingr�r�r�Tzserver running)
r�rrPrr�r1�getsocknameZRequestHandlerClassr�r�r�r�r�)r�addr�hdlrr�rLr,rrr�make_servers(

�z"ThreadedNetworkedTests.make_servercCs4trtd�|��|��|��tr0td�dS)Nzwaiting for server�done)rrPr�r}r])rrLr�rrr�reap_server9sz"ThreadedNetworkedTests.reap_serverc
cs4|�tjdf|�\}}z
|VW5|�||�XdS)Nr)r1rr�r3)rr0rLr�rrr�
reaped_serverBs
z$ThreadedNetworkedTests.reaped_serverc	cs@|�|��,}|j|j�}z||fVW5|��XW5QRXdSr.)r4r�r�r)rr0rLr�rrr�reaped_pairJs
z"ThreadedNetworkedTests.reaped_pairc	Cs.|�t��}|j|j�}|��W5QRXdSr.)r4rIr�r�r��rrLr�rrr�test_connectSsz#ThreadedNetworkedTests.test_connectc	Cs�Gdd�dt�}|�|���\}}|�ddd��\}}|�|d�|�|jd�|�d�|�d	d
d�\}\}|�d|�|�d�|�d
�\}\}|�d|�W5QRXdS)Ncs4eZdZ�fdd�Zdd�Zdd�Zdd�Z�ZS)	zEThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandlercsdddddg|_t���dS)NZAnsweredZFlaggedZDeletedZSeenZDraft)�flagsrJrqrrNrrrqdszLThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.handlecss&|�d�dV|j_|�|dd�dSr�r�rvrrrr�hs

zVThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_AUTHENTICATEcSs^d�|j�}|�d|�d��|�d�|�d�d|}|�|�d��|�|dd�dS)	N� \z* FLAGS (%s)r�s
* 2 EXISTSs
* 0 RECENTz-* OK [PERMANENTFLAGS %s \*)] Flags permitted.rrz[READ-WRITE] SELECT completed.)r]r8rXrZr`)rr^rpZflag_msg�msgrrr�
cmd_SELECTms

�zPThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_SELECTcSsf|d�d��d���}|j�|�dd�|j�}d|d|f}|�|�d��|�|d	d
�dS)Nrb�(�)z(FLAGS (%s))r9z
* %s FETCH %srr�rrzSTORE completed.)rQrir8�extendr]rXrZr`)rr^rpZ	new_flagsZ	flags_msgr:rrr�	cmd_STOREwszOThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_STORE)r=r>r?rqr�r;r?rzrrrNr�BracketFlagHandlerbs
r@r�cSsdSr�rr�rrrr��raz;ThreadedNetworkedTests.test_bracket_flags.<locals>.<lambda>rrr��test�1z+FLAGSz[test]s[test]ZPERMANENTFLAGS)rIr5r�rr��select�storer7)rr@rLr�r_r�r�rrr�test_bracket_flagsYs	

z)ThreadedNetworkedTests.test_bracket_flagsc	CsFGdd�dtj�}|�|�� }|jtjj|jf|j��W5QRXdS)Nc@seZdZdd�ZdS)z9ThreadedNetworkedTests.test_issue5949.<locals>.EOFHandlercSs|j�d�dSr�r�rrrrrq�sz@ThreadedNetworkedTests.test_issue5949.<locals>.EOFHandler.handleNr�rrrrr��sr�)	r�r�r4r4rr6r�r�r�)rr�rLrrr�test_issue5949�s
��z%ThreadedNetworkedTests.test_issue5949c	CsDGdd�dt�}|�|�� }|jtjj|jf|j��W5QRXdS)Nc@seZdZdd�ZdS)zGThreadedNetworkedTests.test_line_termination.<locals>.BadNewlineHandlercSs|�d�|�|dd�dSr�r�rvrrrru�s
zVThreadedNetworkedTests.test_line_termination.<locals>.BadNewlineHandler.cmd_CAPABILITYNr�rrrrr��sr�)rIr4r4rr6r�r�r�)rr�rLrrrr��s
��z,ThreadedNetworkedTests.test_line_terminationc@s eZdZdZdd�Zdd�ZdS)z!ThreadedNetworkedTests.UTF8Serverr�cCs|�|dd�dSr�r�rvrrrr��sz,ThreadedNetworkedTests.UTF8Server.cmd_ENABLEccs&|�d�dV|j_|�|dd�dSr�r�rvrrrr��s

z2ThreadedNetworkedTests.UTF8Server.cmd_AUTHENTICATENr�rrrrr��sr�c	CsL|�|j��6\}}|�|j�|�tjj|jd�|�|j�W5QRXdS)Nr�)	r5r�r�r�r4rr6r3r�r6rrrr��sz;ThreadedNetworkedTests.test_enable_raises_error_if_not_AUTHc	CsDGdd�d|j�}|�|��\}}|�tjj|jd�W5QRXdS)Nc@seZdZdZdS)zXThreadedNetworkedTests.test_enable_raises_error_if_no_capability.<locals>.NoEnableServerrNr�rrrr�NoEnableServer�srGr�)r�r5r4rr6r3r�)rrGrLr�rrrr��sz@ThreadedNetworkedTests.test_enable_raises_error_if_no_capabilityc
CsnGdd�dt�}|�tjj��F|�|��0\}}|�dd�\}}|�|d�|�d�W5QRXW5QRXdS)Nc@seZdZdS)z\ThreadedNetworkedTests.test_enable_UTF8_raises_error_if_not_supported.<locals>.NonUTF8ServerNrHrrrr�
NonUTF8Server�srHr�r�rrr�)	rIr4rr6r3r5r�rr�)rrHrLr�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
��W5QRXdS)
Nc@seZdZdd�ZdS)zMThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.UTF8AppendServercss&|�d�dV|j_|�|dd�dSr�r�rvrrrr��s

zXThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_APPENDN)r=r>r?r�rrrrr��sr�r�r�cSsdSr�rr�rrrr��razEThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.<lambda>rrr�r�r�r�r�)	r�r5rr�r�r�r�r�rZ)	rr�rLr�r_r�r�r�r�rrrr��s.���z3ThreadedNetworkedTests.test_enable_UTF8_True_appendc	Cs||�|j��f\}}|�ddd��\}}|�|d�|�d�\}}|�|d�|�|j�|�tj	j
|jdd�W5QRXdS)Nr�cSsdSr�rr�rrrr��razSThreadedNetworkedTests.test_search_disallows_charset_in_utf8_mode.<locals>.<lambda>rrr�r�r�)r5r�r�rr�r�r�r4rr6r3r�)rrLr�r�r�rrrr��szAThreadedNetworkedTests.test_search_disallows_charset_in_utf8_modec
CsXGdd�dt�}|�|��4\}}|�tjj��|�ddd��W5QRXW5QRXdS)Nc@seZdZdd�ZdS)z;ThreadedNetworkedTests.test_bad_auth_name.<locals>.MyServercSs|�|dd�|d��dSr�r�rvrrrr��s�zLThreadedNetworkedTests.test_bad_auth_name.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr��sr�r�cSsdSr�rrrrrr��raz;ThreadedNetworkedTests.test_bad_auth_name.<locals>.<lambda>�rIr5r4rr6r3r�)rr�rLr�rrrr��sz)ThreadedNetworkedTests.test_bad_auth_namec
Cs\Gdd�dt�}|�|��8\}}|�tjj��|�ddd��\}}W5QRXW5QRXdS)Nc@seZdZdd�ZdS)zDThreadedNetworkedTests.test_invalid_authentication.<locals>.MyServercss$|�d�dV|_|�|dd�dSr�r�rvrrrr�s
zUThreadedNetworkedTests.test_invalid_authentication.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�sr�r�cSsdSr�rr�rrrr�
razDThreadedNetworkedTests.test_invalid_authentication.<locals>.<lambda>rI�rr�rLr�r_r�rrrr��sz2ThreadedNetworkedTests.test_invalid_authenticationc	Cs�Gdd�dt�}|�|��8\}}|�ddd��\}}|�|d�|�|jd�W5QRX|�|��8\}}|�ddd��\}}|�|d�|�|jd�W5QRXdS)	Nc@seZdZdd�ZdS)zBThreadedNetworkedTests.test_valid_authentication.<locals>.MyServercss&|�d�dV|j_|�|dd�dSr�r�rvrrrr�s

zSThreadedNetworkedTests.test_valid_authentication.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�sr�r�cSsdSr�rr�rrrr�razBThreadedNetworkedTests.test_valid_authentication.<locals>.<lambda>rrr�cSsdSr�rr�rrrr�ra)rIr5r�rr�rJrrr�test_valid_authentications��z0ThreadedNetworkedTests.test_valid_authenticationr�c	Cs�Gdd�dt�}|�|��6\}}|�d|jk�|�dd�\}}|�|d�W5QRX|�|��6\}}|�d|jk�|�dd�\}}|�|d�W5QRXdS)Nc@seZdZdZdd�ZdS)z?ThreadedNetworkedTests.test_login_cram_md5.<locals>.AuthHandlerr�css:|�d�dV}|dkr(|�|dd�n|�|dd�dSr�r�r�rrrr�*s

zPThreadedNetworkedTests.test_login_cram_md5.<locals>.AuthHandler.cmd_AUTHENTICATENr�rrrrr�&sr�r�r�r�rrr�)rIr5r�rtr�r)rr�rLr�r�r�rrr�test_login_cram_md5"sz*ThreadedNetworkedTests.test_login_cram_md5c
Cs\Gdd�dt�}|�|��8\}}|�tjj��|�ddd��\}}W5QRXW5QRXdS)Nc@seZdZdd�ZdS)zDThreadedNetworkedTests.test_aborted_authentication.<locals>.MyServercss>|�d�dV|_|jdkr,|�|dd�n|�|dd�dSrr�rvrrrr�Ds


zUThreadedNetworkedTests.test_aborted_authentication.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�Bsr�r�cSsdSr.rr�rrrr�OrazDThreadedNetworkedTests.test_aborted_authentication.<locals>.<lambda>rIrJrrrr?sz2ThreadedNetworkedTests.test_aborted_authenticationc	CsDGdd�dt�}|�|�� }|jtjj|jf|j��W5QRXdS)Nc@seZdZdd�ZdS)z?ThreadedNetworkedTests.test_linetoolong.<locals>.TooLongHandlercSs|j�dtjdd�dS)Ns* OK �xrW)rRrSrZ_MAXLINErrrrrqTszFThreadedNetworkedTests.test_linetoolong.<locals>.TooLongHandler.handleNr�rrrrrSsr)rIr4r4rr6r3r�r�)rrrLrrrrRs
��z'ThreadedNetworkedTests.test_linetoolongc
Cs2|�t��}|j|j��W5QRXW5QRXdSr.)r4rIr�r�)rrLrrrr\sz1ThreadedNetworkedTests.test_simple_with_statementc
CsX|�t��D}|j|j�� }|�dd�|�|jd�W5QRX|�|j�W5QRXdS�Nr�r�)r4rIr�r�r�rrMr�rrLr	rrrr
cs
z*ThreadedNetworkedTests.test_with_statementc
Csl|�t��X}|j|j��4}|�dd�|�|jd�|��|�|j�W5QRX|�|j�W5QRXdSrN)	r4rIr�r�r�rrMrrrOrrrrksz1ThreadedNetworkedTests.test_with_statement_logoutN)$r=r>r?r�rr�rr6r�r1r3rr4r5rr7rErFr�rIr�r�r�r�r�r�r�r�rKr
rLrrrr
rrrrrr-sZ 	



0







	







r-c@s eZdZeZeZedd��ZdS)�ThreadedNetworkedTestsSSLc
Cs�t�tj�}|�t�|�tjd��6|�t�� }|j	|j
d|i�}|��W5QRXW5QRX|�t��$}|j	d|j
d|d�}|��W5QRXdS)Nrrr#rr$)rBrCrrrr�r r4rIr�r�r�)rrrLr�rrrr%|s 
�
��z+ThreadedNetworkedTestsSSL.test_ssl_verifiedN)	r=r>r?r@r�r,r�rr%rrrrrPwsrPZnetworkznetwork 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�|_W5QRXdSr.)r�hostr��portrLrrrr�setUp�szRemoteIMAPTest.setUpc	Cs.|jdk	r*t|j��|j��W5QRXdSr.)rLrrRrrrrr�tearDown�s
zRemoteIMAPTest.tearDownc	Csvt|j��b|jjD]}|�|t�q|�d|jj�|�d|jj�|j�|j|j	�}|�
|dd�W5QRXdS)N�
LOGINDISABLEDzAUTH=ANONYMOUSrrr)rrRrLrt�assertIsInstance�strr7r��username�passwordr)r�cap�rsrrr�test_logincapa�szRemoteIMAPTest.test_logincapac	Cs<t|j��(|j��}d|_|�|dd|�W5QRXdS�Nrr)rrRrLrr�rr\rrrr�s
zRemoteIMAPTest.test_logoutN)r=r>r?rRrSrYrZrr6r�rTrUr]rrrrrrQ�s	rQcs$eZdZ�fdd�Zdd�Z�ZS)�RemoteIMAP_STARTTLSTestc	s>t���t|j�� |j��}|�|dd�W5QRXdS)Nrrr)rJrTrrRrLZstarttlsrr_rNrrrT�s

zRemoteIMAP_STARTTLSTest.setUpcCs.|jjD]}|�|t�q|�d|jj�dS)NrV)rLrtrWrX�assertNotIn)rr[rrrr]�sz&RemoteIMAP_STARTTLSTest.test_logincapa)r=r>r?rTr]rzrrrNrr`�sr`c@sTeZdZdZeZdd�Zdd�Zdd�Zdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dS)�RemoteIMAP_SSLTesti�cCsdSr.rrrrrrT�szRemoteIMAP_SSLTest.setUpcCsdSr.rrrrrrU�szRemoteIMAP_SSLTest.tearDowncCs(t�tj�}d|_tj|_|�t�|S)NF)rBrCrrZ	CERT_NONErrDrE)rrrrr�create_ssl_context�s

z%RemoteIMAP_SSLTest.create_ssl_contextcCshzX|jD]}|�|t�q|�d|j�|�d|j�|�|j|j�}|�	|dd�W5|��XdS)NrVz
AUTH=PLAINrrr)
rrtrWrXrar7r�rYrZr)rrLr[r\rrr�check_logincapa�s
z"RemoteIMAP_SSLTest.check_logincapac	Cs4t|j�� |�|j|j�}|�|�W5QRXdSr.)rrRr�rSrd)r�_serverrrrr]�sz!RemoteIMAP_SSLTest.test_logincapac	CsDt|j��0|�|j|j�}|��}|�|dd|�W5QRXdSr^)rrRr�rSrr)rrer\rrrr�szRemoteIMAP_SSLTest.test_logoutc	Cs:t|j��&|jt|j|j|jt|��d�W5QRXdS)N)r(r�rrRr4�
ValueErrorr�rSrErcrrrr�#test_ssl_context_certfile_exclusive�s�z6RemoteIMAP_SSLTest.test_ssl_context_certfile_exclusivec	Cs:t|j��&|jt|j|j|jt|��d�W5QRXdS)N)Zkeyfilerrfrrrr�"test_ssl_context_keyfile_exclusive�s�z5RemoteIMAP_SSLTest.test_ssl_context_keyfile_exclusiveN)r=r>r?rSr,r�rTrUrcrdr]rrhrirrrrrb�srb�__main__)6rAr�
contextlibrrZos.path�osr�rrr�r1Ztest.supportrrrrrr	r
Zunittestrrr
rrB�ImportError�pathr]�dirname�__file__�curdirrErZTestCaserrr@r,r�rIr{rZ
skipUnlessrr-rPZis_resource_enabled�skiprQr`rbr=�mainrrrr�<module>sl$
@	R,
$d
� 
�
4


F1le Man4ger