Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_imaplib.cpython-35.opt-2.pyc



���]ٍ�@s#ddlmZejd�ZddlmZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
mZmZmZmZmZddlZddlmZddlmZmZmZyddlZWnek
rdZYnXejjejje�p#ejd�Zejjejje�pMejd	�Z Gd
d�dej!�Z"er�Gdd
�d
e	j#�Z$ej%Z%nGdd
�d
�Z$dZ%Gdd�de	j&�Z'Gdd�d�Z(Gdd�de(ej!�Z)ej*ed�Gdd�de(ej!��Z+Gdd�dej!�Z,ej*ed�Gdd�de,��Z-ej*ej.d�d�Gdd�dej!��Z/ej*ed�ej*ej.d�d�Gd d!�d!e/���Z0ej*ed�Gd"d#�d#e/��Z1e2d$krej3�dS)%�)�support�	threading)�contextmanagerN)�reap_threads�verbose�transient_internet�run_with_tz�run_with_locale)�mock)�datetime�timezone�	timedeltazkeycert3.pemzpycacert.pemc@sveZdZdd�Zed�dd��Zdd�Zedd	d
�ed�dd
���Zdd�Z	dS)�TestImaplibc
Cs�tjd
�}tjd�}|jtj|�|�tjd�}|jtj|�|�tjd�}|jtj|�|�dS)N���rs.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")���rr)	rrrrrrrrr)�calendarZtimegm�imaplib�Internaldate2tuple�assertEqual�time�mktime)�self�t0�tt�r�1/opt/alt/python35/lib64/python3.5/test_imaplib.py�test_Internaldate2tuples			z#TestImaplib.test_Internaldate2tuplezMST+07MDT,M4.1.0,M10.5.0cCs&|jtjd�tjd��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=ddtjd�ddtjdttd	d���dgS)Ni�5wge��A�����!�rr��<z"18-May-2033 05:33:20 +0200"rrr)	rr r!r r"r#rrrrr)	rr r!r r"r#rrr�xi )r�	localtimerZ
fromtimestamprr
)rrrr�
timevalues2s	zTestImaplib.timevalues�LC_ALL�de_DE�fr_FRzSTD-1DST,M3.2.0,M11.1.0cCs@d}x3|j�D]%}tj|�}|j||�qWdS)Nz"18-May-2033 05:33:20 +0200")r(r�Time2Internaldater)rZexpected�tZinternalrrr�test_Time2Internaldate:sz"TestImaplib.test_Time2InternaldatecCs(x!|j�D]}tj|�q
WdS)N)r(rr,)rr-rrr�,test_that_Time2Internaldate_returns_a_resultEsz8TestImaplib.test_that_Time2Internaldate_returns_a_resultN)
�__name__�
__module__�__qualname__rrrr(r	r.r/rrrrrsrc@seZdZdd�ZdS)�SecureTCPServercCs:|jj�\}}tj|dddt�}||fS)NZserver_sideT�certfile)�socket�accept�sslZwrap_socket�CERTFILE)rZ	newsocketZfromaddrZ
connstreamrrr�get_requestPs
	zSecureTCPServer.get_requestN)r0r1r2r9rrrrr3Nsr3c@seZdZdS)r3N)r0r1r2rrrrr3[scs�eZdZdZdZdZ�fdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Z�S)�SimpleIMAPHandlerrN�cst�j�d|j_dS)N)�super�setup�server�logged)r)�	__class__rrr=fs
zSimpleIMAPHandler.setupcCs.trtd|j��|jj|�dS)NzSENT: %r)r�print�strip�wfile�write)r�messagerrr�_sendjszSimpleIMAPHandler._sendcCs|j|d�dS)Ns
)rF)rrErrr�
_send_lineoszSimpleIMAPHandler._send_linecCs|j|jd��dS)N�ASCII)rG�encode)rrErrr�_send_textlinersz SimpleIMAPHandler._send_textlinecCs#|jdj|||f��dS)N� )rJ�join)r�tag�coderErrr�_send_taggeduszSimpleIMAPHandler._send_taggedcCsq|jd�x]d}x]y0|jjd�}|dkr>dS||7}Wntk
radSYnX|jd�rPqWtr�td|j��|jr�y|jj	|�Wqt
k
r�d|_YqXq|jd�j�}|d}|d}|dd�}t
|d	|�rRt|d	|�||�}|ri||_t|�q|j|d
|d�qWdS)Nz* OK IMAP4rev1�rs
zGOT: %rrHrr$Zcmd_ZBADz unknown)rJZrfile�read�OSError�endswithrrArB�continuation�send�
StopIteration�decode�split�hasattr�getattr�nextrO)r�line�partZ	splitlinerM�cmd�argsrTrrr�handlexs>

		


	
zSimpleIMAPHandler.handlecCsD|jrd|jnd}|jd|�|j|dd�dS)Nz
IMAP4rev1 Z	IMAP4rev1z
* CAPABILITY �OKzCAPABILITY completed)�capabilitiesrJrO)rrMr_Zcapsrrr�cmd_CAPABILITY�sz SimpleIMAPHandler.cmd_CAPABILITYcCs0d|j_|jd�|j|dd�dS)Nz"* BYE IMAP4ref1 Server logging outrazLOGOUT completed)r>r?rJrO)rrMr_rrr�
cmd_LOGOUT�s
zSimpleIMAPHandler.cmd_LOGOUTcCs'|d|j_|j|dd�dS)NrrazLOGIN completed)r>r?rO)rrMr_rrr�	cmd_LOGIN�szSimpleIMAPHandler.cmd_LOGIN)r0r1r2�timeoutrTrbr=rFrGrJrOr`rcrdrerr)r@rr:as*r:c@s?eZdZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zejd#d$�d%d&��Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�ZdS)3�NewIMAPTestsMixinNTcCs�Gdd�d|j�}|j|j�|jtjdf|�|_tjd|jdd|jj	ddd	i�|_
d
|j
_|j
j�|r�|j
|jj�|_|j|jfS)Nc@seZdZdd�ZdS)z/NewIMAPTestsMixin._setup.<locals>.TestTCPServercSs|j|�|j��dS)N)�
close_request�server_close)r�request�client_addressrrr�handle_error�s

