Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 3.149.238.13
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : test_imaplib.cpython-310.pyc
o

`b>��@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)�self�t0�tt�r�:/usr/local/python-3.10/lib/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)	r!r"r#r"r$r%rrrri �"18-May-2033 05:33:20 +0200")r�	localtimer
Z
fromtimestamprrrrrr�
timevalues3s��zTestImaplib.timevalues�LC_ALL�de_DE�fr_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�assertIn�	exception�errno)r�sZexpected_errnos�cmrrr�test_imap4_host_default_valueMs 
����	
�z)TestImaplib.test_imap4_host_default_valueN)�__name__�
__module__�__qualname__rrr r(rr.r0r=rrrrrs

rc@�eZdZdd�ZdS)�SecureTCPServercCs:|j��\}}t�tj�}|�t�|j|dd�}||fS)NT)Zserver_side)r2�accept�ssl�
SSLContextZPROTOCOL_TLS_SERVER�load_cert_chain�CERTFILEZwrap_socket)rZ	newsocketZfromaddr�contextZ
connstreamrrr�get_requestas

zSecureTCPServer.get_requestN)r>r?r@rIrrrrrB_�rBc@�eZdZdS)rBN�r>r?r@rrrrrBl�cszeZdZejZdZdZ�fdd�Zdd�Z	dd�Z
d	d
�Zdd�Zd
d�Z
dd�Zdd�Zdd�Zdd�Zdd�Z�ZS)�SimpleIMAPHandlerNr1cst���d|j_d|j_dS�NF)�super�setup�server�is_selected�loggedr��	__class__rrrQws
zSimpleIMAPHandler.setupcCs$tr
td|���|j�|�dS)NzSENT: %r)r�print�strip�wfile�write�r�messagerrr�_send|szSimpleIMAPHandler._sendcCs|�|d�dS)N�
)r]r[rrr�
_send_line��zSimpleIMAPHandler._send_linecCs|�|�d��dS)N�ASCII)r_�encoder[rrr�_send_textline�sz SimpleIMAPHandler._send_textlinecCs|�d�|||f��dS)N� )rc�join)r�tag�coder\rrr�_send_tagged�szSimpleIMAPHandler._send_taggedcCs|�d�	d}	z|j�d�}|dkrWdS||7}Wn
ty&YdSw|�d�r-q.q	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�r^zGOT: %rrar�Zcmd_�BADz unknown)rcZrfile�readr6�endswithrrWrX�continuation�send�
StopIteration�decode�split�hasattr�getattr�nextrh)r�line�partZ	splitlinerf�cmd�argsrnrrr�handle�sH
�
�

���zSimpleIMAPHandler.handlecCs4|jrd|jnd}|�d|�|�|dd�dS)Nz
IMAP4rev1 Z	IMAP4rev1z
* CAPABILITY �OK�CAPABILITY completed)�capabilitiesrcrh)rrfryZcapsrrr�cmd_CAPABILITY�s��z SimpleIMAPHandler.cmd_CAPABILITYcCs$d|j_|�d�|�|dd�dS)Nz"* BYE IMAP4ref1 Server logging outr{zLOGOUT completed)rRrTrcrh�rrfryrrr�
cmd_LOGOUT��
zSimpleIMAPHandler.cmd_LOGOUTcCs|d|j_|�|dd�dS)Nrr{zLOGIN completed)rRrTrhrrrr�	cmd_LOGIN�szSimpleIMAPHandler.cmd_LOGINcCs$d|j_|�d�|�|dd�dS)NT�
* 2 EXISTSr{�[READ-WRITE] SELECT completed.)rRrSr_rhrrrr�
cmd_SELECT�r�zSimpleIMAPHandler.cmd_SELECTcCs4|jjrd|j_|�|dd�dS|�|dd�dS)NFr{z*Returned to authenticated state. (Success)rkzNo mailbox selected)rRrSrhrrrr�cmd_UNSELECT�szSimpleIMAPHandler.cmd_UNSELECT)r>r?r@r�LOOPBACK_TIMEOUT�timeoutrnr}rQr]r_rcrhrzr~r�r�r�r��
__classcell__rrrUrrNrs*rNc@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@rA)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�r>r?r@r�rrrr�
TestTCPServer��r�rz-server�
poll_interval�{�G�z�?��name�target�kwargsT)�server_classZ
addCleanup�_cleanupr�HOSTrR�	threading�ThreadZ_testMethodName�
serve_forever�thread�daemon�start�
imap_class�server_address�client)rZimap_handlerr3r�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�shutdownrRr�r
�join_threadr�rrrrr��s



zNewIMAPTestsMixin._cleanupcCsDGdd�dtj�}|j|dd�\}}|jtjj|jg|j�R�dS)Nc@rA)zONewIMAPTestsMixin.test_EOF_without_complete_welcome_message.<locals>.EOFHandlercS�|j�d�dS�Ns* OK�rYrZrrrrrzszVNewIMAPTestsMixin.test_EOF_without_complete_welcome_message.<locals>.EOFHandler.handleN�r>r?r@rzrrrr�
EOFHandlerr�r�F�r3)	�socketserver�StreamRequestHandlerr�r5rr7�abortr�r�)rr��_rRrrr�)test_EOF_without_complete_welcome_messages
�z;NewIMAPTestsMixin.test_EOF_without_complete_welcome_messagecCsBGdd�dt�}|j|dd�\}}|jtjj|jg|j�R�dS)Nc@rA)zBNewIMAPTestsMixin.test_line_termination.<locals>.BadNewlineHandlercS�|�d�|�|dd�dS�Ns* CAPABILITY IMAP4rev1 AUTH
r{r|�r]rhrrrrr~�
zQNewIMAPTestsMixin.test_line_termination.<locals>.BadNewlineHandler.cmd_CAPABILITYN�r>r?r@r~rrrr�BadNewlineHandlerr�r�Fr�)rNr�r5rr7r�r�r�)rr�r�rRrrr�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�r>r?r@r}rrrr�
EnableHandler�r�zENABLE.*NONAUTH�foo)	rNr��assertFalse�utf8_enabled�assertRaisesRegexrr7r4�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�rNr�rr7r4r�)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�passr{r��UTF8=ACCEPT)	r�rN�loginrr�rr7r4r��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�Nr{zENABLE successful�rhrrrr�
cmd_ENABLE1r`zSNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_ENABLEcs�(�|�d�dV|j_|�|dd�dS�N�+r{zFAKEAUTH successful�rcrR�responserhrrrr�cmd_AUTHENTICATE3��

zYNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_AUTHENTICATEcsr��Nr�r{Zokayr�rrrr�
cmd_APPEND7r�zSNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_APPENDN)r>r?r@r}r�r�r�rrrr�UTF8AppendServer/s
r��ascii�MYAUTHcS�dS�Nsfaker��xrrr�<lambda>=�z@NewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.<lambda>r{�
ZmFrZQ==
r��utf-8�Subject: üñí©öðé�UTF8 (%s)
)	rNr�r�	_encoding�authenticater�r��appendrb)	rr�r�rRrgr��
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�rrrrr�Lr`z[NewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Server.cmd_ENABLEcsr�r�r�rrrrr�Nr�zaNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Server.cmd_AUTHENTICATEN�r>r?r@r}r�r�rrrr�
UTF8ServerJsr�r�cSr�r�rr�rrrr�Sr�zNNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.<lambda>r{r�z
charset.*UTF8r��bar)rNr�r�rr��
assertTruer�r�rr7r4�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@rA)z6NewIMAPTestsMixin.test_bad_auth_name.<locals>.MyServercS�|�|dd�|d��dS�N�NOz#unrecognized authentication type {}r�rh�formatrrrrr�]s�zGNewIMAPTestsMixin.test_bad_auth_name.<locals>.MyServer.cmd_AUTHENTICATEN�r>r?r@r�rrrr�MyServer\r�r�z'unrecognized authentication type METHOD�METHODcSr��Nrrrrrrr�cr�z6NewIMAPTestsMixin.test_bad_auth_name.<locals>.<lambda>�rNr�r�rr7r4r��rr�r�r�rrr�test_bad_auth_name[s
�"�z$NewIMAPTestsMixin.test_bad_auth_namecCr�)Nc@rA)z?NewIMAPTestsMixin.test_invalid_authentication.<locals>.MyServercs�&�|�d�dV|_|�|dd�dS�Nr�r�z[AUTHENTICATIONFAILED] invalid�rcr�rhrrrrr�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>rrrrr�test_invalid_authenticationes
�"�z-NewIMAPTestsMixin.test_invalid_authenticationcC�PGdd�dt�}|�|�\}}|�ddd��\}}|�|d�|�|jd�dS)Nc@rA)zCNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.MyServercsr�r�r�rrrrr�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>r{r��rNr�r�rr��rr�r�rRrgr�rrr�test_valid_authentication_bytesp�
z1NewIMAPTestsMixin.test_valid_authentication_bytescCr	)Nc@rA)zHNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.MyServercsr�r�r�rrrrr�}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>r{r�r
rrrr�$test_valid_authentication_plain_text{r
z6NewIMAPTestsMixin.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
r{zCRAM-MD5 successfulr�z	No access�rcrh�rrfry�rrrrr����
zQNewIMAPTestsMixin.test_login_cram_md5_bytes.<locals>.AuthHandler.cmd_AUTHENTICATEN�r>r?r@r}r�rrrr�AuthHandler��r�
AUTH=CRAM-MD5�tim�tanstaaftanstaafr{�rNr�r�r}�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�tanstaaftanstaafr{r!r#rrr�test_login_cram_md5_plain_text�r&z0NewIMAPTestsMixin.test_login_cram_md5_plain_textcCr�)Nc@rA)z?NewIMAPTestsMixin.test_aborted_authentication.<locals>.MyServercs�B�|�d�dV|_|jdkr|�|dd�dS|�|dd�dS�Nr�s*
r�z[AUTHENTICATIONFAILED] abortedr{zMYAUTH successfulrrrrrr��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>rrrrr�test_aborted_authentication�s
�"�z-NewIMAPTestsMixin.test_aborted_authenticationzimaplib._MAXLINE�
cCsdGdd�dt�}|j|dd�\}}|�tjjd��|j|j�Wd�dS1s+wYdS)Nc@rA)z:NewIMAPTestsMixin.test_linetoolong.<locals>.TooLongHandlercSr�)Ns* OK xxxxxxxxxxx
r�rrrrrz��zANewIMAPTestsMixin.test_linetoolong.<locals>.TooLongHandler.handleNr�rrrr�TooLongHandler�r�r/Fr�zgot more than 10 bytes)rNr�r�rr7r4r�r�)rr/r�rRrrr�test_linetoolong�s
�"�z"NewIMAPTestsMixin.test_linetoolongcCsD|jtdd�\}}|j|j��	Wd�dS1swYdS)NFr�)r�rNr�r�)rr�rRrrr�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�rNr�r�r�sockr�r�rr�r5�
ValueError)rr�rR�addrr�rrr�test_imaplib_timeout_test�s
"�z+NewIMAPTestsMixin.test_imaplib_timeout_testcCshGdd�dt�}|�|�\}}|jd}|�t��|jd|dd�}Wd�dS1s-wYdS)Nc@rA)zQNewIMAPTestsMixin.test_imaplib_timeout_functionality_test.<locals>.TimeoutHandlercSst�d�t�|�dSr)r�sleeprNrzrrrrrz��
zXNewIMAPTestsMixin.test_imaplib_timeout_functionality_test.<locals>.TimeoutHandler.handleNr�rrrr�TimeoutHandler�r�r:rr2g����MbP?r3)rNr�r�r5�TimeoutErrorr�)rr:r�rRr6r�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�rNr�r�r�rrT�assertIsNone�rr�rR�imaprrr�test_with_statement�s�z%NewIMAPTestsMixin.test_with_statementcCs||jtdd�\}}|j|j��}|�dd�|�|jd�|��|�|j�Wd�n1s1wY|�|j�dSr=)	r�rNr�r�r�rrT�logoutr>r?rrr�test_with_statement_logout�s�z,NewIMAPTestsMixin.test_with_statement_logoutcCsL|�t�\}}|�dd�\}}|�|d�|�|dd�|�|jd�dS)Nr�r�r{r�LOGIN completed�AUTH)r�rNr�rr�r�rrr�
test_login�s
zNewIMAPTestsMixin.test_logincCs�|�t�\}}|�dd�\}}|�|d�|�|dd�|��\}}|�|d||f�|�|dd||f�|�|jd�dS)	Nr�r�r{rrD�BYEsIMAP4ref1 Server logging outr�)r�rNr�rrBr�r�rrr�test_logout�szNewIMAPTestsMixin.test_logoutcCsVGdd�dt�}|�|�\}}|�dd�|��\}}|�|d�|�|dd�dS)Nc@rA)z,NewIMAPTestsMixin.test_lsub.<locals>.LsubCmdcSs|�d�|�|dd�S)Nz* LSUB () "." directoryAr{zLSUB completedrrrrr�cmd_LSUBr9z5NewIMAPTestsMixin.test_lsub.<locals>.LsubCmd.cmd_LSUBN)r>r?r@rIrrrr�LsubCmdr�rJr�r�r{rs() "." directoryA)rNr�r�Zlsubr)rrJr�r�r�r�rrr�	test_lsubszNewIMAPTestsMixin.test_lsubcCs||�t�\}}|�dd�|��\}}|�|d�|�|dd�|��\}}|�|d�|�|dd�|�|jd�dS)Nr�r�r{r�2s*Returned to authenticated state. (Success)rE)r�rNr��selectrZunselectr�r�rrr�
test_unselectszNewIMAPTestsMixin.test_unselect)T)"r>r?r@r�r�r�r�r�r�r�r�r�r�rrrrr	�requires_hashdigestr%r(r,r�patchr0r1r7r<rArCrFrHrKrNrrrrr��s>
!			






r�c@seZdZejZejZdS)�NewIMAPTestsN)	r>r?r@rr7r�r��	TCPServerr�rrrrrQs
rQzSSL 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)rDrE�PROTOCOL_TLS_CLIENTr�verify_modeZ
CERT_REQUIRED�check_hostname�load_verify_locations�CAFILEr��CertificateErrorr�rNr�r�r��rrUr�rRr�rrr�test_ssl_raises(s
�
�
"�zNewIMAPSSLTests.test_ssl_raisescCsFt�tj�}|�t�|�t�\}}|jd|jd|d�}|�	�dS)Nr2r�rU)
rDrErVrYrZr�rNr�r�r�r\rrr�test_ssl_verified6s
�z!NewIMAPSSLTests.test_ssl_verifiedc
Cs�t�dtf��Itj�|jd��(tj�|jd��|jddtd�Wd�n1s,wYWd�n1s;wYWd�dSWd�dS1sSwYdS)Nr1�openZ_connectr2�)�certfile)rZcheck_warnings�DeprecationWarningrrP�objectr�rGrrrr�test_certfile_arg_warnAs����"�z&NewIMAPSSLTests.test_certfile_arg_warnN)r>r?r@�	IMAP4_SSLr�rBr�r]r_rrerrrrrS#srSc@sfeZdZejZejZdd�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"ejd,d-��Z#ejd.d/��Z$ejd0d1��Z%eje&d2d3���Z'd4S)5�ThreadedNetworkedTestscCs�Gdd�d|j�}trtd�|||�}|�|j|j���tr5td�td|�td|j�td|j�tj	d|j|j
d	d
id�}d|_|��trPtd
�||fS)Nc@rA)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�rrWrr�r2�getsocknameZRequestHandlerClassr�r�r�r�r�)rr6�hdlrr�rRr-rrr�make_serverLs(

�z"ThreadedNetworkedTests.make_servercCs8trtd�|��|��|��trtd�dSdS)Nzwaiting for server�done)rrWr�r�re)rrRr�rrr�reap_serverls�z"ThreadedNetworkedTests.reap_serverc
cs@�|�tjdf|�\}}z|VW|�||�dS|�||�w)Nr)rjrr�rl)rrirRr�rrr�
reaped_serverus
�z$ThreadedNetworkedTests.reaped_serverc	cs`�|�|�� }|j|j�}z||fVW|��n|��wWd�dS1s)wYdSr/)rmr�r�rB)rrirRr�rrr�reaped_pair}s�"�z"ThreadedNetworkedTests.reaped_paircCsD|�t��}|j|j�}|��Wd�dS1swYdSr/)rmrNr�r�r��rrRr�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)�flagsrPrzrrUrrrz�r9zLThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.handlecsr�r�r�rrrrr��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.r{r�)rerqr_rbrh)rrfryZflag_msg�msgrrrr��s

�zPThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_SELECTcSsf|d�d��d���}|j�|�dd�|j�}d|d|f}|�|�d��|�|d	d
�dS)Nrj�(�)z(FLAGS (%s))rrz
* %s FETCH %srr�r{zSTORE completed.)rXrrrq�extendrer_rbrh)rrfryZ	new_flagsZ	flags_msgrsrrr�	cmd_STORE�szOThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_STORE)r>r?r@rzr�r�rwr�rrrUr�BracketFlagHandler�s

rxr�cSr�r�rr�rrrr��r�z;ThreadedNetworkedTests.test_bracket_flags.<locals>.<lambda>r{r��test�1z+FLAGSz[test]s[test]ZPERMANENTFLAGS)rNrnr�rr�rM�storer8)rrxrRr�rgr�r�rrr�test_bracket_flags�s	

"�z)ThreadedNetworkedTests.test_bracket_flagscCs^Gdd�dtj�}|�|��}|jtjj|jg|j�R�Wd�dS1s(wYdS)Nc@rA)z9ThreadedNetworkedTests.test_issue5949.<locals>.EOFHandlercSr�r�r�rrrrrz�r.z@ThreadedNetworkedTests.test_issue5949.<locals>.EOFHandler.handleNr�rrrrr��r�r�)	r�r�rmr5rr7r�r�r�)rr�rRrrr�test_issue5949�s
�
�"�z%ThreadedNetworkedTests.test_issue5949cC�\Gdd�dt�}|�|��}|jtjj|jg|j�R�Wd�dS1s'wYdS)Nc@rA)zGThreadedNetworkedTests.test_line_termination.<locals>.BadNewlineHandlercSr�r�r�rrrrr~�r�zVThreadedNetworkedTests.test_line_termination.<locals>.BadNewlineHandler.cmd_CAPABILITYNr�rrrrr��rJr�)rNrmr5rr7r�r�r�)rr�rRrrrr��s
�
�"�z,ThreadedNetworkedTests.test_line_terminationc@r�)z!ThreadedNetworkedTests.UTF8Serverr�cCr�r�r�rrrrr��r`z,ThreadedNetworkedTests.UTF8Server.cmd_ENABLEccr�r�r�rrrrr��r�z2ThreadedNetworkedTests.UTF8Server.cmd_AUTHENTICATENr�rrrrr��sr�cCsb|�|j��!\}}|�|j�|�tjj|jd�|�|j�Wd�dS1s*wYdS)Nr�)	rnr�r�r�r5rr7r4r�rorrrr��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>.NoEnableServerrENr�rrrr�NoEnableServer�r�rr�)r�rnr5rr7r4r�)rrrRr�rrrr��s"�z@ThreadedNetworkedTests.test_enable_raises_error_if_no_capabilityc	Cs�Gdd�dt�}|�tjj��;|�|��\}}|�dd�\}}|�|d�|�d�Wd�n1s5wYWd�dSWd�dS1sMwYdS)Nc@rK)z\ThreadedNetworkedTests.test_enable_UTF8_raises_error_if_not_supported.<locals>.NonUTF8ServerNrLrrrr�
NonUTF8Server�rMr�r�r�r{r�)	rNr5rr7r4rnr�rr�)rr�rRr�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@rA)zMThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.UTF8AppendServercsr�r�r�rrrrr�r�zXThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_APPENDN)r>r?r@r�rrrrr��r�r�r�r�cSr�r�rr�rrrr�r�zEThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.<lambda>r{r�r�r�r�r�)	r�rnrr�r�r�r�r�rb)	rr�rRr�rgr�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>r{r�r�r�)rnr�r�rr�r�r�r5rr7r4r�)rrRr�r�r�rrrr�s"�zAThreadedNetworkedTests.test_search_disallows_charset_in_utf8_modec	Cs�Gdd�dt�}|�|��2\}}|�tjj��|�ddd��Wd�n1s*wYWd�dSWd�dS1sBwYdS)Nc@rA)z;ThreadedNetworkedTests.test_bad_auth_name.<locals>.MyServercSr�r�r�rrrrr�)s

