Your IP : 216.73.216.147


Current Path : /opt/alt/python39/lib64/python3.9/test/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/__pycache__/test_imaplib.cpython-39.opt-2.pyc

a

XC?h���@srddlmZddlmZddlmZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZmZmZmZmZddlmZddlZddlmZddlmZmZmZzddlZWney�dZYn0ej�ej�e�p�ejd	�Z ej�ej�e��pejd
�Z!Gdd�dej"�Z#e�r<Gd
d�de	j$�Z%ej&Z&nGdd�d�Z%dZ&Gdd�de	j'�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�Gd d!�d!ej"���Z1e�+ed�e�+e�/d�d�e�0d�Gd"d#�d#e1����Z2e�+ed�e�0d�Gd$d%�d%e1���Z3e4d&k�rne�5�dS)'�)�support)�
socket_helper)�contextmanagerN)�reap_threads�verbose�run_with_tz�run_with_locale�cpython_only)�hashlib_helper)�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)�selfZt0Ztt�r�6/opt/alt/python39/lib64/python3.9/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)	rrr rr!r"rrrri �"18-May-2033 05:33:20 +0200")r�	localtimerZ
fromtimestampr
rrrrr�
timevalues1s��zTestImaplib.timevalues�LC_ALLZde_DEZfr_FRzSTD-1DST,M3.2.0,M11.1.0cCs,d}|��D]}t�|�}|�||�qdS)Nr#)r%r�Time2Internaldater)rZexpected�tZinternalrrr�test_Time2Internaldate9s
z"TestImaplib.test_Time2InternaldatecCs|��D]}t�|�qdS�N)r%rr')rr(rrr�,test_that_Time2Internaldate_returns_a_resultDsz8TestImaplib.test_that_Time2Internaldate_returns_a_resultc	Cs�t���D}z|�dtjf�|�d�Wntjy<Yn0Wd�n1sR0Yt��}|�t	��}t�
�Wd�n1s�0Y|�|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_valueKs
�$&z)TestImaplib.test_imap4_host_default_valueN)�__name__�
__module__�__qualname__rrrr%rr)r+r7rrrrrs

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)r8r9r:rArrrrr;]sr;c@seZdZdS)r;N�r8r9r:rrrrr;jscszeZdZejZdZdZ�fdd�Zdd�Z	dd�Z
d	d
�Zdd�Zd
d�Z
dd�Zdd�Zdd�Zdd�Zdd�Z�ZS)�SimpleIMAPHandlerNr,cst���d|j_d|j_dS�NF)�super�setup�server�is_selected�loggedr��	__class__rrrFus
zSimpleIMAPHandler.setupcCs$trtd|���|j�|�dS)NzSENT: %r)r�print�strip�wfile�write�r�messagerrr�_sendzszSimpleIMAPHandler._sendcCs|�|d�dS)N�
)rRrPrrr�
_send_lineszSimpleIMAPHandler._send_linecCs|�|�d��dS)N�ASCII)rT�encoderPrrr�_send_textline�sz SimpleIMAPHandler._send_textlinecCs|�d�|||f��dS)N� )rW�join)r�tag�coderQrrr�_send_tagged�szSimpleIMAPHandler._send_taggedcCs|�d�d}z&|j�d�}|dkr*WdS||7}WntyHYdS0|�d�rqXqtrltd|���|jr�z|j�	|�Wq
t
y�d|_Yq
0q
|�d���}|d}|d}|dd�}t
|d	|��rt|d	|�||�}|�r||_t|�q
|�|d
|d�q
dS)Nz* OK IMAP4rev1�rrSzGOT: %rrUr�Zcmd_�BADz unknown)rWZrfile�readr1�endswithrrLrM�continuation�send�
StopIteration�decode�split�hasattr�getattr�nextr\)r�line�partZ	splitlinerZ�cmd�argsrbrrr�handle�s:


zSimpleIMAPHandler.handlecCs4|jrd|jnd}|�d|�|�|dd�dS)Nz
IMAP4rev1 �	IMAP4rev1z
* CAPABILITY �OK�CAPABILITY completed)�capabilitiesrWr\)rrZrmZcapsrrr�cmd_CAPABILITY�s��z SimpleIMAPHandler.cmd_CAPABILITYcCs$d|j_|�d�|�|dd�dS)Nz"* BYE IMAP4ref1 Server logging outrpzLOGOUT completed)rGrIrWr\�rrZrmrrr�
cmd_LOGOUT�s
zSimpleIMAPHandler.cmd_LOGOUTcCs|d|j_|�|dd�dS)NrrpzLOGIN completed)rGrIr\rtrrr�	cmd_LOGIN�szSimpleIMAPHandler.cmd_LOGINcCs$d|j_|�d�|�|dd�dS)NT�
* 2 EXISTSrp�[READ-WRITE] SELECT completed.)rGrHrTr\rtrrr�
cmd_SELECT�s
zSimpleIMAPHandler.cmd_SELECTcCs2|jjr d|j_|�|dd�n|�|dd�dS)NFrpz*Returned to authenticated state. (Success)r_zNo mailbox selected)rGrHr\rtrrr�cmd_UNSELECT�szSimpleIMAPHandler.cmd_UNSELECT)r8r9r:r�LOOPBACK_TIMEOUT�timeoutrbrrrFrRrTrWr\rnrsrurvryrz�
__classcell__rrrJrrCps*rCc@s
eZdZdZd;dd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zejddd�dd ��Zejddd�d!d"��Zd#d$�Ze�d%d&�d'd(��Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Z d9d:�Z!dS)<�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�r8r9r:r�rrrr�
TestTCPServer�sr�rz-server�
poll_interval�{�G�z�?��name�target�kwargsT)�server_classZ
addCleanup�_cleanupr�HOSTrG�	threading�ThreadZ_testMethodName�
serve_forever�thread�daemon�start�
imap_class�server_address�client)rZimap_handlerr.r�rrr�_setup�s	�
zNewIMAPTestsMixin._setupcCsJ|jdur |jjdkr |j��|j��|j��t�|j�d|_dS)N�LOGOUT)r��state�shutdownrGr�rZjoin_threadr�rrrrr��s


zNewIMAPTestsMixin._cleanupcCsDGdd�dtj�}|j|dd�\}}|jtjj|jg|j�R�dS)Nc@seZdZdd�ZdS)zONewIMAPTestsMixin.test_EOF_without_complete_welcome_message.<locals>.EOFHandlercSs|j�d�dS�Ns* OK�rNrOrrrrrnszVNewIMAPTestsMixin.test_EOF_without_complete_welcome_message.<locals>.EOFHandler.handleN�r8r9r:rnrrrr�
EOFHandlersr�F�r.)	�socketserver�StreamRequestHandlerr�r0rr2�abortr�r�)rr��_rGrrr�)test_EOF_without_complete_welcome_messages
�z;NewIMAPTestsMixin.test_EOF_without_complete_welcome_messagecCsBGdd�dt�}|j|dd�\}}|jtjj|jg|j�R�dS)Nc@seZdZdd�ZdS)zBNewIMAPTestsMixin.test_line_termination.<locals>.BadNewlineHandlercSs|�d�|�|dd�dS�Ns* CAPABILITY IMAP4rev1 AUTH
rprq�rRr\rtrrrrss
zQNewIMAPTestsMixin.test_line_termination.<locals>.BadNewlineHandler.cmd_CAPABILITYN�r8r9r:rsrrrr�BadNewlineHandler
sr�Fr�)rCr�r0rr2r�r�r�)rr�r�rGrrr�test_line_terminations
�z'NewIMAPTestsMixin.test_line_terminationcCstGdd�dt�}|�|�\}}|�|j�|�tjjd��|�d�Wd�n1sZ0Y|�|j�dS)Nc@seZdZdZdS)zMNewIMAPTestsMixin.test_enable_raises_error_if_not_AUTH.<locals>.EnableHandler�AUTH ENABLE UTF8=ACCEPTN�r8r9r:rrrrrr�
EnableHandlersr�zENABLE.*NONAUTH�foo)	rCr��assertFalse�utf8_enabled�assertRaisesRegexrr2r/�enable)rr�r�r�rrr�$test_enable_raises_error_if_not_AUTHs(z6NewIMAPTestsMixin.test_enable_raises_error_if_not_AUTHcCsL|�t�\}}|�tjjd��|�d�Wd�n1s>0YdS)N�does not support ENABLEr�)r�rCr�rr2r/r�)rr�r�rrr�)test_enable_raises_error_if_no_capabilitys

�z;NewIMAPTestsMixin.test_enable_raises_error_if_no_capabilitycCsh|�t�\}}|�dd�\}}|�|d�|�tjjd��|�d�Wd�n1sZ0YdS)N�user�passrpr��UTF8=ACCEPT)	r�rC�loginrr�rr2r/r��rr�r��typ�datarrr�.test_enable_UTF8_raises_error_if_not_supported$s
�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�NrpzENABLE successful�r\rtrrr�
cmd_ENABLE/szSNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_ENABLEcss&|�d�dV|j_|�|dd�dS�N�+rpzFAKEAUTH successful�rWrG�responser\rtrrr�cmd_AUTHENTICATE1s

zYNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_AUTHENTICATEcss&|�d�dV|j_|�|dd�dS�Nr�rpZokayr�rtrrr�
cmd_APPEND5s

zSNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_APPENDN)r8r9r:rrr�r�r�rrrr�UTF8AppendServer-sr��ascii�MYAUTHcSsdS�Nsfaker��xrrr�<lambda>;r]z@NewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.<lambda>rp�
ZmFrZQ==
r��utf-8�Subject: üñí©öðé�UTF8 (%s)
)	rCr�r�	_encoding�authenticater�r��appendrV)	rr�r�rGr[r��
msg_stringr�r�rrr�test_enable_UTF8_True_append,s�z.NewIMAPTestsMixin.test_enable_UTF8_True_appendcCs�Gdd�dt�}|�|�\}}|�ddd��\}}|�|d�|�d�\}}|�|d�|�|j�|�tj	j
d��|�d	d
�Wd�n1s�0YdS)Nc@s eZdZdZdd�Zdd�ZdS)zPNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Serverr�cSs|�|dd�dSr�r�rtrrrr�Jsz[NewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Server.cmd_ENABLEcss&|�d�dV|j_|�|dd�dSr�r�rtrrrr�Ls

zaNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Server.cmd_AUTHENTICATEN�r8r9r:rrr�r�rrrr�
UTF8ServerHsr�r�cSsdSr�rr�rrrr�Qr]zNNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.<lambda>rpr�z
charset.*UTF8r��bar)rCr�r�rr��
assertTruer�r�rr2r/�search)rr�r�r�r�rrr�*test_search_disallows_charset_in_utf8_modeGsz<NewIMAPTestsMixin.test_search_disallows_charset_in_utf8_modecCsbGdd�dt�}|�|�\}}|�tjjd�� |�ddd��Wd�n1sT0YdS)Nc@seZdZdd�ZdS)z6NewIMAPTestsMixin.test_bad_auth_name.<locals>.MyServercSs|�|dd�|d��dS�N�NOz#unrecognized authentication type {}r�r\�formatrtrrrr�[s�zGNewIMAPTestsMixin.test_bad_auth_name.<locals>.MyServer.cmd_AUTHENTICATEN�r8r9r:r�rrrr�MyServerZsr�z'unrecognized authentication type METHOD�METHODcSsdS�Nrrrrrrr�ar]z6NewIMAPTestsMixin.test_bad_auth_name.<locals>.<lambda>�rCr�r�rr2r/r��rr�r�r�rrr�test_bad_auth_nameYs
�z$NewIMAPTestsMixin.test_bad_auth_namecCsbGdd�dt�}|�|�\}}|�tjjd�� |�ddd��Wd�n1sT0YdS)Nc@seZdZdd�ZdS)z?NewIMAPTestsMixin.test_invalid_authentication.<locals>.MyServercss$|�d�dV|_|�|dd�dS�Nr�r�z[AUTHENTICATIONFAILED] invalid�rWr�r\rtrrrr�es
zPNewIMAPTestsMixin.test_invalid_authentication.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�dsr�z \[AUTHENTICATIONFAILED\] invalidr�cSsdSr�rr�rrrr�lr]z?NewIMAPTestsMixin.test_invalid_authentication.<locals>.<lambda>r�r�rrr�test_invalid_authenticationcs
�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�rtrrrr�ps

zTNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�osr�r�cSsdSr�rr�rrrr�ur]zCNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.<lambda>rpr��rCr�r�rr��rr�r�rGr[r�rrr�test_valid_authentication_bytesns
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�rtrrrr�{s

zYNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�zsr�r�cSsdS�NZfakerr�rrrr��r]zHNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.<lambda>rpr�r�r�rrr�$test_valid_authentication_plain_textys
z6NewIMAPTestsMixin.test_valid_authentication_plain_text�md5�ZopensslcCsNGdd�dt�}|�|�\}}|�d|jv�|�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
rpzCRAM-MD5 successfulr�z	No access�rWr\�rrZrm�rrrrr��s

zQNewIMAPTestsMixin.test_login_cram_md5_bytes.<locals>.AuthHandler.cmd_AUTHENTICATEN�r8r9r:rrr�rrrr�AuthHandler�sr��
AUTH=CRAM-MD5�tim�tanstaaftanstaafrp�rCr�r�rr�login_cram_md5r�rr�r�r��retrrr�test_login_cram_md5_bytes�s
z+NewIMAPTestsMixin.test_login_cram_md5_bytescCsNGdd�dt�}|�|�\}}|�d|jv�|�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��tanstaaftanstaafrpr�r�rrr�test_login_cram_md5_plain_text�s
z0NewIMAPTestsMixin.test_login_cram_md5_plain_textcCsbGdd�dt�}|�|�\}}|�tjjd�� |�ddd��Wd�n1sT0YdS)Nc@seZdZdd�ZdS)z?NewIMAPTestsMixin.test_aborted_authentication.<locals>.MyServercss>|�d�dV|_|jdkr,|�|dd�n|�|dd�dS�Nr�s*
r�z[AUTHENTICATIONFAILED] abortedrpzMYAUTH successfulr�rtrrrr��s