z<NewIMAPTestsMixin._setup.<locals>.TestTCPServer.handle_errorN)r0r1r2rlrrrr�
TestTCPServer�srmr�namez-server�target�kwargs�
poll_intervalg{�G�z�?T)�server_classZ
addCleanup�_cleanupr�HOSTr>r�ThreadZ_testMethodName�
serve_forever�thread�daemon�start�
imap_class�server_address�client)rZimap_handler�connectrmrrr�_setup�s		

zNewIMAPTestsMixin._setupcCs\|jdk	r.|jjdkr.|jj�|jj�|jj�|jjd�dS)N�LOGOUTg@)r|�state�shutdownr>rirwrL)rrrrrs�s
!


zNewIMAPTestsMixin._cleanupcCsWGdd�dtj�}|j|dd�\}}|jtjj|j|j�dS)Nc@seZdZdd�ZdS)zONewIMAPTestsMixin.test_EOF_without_complete_welcome_message.<locals>.EOFHandlercSs|jjd�dS)Ns* OK)rCrD)rrrrr`�szVNewIMAPTestsMixin.test_EOF_without_complete_welcome_message.<locals>.EOFHandler.handleN)r0r1r2r`rrrr�
EOFHandler�sr�r}F)	�socketserver�StreamRequestHandlerr~�assertRaisesr�IMAP4�abortrzr{)rr��_r>rrr�)test_EOF_without_complete_welcome_message�sz;NewIMAPTestsMixin.test_EOF_without_complete_welcome_messagecCsTGdd�dt�}|j|dd�\}}|jtjj|j|j�dS)Nc@seZdZdd�ZdS)zBNewIMAPTestsMixin.test_line_termination.<locals>.BadNewlineHandlercSs$|jd�|j|dd�dS)Ns* CAPABILITY IMAP4rev1 AUTH
razCAPABILITY completed)rFrO)rrMr_rrrrc�s
zQNewIMAPTestsMixin.test_line_termination.<locals>.BadNewlineHandler.cmd_CAPABILITYN)r0r1r2rcrrrr�BadNewlineHandler�sr�r}F)r:r~r�rr�r�rzr{)rr�r�r>rrr�test_line_termination�sz'NewIMAPTestsMixin.test_line_terminationc	Cs|Gdd�dt�}|j|�\}}|j|j�|jtjjd��|jd�WdQRX|j|j�dS)Nc@seZdZdZdS)zMNewIMAPTestsMixin.test_enable_raises_error_if_not_AUTH.<locals>.EnableHandlerzAUTH ENABLE UTF8=ACCEPTN)r0r1r2rbrrrr�
EnableHandler�sr�zENABLE.*NONAUTH�foo)	r:r~�assertFalse�utf8_enabled�assertRaisesRegexrr��error�enable)rr�r|r�rrr�$test_enable_raises_error_if_not_AUTH�sz6NewIMAPTestsMixin.test_enable_raises_error_if_not_AUTHc	CsF|jt�\}}|jtjjd��|jd�WdQRXdS)Nzdoes not support ENABLEr�)r~r:r�rr�r�r�)rr|r�rrr�)test_enable_raises_error_if_no_capabilitys
z;NewIMAPTestsMixin.test_enable_raises_error_if_no_capabilityc	Csn|jt�\}}|jdd�\}}|j|d�|jtjjd��|jd�WdQRXdS)N�user�passrazdoes not support ENABLEzUTF8=ACCEPT)	r~r:�loginrr�rr�r�r�)rr|r��typ�datarrr�.test_enable_UTF8_raises_error_if_not_supporteds
z@NewIMAPTestsMixin.test_enable_UTF8_raises_error_if_not_supportedc	CsGdd�dt�}|j|�\}}|j|jd�|jddd��\}}|j|d�|j|jd�|jd	�\}}|j|d�|j|jd
�d}|jddd|jd
��\}}|j|d�|j|jd|jd
��dS)
Nc@s:eZdZdZdd�Zdd�Zdd�ZdS)	zHNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServerzENABLE UTF8=ACCEPTcSs|j|dd�dS)NrazENABLE successful)rO)rrMr_rrr�
cmd_ENABLEszSNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_ENABLEcss1|jd�dV|j_|j|dd�dS)N�+razFAKEAUTH successful)rJr>�responserO)rrMr_rrr�cmd_AUTHENTICATEs

zYNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_AUTHENTICATEcss1|jd�dV|j_|j|dd�dS)Nr�ra�okay)rJr>r�rO)rrMr_rrr�
cmd_APPENDs

zSNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_APPENDN)r0r1r2rbr�r�r�rrrr�UTF8AppendServersr��ascii�MYAUTHcSsdS)Nsfaker)�xrrr�<lambda>sz@NewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.<lambda>ras
ZmFrZQ==
zUTF8=ACCEPTzutf-8uSubject: üñí©öðézUTF8 (%s)
)	r:r~r�	_encoding�authenticater�r��appendrI)	rr�r|r>rNr��
msg_stringr�r�rrr�test_enable_UTF8_True_appends'z.NewIMAPTestsMixin.test_enable_UTF8_True_appendc
Cs�Gdd�dt�}|j|�\}}|jddd��\}}|j|d�|jd�\}}|j|d�|j|j�|jtj	j
d��|jd	d
�WdQRXdS)Nc@s.eZdZdZdd�Zdd�ZdS)zPNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8ServerzAUTH ENABLE UTF8=ACCEPTcSs|j|dd�dS)NrazENABLE successful)rO)rrMr_rrrr�,sz[NewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Server.cmd_ENABLEcss1|jd�dV|j_|j|dd�dS)Nr�razFAKEAUTH successful)rJr>r�rO)rrMr_rrrr�.s

zaNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Server.cmd_AUTHENTICATEN)r0r1r2rbr�r�rrrr�
UTF8Server*sr�r�cSsdS)Nsfaker)r�rrrr�3szNNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.<lambda>razUTF8=ACCEPTz
charset.*UTF8r��bar)r:r~r�rr��
assertTruer�r�rr�r��search)rr�r|r�r�rrr�*test_search_disallows_charset_in_utf8_mode)sz<NewIMAPTestsMixin.test_search_disallows_charset_in_utf8_modecCseGdd�dt�}|j|�\}}|jtjjd��|jddd��WdQRXdS)Nc@seZdZdd�ZdS)z6NewIMAPTestsMixin.test_bad_auth_name.<locals>.MyServercSs$|j|ddj|d��dS)N�NOz#unrecognized authentication type {}r)rO�format)rrMr_rrrr�=szGNewIMAPTestsMixin.test_bad_auth_name.<locals>.MyServer.cmd_AUTHENTICATEN)r0r1r2r�rrrr�MyServer<sr�z'unrecognized authentication type METHOD�METHODcSsdS)Nrrrrrrr�Csz6NewIMAPTestsMixin.test_bad_auth_name.<locals>.<lambda>)r:r~r�rr�r�r�)rr�r|r�rrr�test_bad_auth_name;s

z$NewIMAPTestsMixin.test_bad_auth_namecCseGdd�dt�}|j|�\}}|jtjjd��|jddd��WdQRXdS)Nc@seZdZdd�ZdS)z?NewIMAPTestsMixin.test_invalid_authentication.<locals>.MyServercss.|jd�dV|_|j|dd�dS)Nr�r�z[AUTHENTICATIONFAILED] invalid)rJr�rO)rrMr_rrrr�Gs

zPNewIMAPTestsMixin.test_invalid_authentication.<locals>.MyServer.cmd_AUTHENTICATEN)r0r1r2r�rrrrr�Fsr�z \[AUTHENTICATIONFAILED\] invalidr�cSsdS)Nsfaker)r�rrrr�Nsz?NewIMAPTestsMixin.test_invalid_authentication.<locals>.<lambda>)r:r~r�rr�r�r�)rr�r|r�rrr�test_invalid_authenticationEs

z-NewIMAPTestsMixin.test_invalid_authenticationcCspGdd�dt�}|j|�\}}|jddd��\}}|j|d�|j|jd�dS)Nc@seZdZdd�ZdS)zCNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.MyServercss1|jd�dV|j_|j|dd�dS)Nr�razFAKEAUTH successful)rJr>r�rO)rrMr_rrrr�Rs

zTNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.MyServer.cmd_AUTHENTICATEN)r0r1r2r�rrrrr�Qsr�r�cSsdS)Nsfaker)r�rrrr�WszCNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.<lambda>ras
ZmFrZQ==
)r:r~r�rr�)rr�r|r>rNr�rrr�test_valid_authentication_bytesPs
z1NewIMAPTestsMixin.test_valid_authentication_bytescCspGdd�dt�}|j|�\}}|jddd��\}}|j|d�|j|jd�dS)Nc@seZdZdd�ZdS)zHNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.MyServercss1|jd�dV|j_|j|dd�dS)Nr�razFAKEAUTH successful)rJr>r�rO)rrMr_rrrr�]s

zYNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.MyServer.cmd_AUTHENTICATEN)r0r1r2r�rrrrr�\sr�r�cSsdS)N�faker)r�rrrr�bszHNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.<lambda>ras
ZmFrZQ==
)r:r~r�rr�)rr�r|r>rNr�rrr�$test_valid_authentication_plain_text[s
z6NewIMAPTestsMixin.test_valid_authentication_plain_textcCsmGdd�dt�}|j|�\}}|jd|jk�|jdd�\}}|j|d�dS)Nc@s"eZdZdZdd�ZdS)z@NewIMAPTestsMixin.test_login_cram_md5_bytes.<locals>.AuthHandlerzLOGINDISABLED AUTH=CRAM-MD5cssM|jd�dV}|dkr6|j|dd�n|j|dd�dS)Nz:+ PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ=s2dGltIGYxY2E2YmU0NjRiOWVmYTFjY2E2ZmZkNmNmMmQ5ZjMy
razCRAM-MD5 successfulr�z	No access)rJrO)rrMr_�rrrrr�is

zQNewIMAPTestsMixin.test_login_cram_md5_bytes.<locals>.AuthHandler.cmd_AUTHENTICATEN)r0r1r2rbr�rrrr�AuthHandlergsr�z
AUTH=CRAM-MD5�timstanstaaftanstaafra)r:r~r�rb�login_cram_md5r)rr�r|r��retrrr�test_login_cram_md5_bytesfs
z+NewIMAPTestsMixin.test_login_cram_md5_bytescCsmGdd�dt�}|j|�\}}|jd|jk�|jdd�\}}|j|d�dS)Nc@s"eZdZdZdd�ZdS)zENewIMAPTestsMixin.test_login_cram_md5_plain_text.<locals>.AuthHandlerzLOGINDISABLED AUTH=CRAM-MD5cssM|jd�dV}|dkr6|j|dd�n|j|dd�dS)Nz:+ PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ=s2dGltIGYxY2E2YmU0NjRiOWVmYTFjY2E2ZmZkNmNmMmQ5ZjMy
razCRAM-MD5 successfulr�z	No access)rJrO)rrMr_r�rrrr�zs

zVNewIMAPTestsMixin.test_login_cram_md5_plain_text.<locals>.AuthHandler.cmd_AUTHENTICATEN)r0r1r2rbr�rrrrr�xsr�z
AUTH=CRAM-MD5r��tanstaaftanstaafra)r:r~r�rbr�r)rr�r|r�r�rrr�test_login_cram_md5_plain_textws
z0NewIMAPTestsMixin.test_login_cram_md5_plain_textcCseGdd�dt�}|j|�\}}|jtjjd��|jddd��WdQRXdS)Nc@seZdZdd�ZdS)z?NewIMAPTestsMixin.test_aborted_authentication.<locals>.MyServercssS|jd�dV|_|jdkr<|j|dd�n|j|dd�dS)Nr�s*
r�z[AUTHENTICATIONFAILED] abortedrazMYAUTH successful)rJr�rO)rrMr_rrrr��s


zPNewIMAPTestsMixin.test_aborted_authentication.<locals>.MyServer.cmd_AUTHENTICATEN)r0r1r2r�rrrrr��sr�z \[AUTHENTICATIONFAILED\] abortedr�cSsdS)Nr)r�rrrr��sz?NewIMAPTestsMixin.test_aborted_authentication.<locals>.<lambda>)r:r~r�rr�r�r�)rr�r|r�rrr�test_aborted_authentication�s

z-NewIMAPTestsMixin.test_aborted_authenticationzimaplib._MAXLINE�
c	CseGdd�dt�}|j|dd�\}}|jtjjd��|j|j�WdQRXdS)Nc@seZdZdd�ZdS)z:NewIMAPTestsMixin.test_linetoolong.<locals>.TooLongHandlercSs|jjd�dS)Ns* OK ��xs
sxxxxxxxxxxxs* OK xxxxxxxxxxxs* OK xxxxxxxxxxx
)rCrD)rrrrr`�szANewIMAPTestsMixin.test_linetoolong.<locals>.TooLongHandler.handleN)r0r1r2r`rrrr�TooLongHandler�sr�r}Fzgot more than 10 bytes)r:r~r�rr�r�rzr{)rr�r�r>rrr�test_linetoolong�s