�zLThreadedNetworkedTests.test_bad_auth_name.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�'rJr�r�cSr�rrrrrrr�/r�z;ThreadedNetworkedTests.test_bad_auth_name.<locals>.<lambda>�rNrnr5rr7r4r�)rr�rRr�rrrr$s��"�z)ThreadedNetworkedTests.test_bad_auth_namec	C�Gdd�dt�}|�|��4\}}|�tjj��|�ddd��\}}Wd�n1s,wYWd�dSWd�dS1sDwYdS)Nc@rA)zDThreadedNetworkedTests.test_invalid_authentication.<locals>.MyServercsrrrrrrrr�6rzUThreadedNetworkedTests.test_invalid_authentication.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�4rJr�r�cSr�r�rr�rrrr�=r�zDThreadedNetworkedTests.test_invalid_authentication.<locals>.<lambda>r��rr�rRr�rgr�rrrr1s��"�z2ThreadedNetworkedTests.test_invalid_authenticationcCs�Gdd�dt�}|�|��!\}}|�ddd��\}}|�|d�|�|jd�Wd�n1s1wY|�|��"\}}|�ddd��\}}|�|d�|�|jd�Wd�dS1s`wYdS)	Nc@rA)zBThreadedNetworkedTests.test_valid_authentication.<locals>.MyServercsr�r�r�rrrrr�Dr�zSThreadedNetworkedTests.test_valid_authentication.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�BrJr�r�cSr�r�rr�rrrr�Jr�zBThreadedNetworkedTests.test_valid_authentication.<locals>.<lambda>r{r�cSr�rrr�rrrr�Pr�)rNrnr�rr�r�rrr�test_valid_authentication?s���"�z0ThreadedNetworkedTests.test_valid_authenticationrTrcCs�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'r{r )rNrnr�r}r"r)rrrRr�r$r�rrr�test_login_cram_md5Us�"�z*ThreadedNetworkedTests.test_login_cram_md5c	Cr�)Nc@rA)zDThreadedNetworkedTests.test_aborted_authentication.<locals>.MyServercsr)r*rrrrrr�ws�

zUThreadedNetworkedTests.test_aborted_authentication.<locals>.MyServer.cmd_AUTHENTICATENr�rrrrr�urJr�r�cSr+r/rr�rrrr��r�zDThreadedNetworkedTests.test_aborted_authentication.<locals>.<lambda>r�r�rrrr,rs��"�z2ThreadedNetworkedTests.test_aborted_authenticationcCr~)Nc@rA)z?ThreadedNetworkedTests.test_linetoolong.<locals>.TooLongHandlercSs|j�dtjdd�dS)Ns* OK �xr^)rYrZrZ_MAXLINErrrrrz�szFThreadedNetworkedTests.test_linetoolong.<locals>.TooLongHandler.handleNr�rrrrr/�r�r/)rNrmr5rr7r4r�r�)rr/rRrrrr0�s
�
�"�z'ThreadedNetworkedTests.test_linetoolongc	Csl|�t��'}|j|j��Wd�n1swYWd�dSWd�dS1s/wYdSr/)rmrNr�r�)rrRrrrr1�s��"�z1ThreadedNetworkedTests.test_simple_with_statementc	Cs�|�t��2}|j|j��}|�dd�|�|jd�Wd�n1s$wY|�|j�Wd�dS1s:wYdS�Nr�r�)rmrNr�r�r�rrTr>�rrRr@rrrrA�s�"�z*ThreadedNetworkedTests.test_with_statementc	Cs�|�t��<}|j|j��}|�dd�|�|jd�|��|�|j�Wd�n1s.wY|�|j�Wd�dS1sDwYdSr�)	rmrNr�r�r�rrTrBr>r�rrrrC�s�"�z1ThreadedNetworkedTests.test_with_statement_logoutc
Cs�ddgi}|�t��H}|j|j��)}tj�|d��}|�|�|�d�Wd�n1s.wYWd�n1s=wYWd�dSWd�dS1sUwYdS)Nz
READ-WRITEriZ_mesgz)untagged responses dump:READ-WRITE: [b''])	rmrNr�r�rrPrdZ_dump_urZassert_called_with)rZuntagged_resp_dictrRr@Z	mock_mesgrrr�test_dump_ur�s