�zPNewIMAPTestsMixin.test_aborted_authentication.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr��sr�z \[AUTHENTICATIONFAILED\] abortedr�cSsdSr*rr�rrrr��r]z?NewIMAPTestsMixin.test_aborted_authentication.<locals>.<lambda>r�r�rrr�test_aborted_authentication�s
�z-NewIMAPTestsMixin.test_aborted_authenticationzimaplib._MAXLINE�
cCsbGdd�dt�}|j|dd�\}}|�tjjd��|j|j�Wd�n1sT0YdS)Nc@seZdZdd�ZdS)z:NewIMAPTestsMixin.test_linetoolong.<locals>.TooLongHandlercSs|j�d�dS)Ns* OK xxxxxxxxxxx
r�rrrrrn�szANewIMAPTestsMixin.test_linetoolong.<locals>.TooLongHandler.handleNr�rrrr�TooLongHandler�srFr�zgot more than 10 bytes)rCr�r�rr2r/r�r�)rrr�rGrrr�test_linetoolong�s
�z"NewIMAPTestsMixin.test_linetoolongcCsB|jtdd�\}}|j|j��Wd�n1s40YdS)NFr�)r�rCr�r�)rr�rGrrr�test_simple_with_statement�sz,NewIMAPTestsMixin.test_simple_with_statementcCs�|�t�\}}|jd}|jd|dd�}|�|jjd�|��|jd|tj	d�}|�|jjtj	�|��|�
t�� |jd|dd�}Wd�n1s�0YdS)Nr�	localhost�r|r)r�rCr�r�rZsockr|r�rr{r0�
ValueError)rr�rG�addrr�rrr�test_imaplib_timeout_test�s
z+NewIMAPTestsMixin.test_imaplib_timeout_testcCshGdd�dt�}|�|�\}}|jd}|�tj�� |jd|dd�}Wd�n1sZ0YdS)Nc@seZdZdd�ZdS)zQNewIMAPTestsMixin.test_imaplib_timeout_functionality_test.<locals>.TimeoutHandlercSst�d�t�|�dSr�)r�sleeprCrnrrrrrn�s
zXNewIMAPTestsMixin.test_imaplib_timeout_functionality_test.<locals>.TimeoutHandler.handleNr�rrrr�TimeoutHandler�srrr	g����MbP?r
)rCr�r�r0r-r|r�)rrr�rGrr�rrr�'test_imaplib_timeout_functionality_test�s

z9NewIMAPTestsMixin.test_imaplib_timeout_functionality_testcCsh|jtdd�\}}|j|j��*}|�dd�|�|jd�Wd�n1sN0Y|�|j�dS�NFr�r�r�)r�rCr�r�r�rrI�assertIsNone�rr�rG�imaprrr�test_with_statement�s
,z%NewIMAPTestsMixin.test_with_statementcCs||jtdd�\}}|j|j��>}|�dd�|�|jd�|��|�|j�Wd�n1sb0Y|�|j�dSr)	r�rCr�r�r�rrI�logoutrrrrr�test_with_statement_logout�s*z,NewIMAPTestsMixin.test_with_statement_logoutcCsL|�t�\}}|�dd�\}}|�|d�|�|dd�|�|jd�dS)Nr�r�rpr�LOGIN completed�AUTH)r�rCr�rr�r�rrr�
test_login�s
zNewIMAPTestsMixin.test_logincCs�|�t�\}}|�dd�\}}|�|d�|�|dd�|��\}}|�|d||f�|�|dd||f�|�|jd�dS)	Nr�r�rprr�BYEsIMAP4ref1 Server logging outr�)r�rCr�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 () "." directoryArpzLSUB completedr�rtrrr�cmd_LSUBs
z5NewIMAPTestsMixin.test_lsub.<locals>.LsubCmd.cmd_LSUBN)r8r9r:rrrrr�LsubCmdsrr�r�rprs() "." directoryA)rCr�r�Zlsubr)rrr�r�r�r�rrr�	test_lsubszNewIMAPTestsMixin.test_lsubcCs||�t�\}}|�dd�|��\}}|�|d�|�|dd�|��\}}|�|d�|�|dd�|�|jd�dS)Nr�r�rpr�2s*Returned to authenticated state. (Success)r)r�rCr��selectrZunselectr�r�rrr�
test_unselectszNewIMAPTestsMixin.test_unselect)T)"r8r9r:r�r�r�r�r�r�r�r�r�r�r�r�r�r�r
�requires_hashdigestrrrr�patchrrr
rrrrrrr"rrrrr~�s<
!			