z"NewIMAPTestsMixin.test_linetoolongc	Cs9|jtdd�\}}|j|j��WdQRXdS)Nr}F)r~r:rzr{)rr�r>rrr�test_simple_with_statement�sz,NewIMAPTestsMixin.test_simple_with_statementc
Csn|jtdd�\}}|j|j��*}|jdd�|j|jd�WdQRX|j|j�dS)Nr}Fr�r�)r~r:rzr{r�rr?�assertIsNone)rr�r>�imaprrr�test_with_statement�s
z%NewIMAPTestsMixin.test_with_statementc
Cs�|jtdd�\}}|j|j��D}|jdd�|j|jd�|j�|j|j�WdQRX|j|j�dS)Nr}Fr�r�)	r~r:rzr{r�rr?�logoutr�)rr�r>r�rrr�test_with_statement_logout�s
z,NewIMAPTestsMixin.test_with_statement_logoutcCsh|jt�\}}|jdd�\}}|j|d�|j|dd�|j|jd�dS)Nr�r�rarsLOGIN completed�AUTH)r~r:r�rr�)rr|r�r�r�rrr�
test_login�s
zNewIMAPTestsMixin.test_logincCs�|jt�\}}|jdd�\}}|j|d�|j|dd�|j�\}}|j|d�|j|dd�|j|jd�dS)	Nr�r�rarsLOGIN completed�BYEsIMAP4ref1 Server logging outr)r~r:r�rr�r�)rr|r�r�r�rrr�test_logout�szNewIMAPTestsMixin.test_logoutcCsuGdd�dt�}|j|�\}}|jdd�|j�\}}|j|d�|j|dd�dS)Nc@seZdZdd�ZdS)z,NewIMAPTestsMixin.test_lsub.<locals>.LsubCmdcSs |jd�|j|dd�S)Nz* LSUB () "." directoryArazLSUB completed)rJrO)rrMr_rrr�cmd_LSUB�s
z5NewIMAPTestsMixin.test_lsub.<locals>.LsubCmd.cmd_LSUBN)r0r1r2r�rrrr�LsubCmd�sr�r�r�rars() "." directoryA)r:r~r�Zlsubr)rr�r|r�r�r�rrr�	test_lsub�szNewIMAPTestsMixin.test_lsub)r0r1r2r|r~rsr�r�r�r�r�r�r�r�r�r�r�r�r�r�r
Zpatchr�r�r�r�r�r�r�rrrrrg�s0!			

rgc@s"eZdZejZejZdS)�NewIMAPTestsN)	r0r1r2rr�rzr��	TCPServerrrrrrrr��s	r�zSSL not availablec@s4eZdZeZeZdd�Zdd�ZdS)�NewIMAPSSLTestscCs�tjtj�}tj|_d|_|jt�|jtj	d��<|j
t�\}}|j|j
d|�}|j�WdQRXdS)NTz.hostname '127.0.0.1' doesn't match 'localhost'�ssl_context)r7�
SSLContext�PROTOCOL_SSLv23�
CERT_REQUIRED�verify_mode�check_hostname�load_verify_locations�CAFILEr��CertificateErrorr~r:rzr{r�)rr�r�r>r|rrr�test_ssl_raises�s	

	zNewIMAPSSLTests.test_ssl_raisescCsvtjtj�}tj|_d|_|jt�|jt	�\}}|j
d|jdd|�}|j�dS)NT�	localhostrr�)
r7r�r�r�r�r�r�r�r~r:rzr{r�)rr�r�r>r|rrr�test_ssl_verified�s	
	z!NewIMAPSSLTests.test_ssl_verifiedN)	r0r1r2�	IMAP4_SSLrzr3rrr�r�rrrrr��s
r�c@s�eZdZejZejZdd�Z	dd�Z
edd��Zedd��Z
ed	d
��Zedd��Zed
d��ZGdd�de�Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd ��Zed!d"��Zed#d$��Zd%d&�Zed'd(��Zed)d*��Z ed+d,��Z!d-S).�ThreadedNetworkedTestscCs�Gdd�d|j�}tr)td�|||�}|j|j|jj��tr�td�td|�td|j�td|j�tj	dd	|jd
|j
ddd
i�}d|_|j�tr�td�||fS)Nc@seZdZdd�ZdS)z4ThreadedNetworkedTests.make_server.<locals>.MyServercSs|j|�|j��dS)N)rhri)rrjrkrrrrls

zAThreadedNetworkedTests.make_server.<locals>.MyServer.handle_errorN)r0r1r2rlrrrrr�sr�zcreating serverzserver createdzADDR =zCLASS =zHDLR =rnz
%s servingrorprqg{�G�z�?Tzserver running)
rrrrArr{r5�getsocknameZRequestHandlerClassrrurvrxry)r�addr�hdlrr�r>r-rrr�make_server�s&


	
		

z"ThreadedNetworkedTests.make_servercCsBtrtd�|j�|j�|j�tr>td�dS)Nzwaiting for server�done)rrAr�rirL)rr>rwrrr�reap_servers



