Your IP : 216.73.216.196


Current Path : /opt/alt/python310/lib64/python3.10/test/__pycache__/
Upload File :
Current File : //opt/alt/python310/lib64/python3.10/test/__pycache__/test_imaplib.cpython-310.pyc

o

0�i���@s�ddlmZddlmZddlmZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZmZmZmZddlmZddlmZddlmZddlZdd	lmZdd
lmZmZmZzddlZWneyqdZYnwej�ej�e�p}ej d�Z!ej�ej�e�p�ej d�Z"Gd
d�dej#�Z$er�Gdd�de	j%�Z&ej'Z'n	Gdd�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�0d�d �e�1d!�Gd"d#�d#ej#���Z2e�,ed�e�,e�0d�d �e�1d!�Gd$d%�d%e2����Z3e�,ed�e�1d!�Gd&d'�d'e2���Z4e5d(k�rAe�6�dSdS))�)�support)�
socket_helper)�contextmanagerN)�verbose�run_with_tz�run_with_locale�cpython_only)�hashlib_helper)�threading_helper)�warnings_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�8/opt/alt/python310/lib64/python3.10/test/test_imaplib.py�test_Internaldate2tuple s
���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)	rr r!r r"r#rrrri �"18-May-2033 05:33:20 +0200")r�	localtimer
Z
fromtimestamprrrrrr�
timevalues3s��zTestImaplib.timevalues�LC_ALLZde_DEZfr_FRzSTD-1DST,M3.2.0,M11.1.0cCs,d}|��D]
}t�|�}|�||�qdS)Nr$)r&r�Time2Internaldater)rZexpected�tZinternalrrr�test_Time2Internaldate;s

�z"TestImaplib.test_Time2InternaldatecCs|��D]}t�|�qdS�N)r&rr()rr)rrr�,test_that_Time2Internaldate_returns_a_resultFs�z8TestImaplib.test_that_Time2Internaldate_returns_a_resultc	Cs�t���"}z|�dtjf�|�d�Wn
tjyYnwWd�n1s)wYt��}|�t	��}t�
�Wd�n1sFwY|�|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_valueMs 
����	
�z)TestImaplib.test_imap4_host_default_valueN)�__name__�
__module__�__qualname__rrrr&rr*r,r8rrrrrs

rc@�eZdZdd�ZdS)�SecureTCPServercCs:|j��\}}t�tj�}|�t�|j|dd�}||fS)NT)Zserver_side)r.Zaccept�ssl�
SSLContextZPROTOCOL_TLS_SERVER�load_cert_chain�CERTFILEZwrap_socket)rZ	newsocketZfromaddr�contextZ
connstreamrrr�get_requestas

zSecureTCPServer.get_requestN)r9r:r;rCrrrrr=_�r=c@�eZdZdS)r=N�r9r:r;rrrrr=l�cszeZdZejZdZdZ�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__rrrKws
zSimpleIMAPHandler.setupcCs$tr
td|���|j�|�dS)NzSENT: %r)r�print�strip�wfile�write�r�messagerrr�_send|szSimpleIMAPHandler._sendcCs|�|d�dS)N�
)rWrUrrr�
_send_line��zSimpleIMAPHandler._send_linecCs|�|�d��dS)N�ASCII)rY�encoderUrrr�_send_textline�sz SimpleIMAPHandler._send_textlinecCs|�d�|||f��dS)N� )r]�join)r�tag�coderVrrr�_send_tagged�szSimpleIMAPHandler._send_taggedcCs|�d�	d}	z|j�d�}|dkrWdS||7}Wn
ty&YdSw|�d�r-nq	tr8td|���|jrQz|j�	|�Wnt
yOd|_Ynwq|�d���}|d}|d}|dd�}t
|d	|�r�t|d	|�||�}|r�||_t|�n	|�|d
|d�q)Nz* OK IMAP4rev1r�rXzGOT: %rr[r�Zcmd_�BADz unknown)r]Zrfile�readr2�endswithrrQrR�continuation�send�
StopIteration�decode�split�hasattr�getattr�nextrb)r�line�partZ	splitliner`�cmd�argsrhrrr�handle�sH
�
�

���zSimpleIMAPHandler.handlecCs4|jrd|jnd}|�d|�|�|dd�dS)Nz
IMAP4rev1 �	IMAP4rev1z
* CAPABILITY �OK�CAPABILITY completed)�capabilitiesr]rb)rr`rsZcapsrrr�cmd_CAPABILITY�s��z SimpleIMAPHandler.cmd_CAPABILITYcCs$d|j_|�d�|�|dd�dS)Nz"* BYE IMAP4ref1 Server logging outrvzLOGOUT completed)rLrNr]rb�rr`rsrrr�
cmd_LOGOUT��
zSimpleIMAPHandler.cmd_LOGOUTcCs|d|j_|�|dd�dS)NrrvzLOGIN completed)rLrNrbrzrrr�	cmd_LOGIN�szSimpleIMAPHandler.cmd_LOGINcCs$d|j_|�d�|�|dd�dS)NT�
* 2 EXISTSrv�[READ-WRITE] SELECT completed.)rLrMrYrbrzrrr�
cmd_SELECT�r|zSimpleIMAPHandler.cmd_SELECTcCs4|jjrd|j_|�|dd�dS|�|dd�dS)NFrvz*Returned to authenticated state. (Success)rezNo mailbox selected)rLrMrbrzrrr�cmd_UNSELECT�szSimpleIMAPHandler.cmd_UNSELECT)r9r:r;r�LOOPBACK_TIMEOUT�timeoutrhrxrKrWrYr]rbrtryr{r}r�r��
__classcell__rrrOrrHrs*rHc@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
��|r<|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@r<)z/NewIMAPTestsMixin._setup.<locals>.TestTCPServercS�|�|�|���)zP
                End request and raise the error if one occurs.
                �Z