r~c@seZdZejZejZdS)�NewIMAPTestsN)	r8r9r:rr2r�r��	TCPServerr�rrrrr%sr%zSSL not availablec@s0eZdZeZeZdd�Zdd�Ze	dd��Z
dS)�NewIMAPSSLTestscCs�t�tj�}|�|jtj�|�|jd�|�t�|�	tj
d��8|�t�\}}|j
|jd|i�}|��Wd�n1s�0YdS)NT�=IP address mismatch, certificate is not valid for '127.0.0.1'�ssl_context)r<r=�PROTOCOL_TLS_CLIENTr�verify_modeZ
CERT_REQUIRED�check_hostname�load_verify_locations�CAFILEr��CertificateErrorr�rCr�r�r��rr)r�rGr�rrr�test_ssl_raises&s
�
�zNewIMAPSSLTests.test_ssl_raisescCsFt�tj�}|�t�|�t�\}}|jd|jd|d�}|�	�dS)Nr	r�r))
r<r=r*r-r.r�rCr�r�r�r0rrr�test_ssl_verified4s
�z!NewIMAPSSLTests.test_ssl_verifiedc
Cs�t�dtf���tj�|jd��Ptj�|jd�� |jddtd�Wd�n1sX0YWd�n1sv0YWd�n1s�0YdS)Nr,�openZ_connectr	�)�certfile)rZcheck_warnings�DeprecationWarningrr$�objectr�r?rrrr�test_certfile_arg_warn?sz&NewIMAPSSLTests.test_certfile_arg_warnN)r8r9r:�	IMAP4_SSLr�r;r�r1r3r	r9rrrrr'!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"��Zeejd#d$d%�d&d'���Zed(d)��Z d*d+�Z!ed,d-��Z"ed.d/��Z#ed0d1��Z$ed2d3��Z%d4S)5�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*rr�rrrr�Ms
zAThreadedNetworkedTests.make_server.<locals>.MyServer.handle_errorNr�rrrrr�Lsr�zcreating serverzserver createdzADDR =zCLASS =zHDLR =z
%s servingr�r�r�Tzserver running)
r�rrLrr�r-ZgetsocknameZRequestHandlerClassr�r�r�r�r�)rr�hdlrr�rGr(rrr�make_serverJs(

�z"ThreadedNetworkedTests.make_servercCs4trtd�|��|��|��tr0td�dS)Nzwaiting for serverZdone)rrLr�r�rY)rrGr�rrr�reap_serverjsz"ThreadedNetworkedTests.reap_serverc
cs@|�tjdf|�\}}z|VW|�||�n|�||�0dS)Nr)r=rr�r>)rr<rGr�rrr�
reaped_serverssz$ThreadedNetworkedTests.reaped_serverc	cs\|�|��>}|j|j�}z||fVW|��n
|��0Wd�n1sN0YdSr*)r?r�r�r)rr<rGr�rrr�reaped_pair{s
z"ThreadedNetworkedTests.reaped_paircCsB|�t��$}|j|j�}|��Wd�n1s40YdSr*)r?rCr�r�r��rrGr�rrr�test_connect�sz#ThreadedNetworkedTests.test_connectcCs�Gdd�dt�}|�|���\}}|�ddd��\}}|�|d�|�|jd�|�d�|�d	d
d�\}\}|�d|�|�d�|�d
�\}\}|�d|�Wd�n1s�0YdS)Ncs4eZdZ�fdd�Zdd�Zdd�Zdd�Z�ZS)	zEThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandlercsgd�|_t���dS)N)ZAnsweredZFlaggedZDeletedZSeenZDraft)�flagsrErnrrJrrrn�s
zLThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.handlecss&|�d�dV|j_|�|dd�dSr�r�rtrrrr��s

zVThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_AUTHENTICATEcSs^d�|j�}|�d|�d��|�d�|�d�d|}|�|�d��|�|dd�dS)	N� \z* FLAGS (%s)r�rws
* 0 RECENTz-* OK [PERMANENTFLAGS %s \*)] Flags permitted.rprx)rYrCrTrVr\)rrZrmZflag_msg�msgrrrry�s

�zPThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_SELECTcSsf|d�d��d���}|j�|�dd�|j�}d|d|f}|�|�d��|�|d	d
�dS)Nr^�(�)z(FLAGS (%s))rDz
* %s FETCH %srr�rpzSTORE completed.)rMrfrC�extendrYrTrVr\)rrZrmZ	new_flagsZ	flags_msgrErrr�	cmd_STORE�szOThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_STORE)r8r9r:rnr�ryrIr}rrrJr�BracketFlagHandler�s
rJr�cSsdSr�rr�rrrr��r]z;ThreadedNetworkedTests.test_bracket_flags.<locals>.<lambda>rpr��test�1z+FLAGSz[test]s[test]ZPERMANENTFLAGS)rCr@r�rr�r!Zstorer3)rrJrGr�r[r�r�rrr�test_bracket_flags�s	

z)ThreadedNetworkedTests.test_bracket_flagscCs\Gdd�dtj�}|�|��,}|jtjj|jg|j�R�Wd�n1sN0YdS)Nc@seZdZdd�ZdS)z9ThreadedNetworkedTests.test_issue5949.<locals>.EOFHandlercSs|j�d�dSr�r�rrrrrn�sz@ThreadedNetworkedTests.test_issue5949.<locals>.EOFHandler.handleNr�rrrrr��sr�)	r�r�r?r0rr2r�r�r�)rr�rGrrr�test_issue5949�s
��z%ThreadedNetworkedTests.test_issue5949cCsZGdd�dt�}|�|��,}|jtjj|jg|j�R�Wd�n1sL0YdS)Nc@seZdZdd�ZdS)zGThreadedNetworkedTests.test_line_termination.<locals>.BadNewlineHandlercSs|�d�|�|dd�dSr�r�rtrrrrs�s
zVThreadedNetworkedTests.test_line_termination.<locals>.BadNewlineHandler.cmd_CAPABILITYNr�rrrrr��sr�)rCr?r0rr2r�r�r�)rr�rGrrrr��s
��z,ThreadedNetworkedTests.test_line_terminationc@s eZdZdZdd�Zdd�ZdS)z!ThreadedNetworkedTests.UTF8Serverr�cCs|�|dd�dSr�r�rtrrrr��sz,ThreadedNetworkedTests.UTF8Server.cmd_ENABLEccs&|�d�dV|j_|�|dd�dSr�r�rtrrrr��s

z2ThreadedNetworkedTests.UTF8Server.cmd_AUTHENTICATENr�rrrrr��sr�cCs`|�|j��@\}}|�|j�|�tjj|jd�|�|j�Wd�n1sR0YdS)Nr�)	r@r�r�r�r0rr2r/r�rArrrr��sz;ThreadedNetworkedTests.test_enable_raises_error_if_not_AUTHcCsXGdd�d|j�}|�|��(\}}|�tjj|jd�Wd�n1sJ0YdS)Nc@seZdZdZdS)zXThreadedNetworkedTests.test_enable_raises_error_if_no_capability.<locals>.NoEnableServerrNr�rrrr�NoEnableServer�srOr�)r�r@r0rr2r/r�)rrOrGr�rrrr��sz@ThreadedNetworkedTests.test_enable_raises_error_if_no_capabilityc	Cs�Gdd�dt�}|�tjj��d|�|��:\}}|�dd�\}}|�|d�|�d�Wd�n1sj0YWd�n1s�0YdS)Nc@seZdZdS)z\ThreadedNetworkedTests.test_enable_UTF8_raises_error_if_not_supported.<locals>.NonUTF8ServerNrBrrrr�
NonUTF8Server�srPr�r�rpr�)	rCr0rr2r/r@r�rr�)rrPrGr�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
��Wd�n1s�0YdS)
Nc@seZdZdd�ZdS)zMThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.UTF8AppendServercss&|�d�dV|j_|�|dd�dSr�r�rtrrrr��s

zXThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_APPENDN)r8r9r:r�rrrrr��sr�r�r�cSsdSr�rr�rrrr�r]zEThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.<lambda>rpr�r�r�r�r�)	r�r@rr�r�r�r�r�rV)	rr�rGr�r[r�r�r�r�rrrr��s(���z3ThreadedNetworkedTests.test_enable_UTF8_True_appendcCs�|�|j��p\}}|�ddd��\}}|�|d�|�d�\}}|�|d�|�|j�|�tj	j
|jdd�Wd�n1s�0YdS)Nr�cSsdSr�rr�rrrr�r]zSThreadedNetworkedTests.test_search_disallows_charset_in_utf8_mode.<locals>.<lambda>rpr�r�r�)r@r�r�rr�r�r�r0rr2r/r�)rrGr�r�r�rrrr�szAThreadedNetworkedTests.test_search_disallows_charset_in_utf8_modec	Cs�Gdd�dt�}|�|��R\}}|�tjj�� |�ddd��Wd�n1sT0YWd�n1sr0YdS)Nc@seZdZdd�ZdS)z;ThreadedNetworkedTests.test_bad_auth_name.<locals>.MyServercSs|�|dd�|d��dSr�r�rtrrrr�'s�zLThreadedNetworkedTests.test_bad_auth_name.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�%sr�r�cSsdSr�rrrrrr�-r]z;ThreadedNetworkedTests.test_bad_auth_name.<locals>.<lambda>�rCr@r0rr2r/r�)rr�rGr�rrrr�"sz)ThreadedNetworkedTests.test_bad_auth_namec	Cs�Gdd�dt�}|�|��V\}}|�tjj��$|�ddd��\}}Wd�n1sX0YWd�n1sv0YdS)Nc@seZdZdd�ZdS)zDThreadedNetworkedTests.test_invalid_authentication.<locals>.MyServercss$|�d�dV|_|�|dd�dSr�r�rtrrrr�4s
zUThreadedNetworkedTests.test_invalid_authentication.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�2sr�r�cSsdSr�rr�rrrr�;r]zDThreadedNetworkedTests.test_invalid_authentication.<locals>.<lambda>rQ�rr�rGr�r[r�rrrr�/sz2ThreadedNetworkedTests.test_invalid_authenticationcCs�Gdd�dt�}|�|��B\}}|�ddd��\}}|�|d�|�|jd�Wd�n1sb0Y|�|��B\}}|�ddd��\}}|�|d�|�|jd�Wd�n1s�0YdS)	Nc@seZdZdd�ZdS)zBThreadedNetworkedTests.test_valid_authentication.<locals>.MyServercss&|�d�dV|j_|�|dd�dSr�r�rtrrrr�Bs

zSThreadedNetworkedTests.test_valid_authentication.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�@sr�r�cSsdSr�rr�rrrr�Hr]zBThreadedNetworkedTests.test_valid_authentication.<locals>.<lambda>rpr�cSsdSr�rr�rrrr�Nr])rCr@r�rr�rRrrr�test_valid_authentication=s�"�z0ThreadedNetworkedTests.test_valid_authenticationr�Tr�cCs�Gdd�dt�}|�|��@\}}|�d|jv�|�dd�\}}|�|d�Wd�n1s`0Y|�|��@\}}|�d|jv�|�dd�\}}|�|d�Wd�n1s�0YdS)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�Wsr�r�r�rrpr�)rCr@r�rrr�r)rr�rGr�r�r�rrr�test_login_cram_md5Ss*z*ThreadedNetworkedTests.test_login_cram_md5c	Cs�Gdd�dt�}|�|��V\}}|�tjj��$|�ddd��\}}Wd�n1sX0YWd�n1sv0YdS)Nc@seZdZdd�ZdS)zDThreadedNetworkedTests.test_aborted_authentication.<locals>.MyServercss>|�d�dV|_|jdkr,|�|dd�n|�|dd�dSrr�rtrrrr�us