z"ThreadedNetworkedTests.reap_serverccsB|jtjdf|�\}}z	|VWd|j||�XdS)Nr)r�rrtr�)rr�r>rwrrr�
reaped_server(s!	z$ThreadedNetworkedTests.reaped_serverccsL|j|��6}|j|j�}z||fVWd|j�XWdQRXdS)N)r�rzr{r�)rr�r>r|rrr�reaped_pair0s
z"ThreadedNetworkedTests.reaped_pairc	Cs9|jt��#}|j|j�}|j�WdQRXdS)N)r�r:rzr{r�)rr>r|rrr�test_connect9sz#ThreadedNetworkedTests.test_connectcCsUGdd�dtj�}|j|��&}|jtjj|j|j�WdQRXdS)Nc@seZdZdd�ZdS)z9ThreadedNetworkedTests.test_issue5949.<locals>.EOFHandlercSs|jjd�dS)Ns* OK)rCrD)rrrrr`Csz@ThreadedNetworkedTests.test_issue5949.<locals>.EOFHandler.handleN)r0r1r2r`rrrrr�Bsr�)	r�r�r�r�rr�r�rzr{)rr�r>rrr�test_issue5949?sz%ThreadedNetworkedTests.test_issue5949cCsRGdd�dt�}|j|��&}|jtjj|j|j�WdQRXdS)Nc@seZdZdd�ZdS)zGThreadedNetworkedTests.test_line_termination.<locals>.BadNewlineHandlercSs$|jd�|j|dd�dS)Ns* CAPABILITY IMAP4rev1 AUTH
razCAPABILITY completed)rFrO)rrMr_rrrrcPs
zVThreadedNetworkedTests.test_line_termination.<locals>.BadNewlineHandler.cmd_CAPABILITYN)r0r1r2rcrrrrr�Nsr�)r:r�r�rr�r�rzr{)rr�r>rrrr�Ksz,ThreadedNetworkedTests.test_line_terminationc@s.eZdZdZdd�Zdd�ZdS)z!ThreadedNetworkedTests.UTF8ServerzAUTH ENABLE UTF8=ACCEPTcCs|j|dd�dS)NrazENABLE successful)rO)rrMr_rrrr�[sz,ThreadedNetworkedTests.UTF8Server.cmd_ENABLEccs1|jd�dV|j_|j|dd�dS)Nr�razFAKEAUTH successful)rJr>r�rO)rrMr_rrrr�^s

z2ThreadedNetworkedTests.UTF8Server.cmd_AUTHENTICATEN)r0r1r2rbr�r�rrrrr�Xsr�cCsb|j|j��I\}}|j|j�|jtjj|jd�|j|j�WdQRXdS)Nr�)	r�r�r�r�r�rr�r�r�)rr>r|rrrr�csz;ThreadedNetworkedTests.test_enable_raises_error_if_not_AUTHcCsXGdd�d|j�}|j|��)\}}|jtjj|jd�WdQRXdS)Nc@seZdZdZdS)zXThreadedNetworkedTests.test_enable_raises_error_if_no_capability.<locals>.NoEnableServerr�N)r0r1r2rbrrrr�NoEnableServernsr�r�)r�r�r�rr�r�r�)rr�r>r|rrrr�lsz@ThreadedNetworkedTests.test_enable_raises_error_if_no_capabilitycCs�Gdd�dt�}|jtjj��Y|j|��B\}}|jdd�\}}|j|d�|jd�WdQRXWdQRXdS)Nc@seZdZdS)z\ThreadedNetworkedTests.test_enable_UTF8_raises_error_if_not_supported.<locals>.NonUTF8ServerN)r0r1r2rrrr�
NonUTF8Serverusr�r�r�razUTF8=ACCEPT)	r:r�rr�r�r�r�rr�)rr�r>r|r�r�rrrr�ss
zEThreadedNetworkedTests.test_enable_UTF8_raises_error_if_not_supportedc	
Cs%Gdd�d|j�}|j|���\}}|j|jd�|jddd��\}}|j|d�|j|jd�|jd	�\}}|j|d�|j|jd
�d}|jddd|jd
��\}}|j|d�|j|jd|jd
��WdQRXdS)
Nc@seZdZdd�ZdS)zMThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.UTF8AppendServercss1|jd�dV|j_|j|dd�dS)Nr�rar�)rJr>r�rO)rrMr_rrrr��s

zXThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_APPENDN)r0r1r2r�rrrrr��sr�r�r�cSsdS)Nsfaker)r�rrrr��szEThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.<lambda>ras
ZmFrZQ==
zUTF8=ACCEPTzutf-8uSubject: üñí©öðézUTF8 (%s)
)	r�r�rr�r�r�r�r�rI)	rr�r>r|rNr�r�r�r�rrrr�~s"!z3ThreadedNetworkedTests.test_enable_UTF8_True_appendcCs�|j|j���\}}|jddd��\}}|j|d�|jd�\}}|j|d�|j|j�|jtj	j
|jdd�WdQRXdS)Nr�cSsdS)Nsfaker)r�rrrr��szSThreadedNetworkedTests.test_search_disallows_charset_in_utf8_mode.<locals>.<lambda>razUTF8=ACCEPTr�r�)r�r�r�rr�r�r�r�rr�r�r�)rr>r|r�r�rrrr��szAThreadedNetworkedTests.test_search_disallows_charset_in_utf8_modecCslGdd�dt�}|j|��@\}}|jtjj��|jddd��WdQRXWdQRXdS)Nc@seZdZdd�ZdS)z;ThreadedNetworkedTests.test_bad_auth_name.<locals>.MyServercSs$|j|ddj|d��dS)Nr�z#unrecognized authentication type {}r)rOr�)rrMr_rrrr��szLThreadedNetworkedTests.test_bad_auth_name.<locals>.MyServer.cmd_AUTHENTICATEN)r0r1r2r�rrrrr��sr�r�cSsdS)Nrrrrrrr��sz;ThreadedNetworkedTests.test_bad_auth_name.<locals>.<lambda>)r:r�r�rr�r�r�)rr�r>r|rrrr��sz)ThreadedNetworkedTests.test_bad_auth_namecCstGdd�dt�}|j|��H\}}|jtjj��#|jddd��\}}WdQRXWdQRXdS)Nc@seZdZdd�ZdS)zDThreadedNetworkedTests.test_invalid_authentication.<locals>.MyServercss.|jd�dV|_|j|dd�dS)Nr�r�z[AUTHENTICATIONFAILED] invalid)rJr�rO)rrMr_rrrr��s