close_request�server_close�rZrequestZclient_addressrrr�handle_error�s
z<NewIMAPTestsMixin._setup.<locals>.TestTCPServer.handle_errorN�r9r:r;r�rrrr�
TestTCPServer��r�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_handlerr/r�rrr�_setup�s	�
zNewIMAPTestsMixin._setupcCsJ|jdur|jjdkr|j��|j��|j��t�|j�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�LOGOUT)r��state�shutdownrLr�r
Zjoin_threadr�rrrrr��s



zNewIMAPTestsMixin._cleanupcCsDGdd�dtj�}|j|dd�\}}|jtjj|jg|j�R�dS)Nc@r<)zONewIMAPTestsMixin.test_EOF_without_complete_welcome_message.<locals>.EOFHandlercS�|j�d�dS�Ns* OK�rSrTrrrrrtszVNewIMAPTestsMixin.test_EOF_without_complete_welcome_message.<locals>.EOFHandler.handleN�r9r:r;rtrrrr�
EOFHandlerr�r�F�r/)	�socketserver�StreamRequestHandlerr�r1rr3�abortr�r�)rr��_rLrrr�)test_EOF_without_complete_welcome_messages
�z;NewIMAPTestsMixin.test_EOF_without_complete_welcome_messagecCsBGdd�dt�}|j|dd�\}}|jtjj|jg|j�R�dS)Nc@r<)zBNewIMAPTestsMixin.test_line_termination.<locals>.BadNewlineHandlercS�|�d�|�|dd�dS�Ns* CAPABILITY IMAP4rev1 AUTH
rvrw�rWrbrzrrrry�
zQNewIMAPTestsMixin.test_line_termination.<locals>.BadNewlineHandler.cmd_CAPABILITYN�r9r:r;ryrrrr�BadNewlineHandlerr�r�Fr�)rHr�r1rr3r�r�r�)rr�r�rLrrr�test_line_terminations
�z'NewIMAPTestsMixin.test_line_terminationcCstGdd�dt�}|�|�\}}|�|j�|�tjjd��
|�d�Wd�n1s-wY|�|j�dS)Nc@�eZdZdZdS)zMNewIMAPTestsMixin.test_enable_raises_error_if_not_AUTH.<locals>.EnableHandler�AUTH ENABLE UTF8=ACCEPTN�r9r:r;rxrrrr�
EnableHandler�r�zENABLE.*NONAUTH�foo)	rHr��assertFalse�utf8_enabled�assertRaisesRegexrr3r0�enable)rr�r�r�rrr�$test_enable_raises_error_if_not_AUTHs�z6NewIMAPTestsMixin.test_enable_raises_error_if_not_AUTHcCsN|�t�\}}|�tjjd��|�d�Wd�dS1s wYdS)N�does not support ENABLEr�)r�rHr�rr3r0r�)rr�r�rrr�)test_enable_raises_error_if_no_capability s
�"�z;NewIMAPTestsMixin.test_enable_raises_error_if_no_capabilitycCsj|�t�\}}|�dd�\}}|�|d�|�tjjd��|�d�Wd�dS1s.wYdS)N�user�passrvr��UTF8=ACCEPT)	r�rH�loginrr�rr3r0r��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=ACCEPTcS�|�|dd�dS�NrvzENABLE successful�rbrzrrr�
cmd_ENABLE1rZzSNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_ENABLEcs�(�|�d�dV|j_|�|dd�dS�N�+rvzFAKEAUTH successful�r]rL�responserbrzrrr�cmd_AUTHENTICATE3��

zYNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_AUTHENTICATEcsr��Nr�rvZokayr�rzrrr�
cmd_APPEND7r�zSNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_APPENDN)r9r:r;rxr�r�r�rrrr�UTF8AppendServer/s
r��ascii�MYAUTHcS�dS�Nsfaker��xrrr�<lambda>=�z@NewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.<lambda>rv�
ZmFrZQ==
r��utf-8�Subject: üñí©öðé�UTF8 (%s)
)	rHr�r�	_encoding�authenticater�r��appendr\)	rr�r�rLrar��
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�dS1sLwYdS)Nc@� eZdZdZdd�Zdd�ZdS)zPNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Serverr�cSr�r�r�rzrrrr�LrZz[NewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Server.cmd_ENABLEcsr�r�r�rzrrrr�Nr�zaNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Server.cmd_AUTHENTICATEN�r9r:r;rxr�r�rrrr�
UTF8ServerJsr�r�cSr�r�rr�rrrr�Sr�zNNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.<lambda>rvr�z
charset.*UTF8r��bar)rHr�r�rr��
assertTruer�r�rr3r0�search)rr�r�r�r�rrr�*test_search_disallows_charset_in_utf8_modeIs"�z<NewIMAPTestsMixin.test_search_disallows_charset_in_utf8_modecC�dGdd�dt�}|�|�\}}|�tjjd��|�ddd��Wd�dS1s+wYdS)Nc@r<)z6NewIMAPTestsMixin.test_bad_auth_name.<locals>.MyServercS�|�|dd�|d��dS�N�NOz#unrecognized authentication type {}r�rb�formatrzrrrr�]s�zGNewIMAPTestsMixin.test_bad_auth_name.<locals>.MyServer.cmd_AUTHENTICATEN�r9r:r;r�rrrr�MyServer\r�r�z'unrecognized authentication type METHOD�METHODcSr��Nrrrrrrr�cr�z6NewIMAPTestsMixin.test_bad_auth_name.<locals>.<lambda>�rHr�r�rr3r0r��rr�r�r�rrr�test_bad_auth_name[s
�"�z$NewIMAPTestsMixin.test_bad_auth_namecCr�)Nc@r<)z?NewIMAPTestsMixin.test_invalid_authentication.<locals>.MyServercs�&�|�d�dV|_|�|dd�dS�Nr�r�z[AUTHENTICATIONFAILED] invalid�r]r�rbrzrrrr�g��
zPNewIMAPTestsMixin.test_invalid_authentication.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�fr�r�z \[AUTHENTICATIONFAILED\] invalidr�cSr�r�rr�rrrr�nr�z?NewIMAPTestsMixin.test_invalid_authentication.<locals>.<lambda>r�r�rrr�test_invalid_authenticationes
�"�z-NewIMAPTestsMixin.test_invalid_authenticationcC�PGdd�dt�}|�|�\}}|�ddd��\}}|�|d�|�|jd�dS)Nc@r<)zCNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.MyServercsr�r�r�rzrrrr�rr�zTNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�qr�r�r�cSr�r�rr�rrrr�wr�zCNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.<lambda>rvr��rHr�r�rr��rr�r�rLrar�rrr�test_valid_authentication_bytesp�
z1NewIMAPTestsMixin.test_valid_authentication_bytescCr)Nc@r<)zHNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.MyServercsr�r�r�rzrrrr�}r�zYNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�|r�r�r�cSr��NZfakerr�rrrr��r�zHNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.<lambda>rvr�rrrrr�$test_valid_authentication_plain_text{rz6NewIMAPTestsMixin.test_valid_authentication_plain_text�md5�ZopensslcC�NGdd�dt�}|�|�\}}|�d|jv�|�dd�\}}|�|d�dS)Nc@�eZdZdZdd�ZdS)z@NewIMAPTestsMixin.test_login_cram_md5_bytes.<locals>.AuthHandler�LOGINDISABLED AUTH=CRAM-MD5cs�>�|�d�dV}|dkr|�|dd�dS|�|dd�dS�Nz:+ PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ=s2dGltIGYxY2E2YmU0NjRiOWVmYTFjY2E2ZmZkNmNmMmQ5ZjMy
rvzCRAM-MD5 successfulr�z	No access�r]rb�rr`rs�rrrrr����
zQNewIMAPTestsMixin.test_login_cram_md5_bytes.<locals>.AuthHandler.cmd_AUTHENTICATEN�r9r:r;rxr�rrrr�AuthHandler��r�
AUTH=CRAM-MD5�tim�tanstaaftanstaafrv�rHr�r�rx�login_cram_md5r�rrr�r��retrrr�test_login_cram_md5_bytes��
z+NewIMAPTestsMixin.test_login_cram_md5_bytescCr)Nc@r
)zENewIMAPTestsMixin.test_login_cram_md5_plain_text.<locals>.AuthHandlerrcsrrrrrrrr��rzVNewIMAPTestsMixin.test_login_cram_md5_plain_text.<locals>.AuthHandler.cmd_AUTHENTICATENrrrrrr�rrrr�tanstaaftanstaafrvrrrrr�test_login_cram_md5_plain_text�r z0NewIMAPTestsMixin.test_login_cram_md5_plain_textcCr�)Nc@r<)z?NewIMAPTestsMixin.test_aborted_authentication.<locals>.MyServercs�B�|�d�dV|_|jdkr|�|dd�dS|�|dd�dS�Nr�s*
r�z[AUTHENTICATIONFAILED] abortedrvzMYAUTH successfulrrzrrrr��s�

�zPNewIMAPTestsMixin.test_aborted_authentication.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr��r�r�z \[AUTHENTICATIONFAILED\] abortedr�cS�dSr+rr�rrrr��r�z?NewIMAPTestsMixin.test_aborted_authentication.<locals>.<lambda>r�r�rrr�test_aborted_authentication�s
�"�z-NewIMAPTestsMixin.test_aborted_authenticationzimaplib._MAXLINE�
cCsdGdd�dt�}|j|dd�\}}|�tjjd��|j|j�Wd�dS1s+wYdS)Nc@r<)z:NewIMAPTestsMixin.test_linetoolong.<locals>.TooLongHandlercSr�)Ns* OK xxxxxxxxxxx
r�rrrrrt��zANewIMAPTestsMixin.test_linetoolong.<locals>.TooLongHandler.handleNr�rrrr�TooLongHandler�r�r)Fr�zgot more than 10 bytes)rHr�r�rr3r0r�r�)rr)r�rLrrr�test_linetoolong�s
�"�z"NewIMAPTestsMixin.test_linetoolongcCsD|jtdd�\}}|j|j��	Wd�dS1swYdS)NFr�)r�rHr�r�)rr�rLrrr�test_simple_with_statement�s"�z,NewIMAPTestsMixin.test_simple_with_statementcCs�|�t�\}}|jd}|jd|dd�}|�|jjd�|��|jd|tj	d�}|�|jjtj	�|��|�
t��|jd|dd�}Wd�dS1sOwYdS)Nr�	localhost�r�r)r�rHr�r�rZsockr�r�rr�r1�
ValueError)rr�rL�addrr�rrr�test_imaplib_timeout_test�s
"�z+NewIMAPTestsMixin.test_imaplib_timeout_testcCshGdd�dt�}|�|�\}}|jd}|�t��|jd|dd�}Wd�dS1s-wYdS)Nc@r<)zQNewIMAPTestsMixin.test_imaplib_timeout_functionality_test.<locals>.TimeoutHandlercSst�d�t�|�dSr�)r�sleeprHrtrrrrrt��
zXNewIMAPTestsMixin.test_imaplib_timeout_functionality_test.<locals>.TimeoutHandler.handleNr�rrrr�TimeoutHandler�r�r3rr,g����MbP?r-)rHr�r�r1�TimeoutErrorr�)rr3r�rLr/r�rrr�'test_imaplib_timeout_functionality_test�s
"�z9NewIMAPTestsMixin.test_imaplib_timeout_functionality_testcCsh|jtdd�\}}|j|j��}|�dd�|�|jd�Wd�n1s'wY|�|j�dS�NFr�r�r�)r�rHr�r�r�rrN�assertIsNone�rr�rL�imaprrr�test_with_statement�s�z%NewIMAPTestsMixin.test_with_statementcCs||jtdd�\}}|j|j��}|�dd�|�|jd�|��|�|j�Wd�n1s1wY|�|j�dSr6)	r�rHr�r�r�rrN�logoutr7r8rrr�test_with_statement_logout�s�z,NewIMAPTestsMixin.test_with_statement_logoutcCsL|�t�\}}|�dd�\}}|�|d�|�|dd�|�|jd�dS)Nr�r�rvr�LOGIN completed�AUTH)r�rHr�rr�r�rrr�
test_login�s
zNewIMAPTestsMixin.test_logincCs�|�t�\}}|�dd�\}}|�|d�|�|dd�|��\}}|�|d||f�|�|dd||f�|�|jd�dS)	Nr�r�rvrr=�BYEsIMAP4ref1 Server logging outr�)r�rHr�rr;r�r�rrr�test_logout�szNewIMAPTestsMixin.test_logoutcCsVGdd�dt�}|�|�\}}|�dd�|��\}}|�|d�|�|dd�dS)Nc@r<)z,NewIMAPTestsMixin.test_lsub.<locals>.LsubCmdcSs|�d�|�|dd�S)Nz* LSUB () "." directoryArvzLSUB completedrrzrrr�cmd_LSUBr2z5NewIMAPTestsMixin.test_lsub.<locals>.LsubCmd.cmd_LSUBN)r9r:r;rBrrrr�LsubCmdr�rCr�r�rvrs() "." directoryA)rHr�r�Zlsubr)rrCr�r�r�r�rrr�	test_lsubszNewIMAPTestsMixin.test_lsubcCs||�t�\}}|�dd�|��\}}|�|d�|�|dd�|��\}}|�|d�|�|dd�|�|jd�dS)Nr�r�rvr�2s*Returned to authenticated state. (Success)r>)r�rHr��selectrZunselectr�r�rrr�
test_unselectszNewIMAPTestsMixin.test_unselect)T)"r9r:r;r�r�r�r�r�r�r�r�r�r�r�rrr	r	�requires_hashdigestrr"r&r�patchr*r+r0r5r:r<r?rArDrGrrrrr��s>
!			






r�c@seZdZejZejZdS)�NewIMAPTestsN)	r9r:r;rr3r�r��	TCPServerr�rrrrrJs
rJzSSL not availablec@s0eZdZeZeZdd�Zdd�Ze	dd��Z
dS)�NewIMAPSSLTestscCs�t�tj�}|�|jtj�|�|jd�|�t�|�	tj
d��|�t�\}}|j
|jd|i�}|��Wd�dS1sAwYdS)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�rHr�r�r��rrNr�rLr�rrr�test_ssl_raises(s
�
�
"�zNewIMAPSSLTests.test_ssl_raisescCsFt�tj�}|�t�|�t�\}}|jd|jd|d�}|�	�dS)Nr,r�rN)
r>r?rOrRrSr�rHr�r�r�rUrrr�test_ssl_verified6s
�z!NewIMAPSSLTests.test_ssl_verifiedc
Cs�t�dtf��Itj�|jd��(tj�|jd��|jddtd�Wd�n1s,wYWd�n1s;wYWd�dSWd�dS1sSwYdS)Nr-�openZ_connectr,�)�certfile)rZcheck_warnings�DeprecationWarningrrI�objectr�rArrrr�test_certfile_arg_warnAs����"�z&NewIMAPSSLTests.test_certfile_arg_warnN)r9r:r;�	IMAP4_SSLr�r=r�rVrXrr^rrrrrL#srLc@szeZdZejZejZdd�Z	dd�Z
edd��Zedd��Z
ejd	d
��Zejdd��Zejd
d��Zejdd��ZGdd�de�Zejdd��Zejdd��Zejdd��Zejdd��Zejdd��Zejdd��Zejdd ��Zejd!d"��Zejejd#d$d%�d&d'���Z ejd(d)��Z!d*d+�Z"d,d-�Z#ejd.d/��Z$ejd0d1��Z%ejd2d3��Z&eje'e(�)d$d4�d5d6����Z*d7S)8�ThreadedNetworkedTestscCs�Gdd�d|j�}trtd�|||�}|�|j|j���tr5td�td|�td|j�td|j�tj	d|j|j
d	d
id�}d|_|��trPtd
�||fS)Nc@r<)z4ThreadedNetworkedTests.make_server.<locals>.MyServercSr�r+r�r�rrrr�Os
zAThreadedNetworkedTests.make_server.<locals>.MyServer.handle_errorNr�rrrrr�Nr�r�zcreating serverzserver createdzADDR =zCLASS =zHDLR =z
%s servingr�r�r�Tzserver running)
r�rrQrr�r.ZgetsocknameZRequestHandlerClassr�r�r�r�r�)rr/�hdlrr�rLr)rrr�make_serverLs(

�z"ThreadedNetworkedTests.make_servercCs8trtd�|��|��|��trtd�dSdS)Nzwaiting for serverZdone)rrQr�r�r_)rrLr�rrr�reap_serverls�z"ThreadedNetworkedTests.reap_serverc
cs@�|�tjdf|�\}}z|VW|�||�dS|�||�w)Nr)rbrr�rc)rrarLr�rrr�
reaped_serverus
�z$ThreadedNetworkedTests.reaped_serverc	cs`�|�|�� }|j|j�}z||fVW|��n|��wWd�dS1s)wYdSr+)rdr�r�r;)rrarLr�rrr�reaped_pair}s�"�z"ThreadedNetworkedTests.reaped_paircCsD|�t��}|j|j�}|��Wd�dS1swYdSr+)rdrHr�r�r��rrLr�rrr�test_connect�s
"�z#ThreadedNetworkedTests.test_connectcCs�Gdd�dt�}|�|��J\}}|�ddd��\}}|�|d�|�|jd�|�d�|�d	d
d�\}\}|�d|�|�d�|�d
�\}\}|�d|�Wd�dS1sZwYdS)Ncs4eZdZ�fdd�Zdd�Zdd�Zdd�Z�ZS)	zEThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandlercsgd�|_t���dS)N)ZAnsweredZFlaggedZDeletedZSeenZDraft)�flagsrJrtrrOrrrt�r2zLThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.handlecsr�r�r�rzrrrr��r�zVThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_AUTHENTICATEcSs^d�|j�}|�d|�d��|�d�|�d�d|}|�|�d��|�|dd�dS)	N� \z* FLAGS (%s)r�r~s
* 0 RECENTz-* OK [PERMANENTFLAGS %s \*)] Flags permitted.rvr)r_rhrYr\rb)rr`rsZflag_msg�msgrrrr��s

�zPThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_SELECTcSsf|d�d��d���}|j�|�dd�|j�}d|d|f}|�|�d��|�|d	d
�dS)Nrd�(�)z(FLAGS (%s))riz
* %s FETCH %srr�rvzSTORE completed.)rRrlrh�extendr_rYr\rb)rr`rsZ	new_flagsZ	flags_msgrjrrr�	cmd_STORE�szOThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_STORE)r9r:r;rtr�r�rnr�rrrOr�BracketFlagHandler�s