�����"�z#ThreadedNetworkedTests.test_dump_urN)(r>r?r@r�rRr�rr7r�rjrlrrmrnr
�reap_threadsrpr|r}r�rNr�r�r�r�r�r�rrr�r	rOr�r,r0r1rArCrr�rrrrrgHsb 	



0







	








rgc@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)NrTrUr2rr^)rDrErVrYrZr�r[rmrNr�r�r�)rrUrRr�rrrr_�s(
�
�
���	�
"�z+ThreadedNetworkedTestsSSL.test_ssl_verifiedN)
r>r?r@rBr�rfr�r
r�r_rrrrr��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.eduraZ	anonymousr�cCsDt�|j��|�|j|j�|_Wd�dS1swYdSr/)r�transient_internet�hostr��portrRrrrr�setUp�s"�zRemoteIMAPTest.setUpcCsJ|jdur#t�|j��|j��Wd�dS1swYdSdSr/)rRrr�r�rBrrrr�tearDown�s

"��zRemoteIMAPTest.tearDowncCs�t�|j��7|jjD]}|�|t�q|�d|jj�|�d|jj�|j�|j	|j
�}|�|dd�Wd�dS1s@wYdS)N�
LOGINDISABLEDzAUTH=ANONYMOUSrr{)rr�r�rRr}�assertIsInstance�strr8r��username�passwordr)r�cap�rsrrr�test_logincapa�s"�zRemoteIMAPTest.test_logincapacCsTt�|j��|j��}d|_|�|dd|�Wd�dS1s#wYdS�NrrG)rr�r�rRrBr�rr�rrrrH�s