zUThreadedNetworkedTests.test_invalid_authentication.<locals>.MyServer.cmd_AUTHENTICATEN)r0r1r2r�rrrrr��sr�r�cSsdS)Nsfaker)r�rrrr��szDThreadedNetworkedTests.test_invalid_authentication.<locals>.<lambda>)r:r�r�rr�r�r�)rr�r>r|rNr�rrrr��sz2ThreadedNetworkedTests.test_invalid_authenticationcCs�Gdd�dt�}|j|��N\}}|jddd��\}}|j|d�|j|jd�WdQRX|j|��N\}}|jddd��\}}|j|d�|j|jd�WdQRXdS)	Nc@seZdZdd�ZdS)zBThreadedNetworkedTests.test_valid_authentication.<locals>.MyServercss1|jd�dV|j_|j|dd�dS)Nr�razFAKEAUTH successful)rJr>r�rO)rrMr_rrrr��s

zSThreadedNetworkedTests.test_valid_authentication.<locals>.MyServer.cmd_AUTHENTICATEN)r0r1r2r�rrrrr��sr�r�cSsdS)Nsfaker)r�rrrr��szBThreadedNetworkedTests.test_valid_authentication.<locals>.<lambda>ras
ZmFrZQ==
cSsdS)Nr�r)r�rrrr��s)r:r�r�rr�)rr�r>r|rNr�rrr�test_valid_authentication�sz0ThreadedNetworkedTests.test_valid_authenticationcCs�Gdd�dt�}|j|��K\}}|jd|jk�|jdd�\}}|j|d�WdQRX|j|��K\}}|jd|jk�|jdd�\}}|j|d�WdQRXdS)Nc@s"eZdZdZdd�ZdS)z?ThreadedNetworkedTests.test_login_cram_md5.<locals>.AuthHandlerzLOGINDISABLED AUTH=CRAM-MD5cssM|jd�dV}|dkr6|j|dd�n|j|dd�dS)Nz:+ PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ=s2dGltIGYxY2E2YmU0NjRiOWVmYTFjY2E2ZmZkNmNmMmQ5ZjMy
razCRAM-MD5 successfulr�z	No access)rJrO)rrMr_r�rrrr��s

zPThreadedNetworkedTests.test_login_cram_md5.<locals>.AuthHandler.cmd_AUTHENTICATEN)r0r1r2rbr�rrrrr��sr�z
AUTH=CRAM-MD5r�r�rastanstaaftanstaaf)r:r�r�rbr�r)rr�r>r|r�r�rrr�test_login_cram_md5�sz*ThreadedNetworkedTests.test_login_cram_md5cCstGdd�dt�}|j|��H\}}|jtjj��#|jddd��\}}WdQRXWdQRXdS)Nc@seZdZdd�ZdS)zDThreadedNetworkedTests.test_aborted_authentication.<locals>.MyServercssS|jd�dV|_|jdkr<|j|dd�n|j|dd�dS)Nr�s*
r�z[AUTHENTICATIONFAILED] abortedrazMYAUTH successful)rJr�rO)rrMr_rrrr��s


zUThreadedNetworkedTests.test_aborted_authentication.<locals>.MyServer.cmd_AUTHENTICATEN)r0r1r2r�rrrrr��sr�r�cSsdS)Nr)r�rrrr�szDThreadedNetworkedTests.test_aborted_authentication.<locals>.<lambda>)r:r�r�rr�r�r�)rr�r>r|rNr�rrrr��sz2ThreadedNetworkedTests.test_aborted_authenticationcCsRGdd�dt�}|j|��&}|jtjj|j|j�WdQRXdS)Nc@seZdZdd�ZdS)z?ThreadedNetworkedTests.test_linetoolong.<locals>.TooLongHandlercSs#|jjdtjdd�dS)Ns* OK r�s
)rCrDrZ_MAXLINE)rrrrr`szFThreadedNetworkedTests.test_linetoolong.<locals>.TooLongHandler.handleN)r0r1r2r`rrrrr�sr�)r:r�r�rr�r�rzr{)rr�r>rrrr�sz'ThreadedNetworkedTests.test_linetoolongcCs7|jt��!}|j|j��WdQRXWdQRXdS)N)r�r:rzr{)rr>rrrr�sz1ThreadedNetworkedTests.test_simple_with_statementcCsl|jt��V}|j|j��*}|jdd�|j|jd�WdQRX|j|j�WdQRXdS)Nr�r�)r�r:rzr{r�rr?r�)rr>r�rrrr�s
z*ThreadedNetworkedTests.test_with_statementcCs�|jt��p}|j|j��D}|jdd�|j|jd�|j�|j|j�WdQRX|j|j�WdQRXdS)Nr�r�)	r�r:rzr{r�rr?r�r�)rr>r�rrrr�s
z1ThreadedNetworkedTests.test_with_statement_logoutN)"r0r1r2r�r�rrrr�rzr�r�rr�r�rr�r�r�r:r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr��s0		 		
	