ror�cSr�r�rr�rrrr��r�z;ThreadedNetworkedTests.test_bracket_flags.<locals>.<lambda>rvr��test�1z+FLAGSz[test]s[test]ZPERMANENTFLAGS)rHrer�rr�rFZstorer4)rrorLr�rar�r�rrr�test_bracket_flags�s	

"�z)ThreadedNetworkedTests.test_bracket_flagscCs^Gdd�dtj�}|�|��}|jtjj|jg|j�R�Wd�dS1s(wYdS)Nc@r<)z9ThreadedNetworkedTests.test_issue5949.<locals>.EOFHandlercSr�r�r�rrrrrt�r(z@ThreadedNetworkedTests.test_issue5949.<locals>.EOFHandler.handleNr�rrrrr��r�r�)	r�r�rdr1rr3r�r�r�)rr�rLrrr�test_issue5949�s
�
�"�z%ThreadedNetworkedTests.test_issue5949cC�\Gdd�dt�}|�|��}|jtjj|jg|j�R�Wd�dS1s'wYdS)Nc@r<)zGThreadedNetworkedTests.test_line_termination.<locals>.BadNewlineHandlercSr�r�r�rzrrrry�r�zVThreadedNetworkedTests.test_line_termination.<locals>.BadNewlineHandler.cmd_CAPABILITYNr�rrrrr��rDr�)rHrdr1rr3r�r�r�)rr�rLrrrr��s
�
�"�z,ThreadedNetworkedTests.test_line_terminationc@r�)z!ThreadedNetworkedTests.UTF8Serverr�cCr�r�r�rzrrrr��rZz,ThreadedNetworkedTests.UTF8Server.cmd_ENABLEccr�r�r�rzrrrr��r�z2ThreadedNetworkedTests.UTF8Server.cmd_AUTHENTICATENr�rrrrr��sr�cCsb|�|j��!\}}|�|j�|�tjj|jd�|�|j�Wd�dS1s*wYdS)Nr�)	rer�r�r�r1rr3r0r�rfrrrr��s
"�z;ThreadedNetworkedTests.test_enable_raises_error_if_not_AUTHcCsZGdd�d|j�}|�|��\}}|�tjj|jd�Wd�dS1s&wYdS)Nc@r�)zXThreadedNetworkedTests.test_enable_raises_error_if_no_capability.<locals>.NoEnableServerr>Nr�rrrr�NoEnableServer�r�rur�)r�rer1rr3r0r�)rrurLr�rrrr��s"�z@ThreadedNetworkedTests.test_enable_raises_error_if_no_capabilityc	Cs�Gdd�dt�}|�tjj��;|�|��\}}|�dd�\}}|�|d�|�d�Wd�n1s5wYWd�dSWd�dS1sMwYdS)Nc@rE)z\ThreadedNetworkedTests.test_enable_UTF8_raises_error_if_not_supported.<locals>.NonUTF8ServerNrFrrrr�
NonUTF8Server�rGrvr�r�rvr�)	rHr1rr3r0rer�rr�)rrvrLr�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�dS1sowYdS)
Nc@r<)zMThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.UTF8AppendServercsr�r�r�rzrrrr�r�zXThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_APPENDN)r9r:r;r�rrrrr��r�r�r�r�cSr�r�rr�rrrr�r�zEThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.<lambda>rvr�r�r�r�r�)	r�rerr�r�r�r�r�r\)	rr�rLr�rar�r�r�r�rrrr��s*���"�z3ThreadedNetworkedTests.test_enable_UTF8_True_appendcCs�|�|j��9\}}|�ddd��\}}|�|d�|�d�\}}|�|d�|�|j�|�tj	j
|jdd�Wd�dS1sBwYdS)Nr�cSr�r�rr�rrrr�r�zSThreadedNetworkedTests.test_search_disallows_charset_in_utf8_mode.<locals>.<lambda>rvr�r�r�)rer�r�rr�r�r�r1rr3r0r�)rrLr�r�r�rrrr�s"�zAThreadedNetworkedTests.test_search_disallows_charset_in_utf8_modec	Cs�Gdd�dt�}|�|��2\}}|�tjj��|�ddd��Wd�n1s*wYWd�dSWd�dS1sBwYdS)Nc@r<)z;ThreadedNetworkedTests.test_bad_auth_name.<locals>.MyServercSr�r�r�rzrrrr�)s