zUThreadedNetworkedTests.test_aborted_authentication.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�ssr�r�cSsdSr*rr�rrrr��r]zDThreadedNetworkedTests.test_aborted_authentication.<locals>.<lambda>rQrRrrrrpsz2ThreadedNetworkedTests.test_aborted_authenticationcCsZGdd�dt�}|�|��,}|jtjj|jg|j�R�Wd�n1sL0YdS)Nc@seZdZdd�ZdS)z?ThreadedNetworkedTests.test_linetoolong.<locals>.TooLongHandlercSs|j�dtjdd�dS)Ns* OK �xrS)rNrOrZ_MAXLINErrrrrn�szFThreadedNetworkedTests.test_linetoolong.<locals>.TooLongHandler.handleNr�rrrrr�sr)rCr?r0rr2r/r�r�)rrrGrrrr�s
��z'ThreadedNetworkedTests.test_linetoolongcs�d�G�fdd�dt�}tdd�D]�}d|>�|�d�����t|�|��J}|�tjj��|j|j	�Wd�n1s|0YWd�n1s�0YWd�q"1s�0Yq"dS)NrcseZdZ�fdd�ZdS)zGThreadedNetworkedTests.test_truncated_large_literal.<locals>.BadHandlercs|�d��|�d�dS)Nz	* OK {%d}ro)rWr��sizerrrn�szNThreadedNetworkedTests.test_truncated_large_literal.<locals>.BadHandler.handleNr�rrVrr�
BadHandler�srX��@rzsize=2e)
rC�rangeZsubTestr?r0rr2r�r�r�)rrXZexponentrGrrVr�test_truncated_large_literal�sz3ThreadedNetworkedTests.test_truncated_large_literalc	CsZ|�t��<}|j|j��Wd�n1s.0YWd�n1sL0YdSr*)r?rCr�r�)rrGrrrr�sz1ThreadedNetworkedTests.test_simple_with_statementc	Cs�|�t��b}|j|j��*}|�dd�|�|jd�Wd�n1sH0Y|�|j�Wd�n1sr0YdS�Nr�r�)r?rCr�r�r�rrIr�rrGrrrrr�s
,z*ThreadedNetworkedTests.test_with_statementc	Cs�|�t��v}|j|j��>}|�dd�|�|jd�|��|�|j�Wd�n1s\0Y|�|j�Wd�n1s�0YdSr])	r?rCr�r�r�rrIrrr^rrrr�s*z1ThreadedNetworkedTests.test_with_statement_logoutN)&r8r9r:r�r&r�rr2r�r=r>rr?r@rrBrMrNr�rCr�r�r�r�r�r�r�r�rSr
r#rTrrr\rrrrrrrr;Fs^ 	



0







	