r�c@s.eZdZeZeZedd��ZdS)�ThreadedNetworkedTestsSSLcCs�tjtj�}tj|_d|_|jt�|jtj	d��@|j
t��)}|j|j
d|�}|j�WdQRXWdQRX|j
t��0}|jd|j
dd|�}|j�WdQRXdS)NTz.hostname '127.0.0.1' doesn't match 'localhost'r�r�r)r7r�r�r�r�r�r�r�r�r�r�r:rzr{r�)rr�r>r|rrrr�0s	

		z+ThreadedNetworkedTestsSSL.test_ssl_verifiedN)	r0r1r2r3rrr�rzrr�rrrrr�+sr�Znetworkznetwork resource disabledc@saeZdZdZdZdZdZejZ	dd�Z
dd�Zd	d
�Zdd�Z
d
S)�RemoteIMAPTestzcyrus.andrew.cmu.edu�Z	anonymousr�c
Cs6t|j�� |j|j|j�|_WdQRXdS)N)r�hostrz�portr>)rrrr�setUpNszRemoteIMAPTest.setUpc	Cs7|jdk	r3t|j��|jj�WdQRXdS)N)r>rr�r�)rrrr�tearDownRszRemoteIMAPTest.tearDowncCs�t|j���x$|jjD]}|j|t�qW|jd|jj�|jd|jj�|jj|j|j	�}|j
|dd�WdQRXdS)N�
LOGINDISABLEDzAUTH=ANONYMOUSrra)rr�r>rb�assertIsInstance�str�assertInr��username�passwordr)r�cap�rsrrr�test_logincapaWszRemoteIMAPTest.test_logincapac
CsGt|j��1|jj�}d|_|j|dd�WdQRXdS)Nrr�)rr�r>r�r)rrrrrr�`s	zRemoteIMAPTest.test_logoutN)r0r1r2r�r�r�r�rr�rzr�r�rr�rrrrr�Es		r�cs.eZdZ�fdd�Zdd�Z�S)�RemoteIMAP_STARTTLSTestc
sKt�j�t|j��(|jj�}|j|dd�WdQRXdS)Nrra)r<r�rr�r>Zstarttlsr)rr)r@rrr�ls
zRemoteIMAP_STARTTLSTest.setUpcCsAx$|jjD]}|j|t�q
W|jd|jj�dS)Nr�)r>rbr�r��assertNotIn)rrrrrrrsz&RemoteIMAP_STARTTLSTest.test_logincapa)r0r1r2r�rrr)r@rrgsrc@s|eZdZdZeZdd�Zdd�Zdd�Zdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dS)�RemoteIMAP_SSLTesti�cCsdS)Nr)rrrrr�}szRemoteIMAP_SSLTest.setUpcCsdS)Nr)rrrrr��szRemoteIMAP_SSLTest.tearDowncCs#tjtj�}|jt�|S)N)r7r�r�Zload_cert_chainr8)rr�rrr�create_ssl_context�s
z%RemoteIMAP_SSLTest.create_ssl_contextc
Cs�zzx!|jD]}|j|t�q
W|jd|j�|jd|j�|j|j|j�}|j|dd�Wd|j	�XdS)Nr�z
AUTH=PLAINrra)
rbr�r�rr�r�r�r�rr�)rr>rrrrr�check_logincapa�sz"RemoteIMAP_SSLTest.check_logincapac
Cs@t|j��*|j|j|j�}|j|�WdQRXdS)N)rr�rzr�r)r�_serverrrrr�sz!RemoteIMAP_SSLTest.test_logincapac
CsSt|j��=|j|j|j�}|j�}|j|dd�WdQRXdS)Nrr�)rr�rzr�r�r)rrrrrrr��szRemoteIMAP_SSLTest.test_logoutcCsLt|j��6|jt|j|j|jdtd|j��WdQRXdS)Nr4r�)rr�r��
ValueErrorrzr�r8r)rrrr�#test_ssl_context_certfile_exclusive�sz6RemoteIMAP_SSLTest.test_ssl_context_certfile_exclusivecCsLt|j��6|jt|j|j|jdtd|j��WdQRXdS)NZkeyfiler�)rr�r�r	rzr�r8r)rrrr�"test_ssl_context_keyfile_exclusive�sz5RemoteIMAP_SSLTest.test_ssl_context_keyfile_exclusiveN)r0r1r2r�r�rzr�r�rrrr�r
rrrrrrxsr�__main__)4Ztestr�
import_moduler�
contextlibrrZos.path�osr�rr�inspectZtest.supportrrrrr	Zunittestr
rrr
r7�ImportError�pathrL�dirname�__file__�curdirr8r�ZTestCaserr�r3r�r�r:rgr�Z
skipUnlessr�r�r�Zis_resource_enabledr�rrr0�mainrrrr�<module>sZ(
**0	R�'�1 2