�zLThreadedNetworkedTests.test_bad_auth_name.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�'rDr�r�cSr�r�rrrrrr�/r�z;ThreadedNetworkedTests.test_bad_auth_name.<locals>.<lambda>�rHrer1rr3r0r�)rr�rLr�rrrr�$s��"�z)ThreadedNetworkedTests.test_bad_auth_namec	C�Gdd�dt�}|�|��4\}}|�tjj��|�ddd��\}}Wd�n1s,wYWd�dSWd�dS1sDwYdS)Nc@r<)zDThreadedNetworkedTests.test_invalid_authentication.<locals>.MyServercsr�r�rrzrrrr�6rzUThreadedNetworkedTests.test_invalid_authentication.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�4rDr�r�cSr�r�rr�rrrr�=r�zDThreadedNetworkedTests.test_invalid_authentication.<locals>.<lambda>rw�rr�rLr�rar�rrrr1s��"�z2ThreadedNetworkedTests.test_invalid_authenticationcCs�Gdd�dt�}|�|��!\}}|�ddd��\}}|�|d�|�|jd�Wd�n1s1wY|�|��"\}}|�ddd��\}}|�|d�|�|jd�Wd�dS1s`wYdS)	Nc@r<)zBThreadedNetworkedTests.test_valid_authentication.<locals>.MyServercsr�r�r�rzrrrr�Dr�zSThreadedNetworkedTests.test_valid_authentication.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�BrDr�r�cSr�r�rr�rrrr�Jr�zBThreadedNetworkedTests.test_valid_authentication.<locals>.<lambda>rvr�cSr�rrr�rrrr�Pr�)rHrer�rr�ryrrr�test_valid_authentication?s���"�z0ThreadedNetworkedTests.test_valid_authenticationr
TrcCs�Gdd�dt�}|�|�� \}}|�d|jv�|�dd�\}}|�|d�Wd�n1s0wY|�|��!\}}|�d|jv�|�dd�\}}|�|d�Wd�dS1s^wYdS)Nc@r
)z?ThreadedNetworkedTests.test_login_cram_md5.<locals>.AuthHandlerrcsrrrrrrrr�]rzPThreadedNetworkedTests.test_login_cram_md5.<locals>.AuthHandler.cmd_AUTHENTICATENrrrrrrYsrrrr!rvr)rHrer�rxrr)rrrLr�rr�rrr�test_login_cram_md5Us�"�z*ThreadedNetworkedTests.test_login_cram_md5c	Crx)Nc@r<)zDThreadedNetworkedTests.test_aborted_authentication.<locals>.MyServercsr#r$rrzrrrr�ws�

zUThreadedNetworkedTests.test_aborted_authentication.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�urDr�r�cSr%r+rr�rrrr��r�zDThreadedNetworkedTests.test_aborted_authentication.<locals>.<lambda>rwryrrrr&rs��"�z2ThreadedNetworkedTests.test_aborted_authenticationcCrt)Nc@r<)z?ThreadedNetworkedTests.test_linetoolong.<locals>.TooLongHandlercSs|j�dtjdd�dS)Ns* OK �xrX)rSrTrZ_MAXLINErrrrrt�szFThreadedNetworkedTests.test_linetoolong.<locals>.TooLongHandler.handleNr�rrrrr)�r�r))rHrdr1rr3r0r�r�)rr)rLrrrr*�s
�
�"�z'ThreadedNetworkedTests.test_linetoolongcs�d�G�fdd�dt�}tdd�D]P}d|>�|�d�����:|�|��%}|�tjj��|j|j	�Wd�n1s>wYWd�n1sMwYWd�n1s\wYqdS)NrcseZdZ�fdd�ZdS)zGThreadedNetworkedTests.test_truncated_large_literal.<locals>.BadHandlercs|�d��|�d�dS)Nz	* OK {%d}ru)r]r��sizerrrt�szNThreadedNetworkedTests.test_truncated_large_literal.<locals>.BadHandler.handleNr�rr}rr�
BadHandler�sr��@rzsize=2e)
rH�rangeZsubTestrdr1rr3r�r�r�)rrZexponentrLrr}r�test_truncated_large_literal�s�������z3ThreadedNetworkedTests.test_truncated_large_literalc	Csl|�t��'}|j|j��Wd�n1swYWd�dSWd�dS1s/wYdSr+)rdrHr�r�)rrLrrrr+�s��"�z1ThreadedNetworkedTests.test_simple_with_statementc	Cs�|�t��2}|j|j��}|�dd�|�|jd�Wd�n1s$wY|�|j�Wd�dS1s:wYdS�Nr�r�)rdrHr�r�r�rrNr7�rrLr9rrrr:�s�"�z*ThreadedNetworkedTests.test_with_statementc	Cs�|�t��<}|j|j��}|�dd�|�|jd�|��|�|j�Wd�n1s.wY|�|j�Wd�dS1sDwYdSr�)	rdrHr�r�r�rrNr;r7r�rrrr<�s�"�z1ThreadedNetworkedTests.test_with_statement_logoutz Won't work if __debug__ is Falsec
Cs�ddgi}|�t��H}|j|j��)}tj�|d��}|�|�|�d�Wd�n1s.wYWd�n1s=wYWd�dSWd�dS1sUwYdS)Nz
READ-WRITErcZ_mesgz)untagged responses dump:READ-WRITE: [b''])	rdrHr�r�rrIr]Z_dump_urZassert_called_with)rZuntagged_resp_dictrLr9Z	mock_mesgrrr�test_dump_ur�s