r;c@s eZdZeZeZedd��ZdS)�ThreadedNetworkedTestsSSLc	Cs�t�tj�}|�t�|�tjd��T|�t��*}|j	|j
d|i�}|��Wd�n1s`0YWd�n1s~0Y|�t��.}|j	d|j
d|d�}|��Wd�n1s�0YdS)Nr(r)r	rr2)r<r=r*r-r.r�r/r?rCr�r�r�)rr)rGr�rrrr3�s 
�
�D�z+ThreadedNetworkedTestsSSL.test_ssl_verifiedN)	r8r9r:r;r�r:r�rr3rrrrr_�sr_Znetworkznetwork resource disabledz'cyrus.andrew.cmu.edu blocks connectionsc@sBeZdZdZdZdZdZejZ	dd�Z
dd�Zd	d
�Zdd�Z
d
S)�RemoteIMAPTestzcyrus.andrew.cmu.edur5Z	anonymousr�cCsBt�|j��"|�|j|j�|_Wd�n1s40YdSr*)r�transient_internet�hostr��portrGrrrr�setUp�szRemoteIMAPTest.setUpcCsD|jdur@t�|j��|j��Wd�n1s60YdSr*)rGrrarbrrrrr�tearDown�s
zRemoteIMAPTest.tearDowncCs�t�|j��l|jjD]}|�|t�q|�d|jj�|�d|jj�|j�|j	|j
�}|�|dd�Wd�n1s~0YdS)N�
LOGINDISABLEDzAUTH=ANONYMOUSrrp)rrarbrGrr�assertIsInstance�strr3r��username�passwordr)r�cap�rsrrr�test_logincapa�szRemoteIMAPTest.test_logincapacCsRt�|j��2|j��}d|_|�|dd|�Wd�n1sD0YdS�Nrr)rrarbrGrr�rrlrrrr�s
zRemoteIMAPTest.test_logoutN)r8r9r:rbrcrirjrr2r�rdrermrrrrrr`�s	r`cs$eZdZ�fdd�Zdd�Z�ZS)�RemoteIMAP_STARTTLSTestcsTt���t�|j��*|j��}|�|dd�Wd�n1sF0YdS)Nrrp)rErdrrarbrGZstarttlsrrorJrrrd�s

zRemoteIMAP_STARTTLSTest.setUpcCs.|jjD]}|�|t�q|�d|jj�dS)Nrf)rGrrrgrh�assertNotIn)rrkrrrrm�sz&RemoteIMAP_STARTTLSTest.test_logincapa)r8r9r:rdrmr}rrrJrrp�srpc@sTeZdZdZeZdd�Zdd�Zdd�Zdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dS)�RemoteIMAP_SSLTesti�cCsdSr*rrrrrrdszRemoteIMAP_SSLTest.setUpcCsdSr*rrrrrreszRemoteIMAP_SSLTest.tearDowncCs(t�tj�}d|_tj|_|�t�|SrD)r<r=r*r,Z	CERT_NONEr+r>r?)rr)rrr�create_ssl_contexts

z%RemoteIMAP_SSLTest.create_ssl_contextcCspz`|jD]}|�|t�q|�d|j�|�d|j�|�|j|j�}|�|dd�W|�	�n
|�	�0dS)Nrfz
AUTH=PLAINrrp)
rrrgrhrqr3r�rirjrr)rrGrkrlrrr�check_logincapas
z"RemoteIMAP_SSLTest.check_logincapacCsJt�|j��*|�|j|j�}|�|�Wd�n1s<0YdSr*)rrarbr�rcrt)r�_serverrrrrm#sz!RemoteIMAP_SSLTest.test_logincapacCsZt�|j��:|�|j|j�}|��}|�|dd|�Wd�n1sL0YdSrn)rrarbr�rcrr)rrurlrrrr(szRemoteIMAP_SSLTest.test_logoutc	CsPt�|j��0|jt|j|j|jt|��d�Wd�n1sB0YdS)N)r6r)�	rrarbr0rr�rcr?rsrrrr�#test_ssl_context_certfile_exclusive.s
�z6RemoteIMAP_SSLTest.test_ssl_context_certfile_exclusivec	CsPt�|j��0|jt|j|j|jt|��d�Wd�n1sB0YdS)N)Zkeyfiler)rvrrrr�"test_ssl_context_keyfile_exclusive4s
�z5RemoteIMAP_SSLTest.test_ssl_context_keyfile_exclusiveN)r8r9r:rcr:r�rdrersrtrmrrwrxrrrrrrsrr�__main__)6rKrZtest.supportr�
contextlibrrZos.path�osr�rrr�r-rrrrr	r
Zunittestrrr
rr<�ImportError�pathrY�dirname�__file__�curdirr?r.ZTestCaserr&r;r:r�rCr~r%Z
skipUnlessr'r;r_Zis_resource_enabled�skipr`rprrr8�mainrrrr�<module>sl
@	_O
$s

� 

�
4