"�zRemoteIMAPTest.test_logoutN)r>r?r@r�r�r�r�rr7r�r�r�r�rHrrrrr��s	r�cs$eZdZ�fdd�Zdd�Z�ZS)�RemoteIMAP_STARTTLSTestcsVt���t�|j��|j��}|�|dd�Wd�dS1s$wYdS)Nrr{)rPr�rr�r�rRZstarttlsrr�rUrrr��s


"�zRemoteIMAP_STARTTLSTest.setUpcCs.|jjD]}|�|t�q|�d|jj�dS)Nr�)rRr}r�r��assertNotIn)rr�rrrr�sz&RemoteIMAP_STARTTLSTest.test_logincapa)r>r?r@r�r�r�rrrUrr��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�|SrO)rDrErVrXZ	CERT_NONErWrFrG)rrUrrr�create_ssl_contexts

z%RemoteIMAP_SSLTest.create_ssl_contextcCsnz1|jD]}|�|t�q|�d|j�|�d|j�|�|j|j�}|�|dd�W|�	�dS|�	�w)Nr�z
AUTH=PLAINrr{)
r}r�r�r�r8r�r�r�rrB)rrRr�r�rrr�check_logincapas
z"RemoteIMAP_SSLTest.check_logincapacCsLt�|j��|�|j|j�}|�|�Wd�dS1swYdSr/)rr�r�r�r�r�)r�_serverrrrr�$s"�z!RemoteIMAP_SSLTest.test_logincapacCs\t�|j��|�|j|j�}|��}|�|dd|�Wd�dS1s'wYdSr�)rr�r�r�r�rBr)rr�r�rrrrH)s
"�zRemoteIMAP_SSLTest.test_logoutc	C�Rt�|j��|jt|j|j|jt|��d�Wd�dS1s"wYdS)N)rbrU�	rr�r�r5r5r�r�rGr�rrrr�#test_ssl_context_certfile_exclusive/��"�z6RemoteIMAP_SSLTest.test_ssl_context_certfile_exclusivec	Cr�)N)ZkeyfilerUr�rrrr�"test_ssl_context_keyfile_exclusive5r�z5RemoteIMAP_SSLTest.test_ssl_context_keyfile_exclusiveN)r>r?r@r�rfr�r�r�r�r�r�rHr�r�rrrrr�sr��__main__)7ryrZtest.supportr�
contextlibrrZos.path�osr�rrr�r2rrrrr	r
rZunittestrr
rrrD�ImportError�pathre�dirname�__file__�curdirrGrZZTestCaserrRrBrfr�rNr�rQZ
skipUnlessrSrgr�Zis_resource_enabled�skipr�r�r�r>�mainrrrr�<module>sv�@	_O
$
r
�
 
�

4�
© 2025 GrazzMean