�����"�z#ThreadedNetworkedTests.test_dump_urN)+r9r:r;r�rKr�rr3r�rbrcrrdrer
�reap_threadsrgrrrsr�rHr�r�r�r�r�r�r�rrzr	rHr{r&r*r�r+r:r<r�unittest�
skipUnlessr�rrrrr`Hsf 	



0







	









r`c@s"eZdZeZeZejdd��Z	dS)�ThreadedNetworkedTestsSSLc	Cs�t�tj�}|�t�|�tjd��*|�t��}|j	|j
d|i�}|��Wd�n1s0wYWd�n1s?wY|�t��}|j	d|j
d|d�}|��Wd�dS1sdwYdS)NrMrNr,rrW)r>r?rOrRrSr�rTrdrHr�r�r�)rrNrLr�rrrrX�s(
�
�
���	�
"�z+ThreadedNetworkedTestsSSL.test_ssl_verifiedN)
r9r:r;r=r�r_r�r
r�rXrrrrr��s
r�Znetworkznetwork resource disabledz'cyrus.andrew.cmu.edu blocks connectionsc@sBeZdZdZdZdZdZejZ	dd�Z
dd�Zd	d
�Zdd�Z
d
S)�RemoteIMAPTestzcyrus.andrew.cmu.edurZZ	anonymousr�cCsDt�|j��|�|j|j�|_Wd�dS1swYdSr+)r�transient_internet�hostr��portrLrrrr�setUp�s"�zRemoteIMAPTest.setUpcCsJ|jdur#t�|j��|j��Wd�dS1swYdSdSr+)rLrr�r�r;rrrr�tearDown�s

"��zRemoteIMAPTest.tearDowncCs�t�|j��7|jjD]}|�|t�q|�d|jj�|�d|jj�|j�|j	|j
�}|�|dd�Wd�dS1s@wYdS)N�
LOGINDISABLEDzAUTH=ANONYMOUSrrv)rr�r�rLrx�assertIsInstance�strr4r��username�passwordr)r�cap�rsrrr�test_logincapa�s"�zRemoteIMAPTest.test_logincapacCsTt�|j��|j��}d|_|�|dd|�Wd�dS1s#wYdS�Nrr@)rr�r�rLr;r�rr�rrrrA�s

"�zRemoteIMAPTest.test_logoutN)r9r:r;r�r�r�r�rr3r�r�r�r�rArrrrr��s	r�cs$eZdZ�fdd�Zdd�Z�ZS)�RemoteIMAP_STARTTLSTestcsVt���t�|j��|j��}|�|dd�Wd�dS1s$wYdS)Nrrv)rJr�rr�r�rLZstarttlsrr�rOrrr�	s


"�zRemoteIMAP_STARTTLSTest.setUpcCs.|jjD]}|�|t�q|�d|jj�dS)Nr�)rLrxr�r��assertNotIn)rr�rrrr�sz&RemoteIMAP_STARTTLSTest.test_logincapa)r9r:r;r�r�r�rrrOrr�sr�c@sTeZdZdZeZdd�Zdd�Zdd�Zdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dS)�RemoteIMAP_SSLTesti�cCr%r+rrrrrr��zRemoteIMAP_SSLTest.setUpcCr%r+rrrrrr�r�zRemoteIMAP_SSLTest.tearDowncCs(t�tj�}d|_tj|_|�t�|SrI)r>r?rOrQZ	CERT_NONErPr@rA)rrNrrr�create_ssl_context!s

z%RemoteIMAP_SSLTest.create_ssl_contextcCsnz1|jD]}|�|t�q|�d|j�|�d|j�|�|j|j�}|�|dd�W|�	�dS|�	�w)Nr�z
AUTH=PLAINrrv)
rxr�r�r�r4r�r�r�rr;)rrLr�r�rrr�check_logincapa(s
z"RemoteIMAP_SSLTest.check_logincapacCsLt�|j��|�|j|j�}|�|�Wd�dS1swYdSr+)rr�r�r�r�r�)r�_serverrrrr�3s"�z!RemoteIMAP_SSLTest.test_logincapacCs\t�|j��|�|j|j�}|��}|�|dd|�Wd�dS1s'wYdSr�)rr�r�r�r�r;r)rr�r�rrrrA8s
"�zRemoteIMAP_SSLTest.test_logoutc	C�Rt�|j��|jt|j|j|jt|��d�Wd�dS1s"wYdS)N)r[rN�	rr�r�r1r.r�r�rAr�rrrr�#test_ssl_context_certfile_exclusive>��"�z6RemoteIMAP_SSLTest.test_ssl_context_certfile_exclusivec	Cr�)N)ZkeyfilerNr�rrrr�"test_ssl_context_keyfile_exclusiveDr�z5RemoteIMAP_SSLTest.test_ssl_context_keyfile_exclusiveN)r9r:r;r�r_r�r�r�r�r�r�rAr�r�rrrrr�sr��__main__)7rprZtest.supportr�
contextlibrrZos.path�osr�rrr�r.rrrrr	r
rr�rr
rrr>�ImportError�pathr_�dirname�__file__�curdirrArSZTestCaserrKr=r_r�rHr�rJr�rLr`r�Zis_resource_enabled�skipr�r�r�r9�mainrrrr�<module>sx�@	_O
$

�
 
�

4