python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
test_imaplib.cpython-312.opt-2.pyc

Αe#ddlmZddlmZddlmZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZmZmZmZmZddlmZddlmZddlZddlmZdd	lmZmZmZ	ddlZej8d
ej:j=ej:j?e xsejBdZ"ej:j=ej:j?e xsejBd
Z#GddejHZ%er"Gdde	jLZ'ejPZ(nGddZ'dZ(Gdde	jRZ*GddZ+Gdde+ejHZ,ejZedGdde+ejHZ.GddejHZ/ejZedGdde/Z0ejZejbd d!ejdd"Gd#d$ejHZ3ejZedejZejbd d!ejdd"Gd%d&e3Z4ejZedejdd"Gd'd(e3Z5e6d)k(rejnyy#e$rdZYywxYw)*)support)
socket_helper)contextmanagerN)verboserun_with_tzrun_with_localecpython_onlyrequires_resource)hashlib_helper)threading_helper)mock)datetimetimezone	timedeltaT)modulezkeycert3.pemzpycacert.pemceZdZdZeddZdZedddedd	Zd
Z	e
jdZy)
TestImaplibctjd}tjd}|j	tj||tjd}|j	tj||tjd}|j	tj||y)N)	irrrrrrs.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"))calendartimegmimaplibInternaldate2tupleassertEqualtimemktime)selft0tts   E/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_imaplib.pytest_Internaldate2tuplez#TestImaplib.test_Internaldate2tuple s
__>
?

'
'=?R"-

'
'=?R"-

'
'=?R"-zMST+07MDT,M4.1.0,M10.5.0ct|jtjdtjdy)Ns.25 (INTERNALDATE "02-Apr-2000 02:30:00 +0000")s.25 (INTERNALDATE "02-Apr-2000 03:30:00 +0000"))assertNotEqualrrrs r!"test_Internaldate2tuple_issue10941z.TestImaplib.test_Internaldate2tuple_issue10941,s3G66=?&&A
C	Dr#cddtjdddtjdt	tdddgS)Ni5wgeA)	r*!rrr)	r)r*r+r*r,r-rrrri "18-May-2033 05:33:20 +0200")r	localtimer
fromtimestamprrr&s r!
timevalueszTestImaplib.timevalues3sEL$..*D43&&z'/	![0I'JL.0	0r#LC_ALLde_DEfr_FRzSTD-1DST,M3.2.0,M11.1.0cd}|jD])}tj|}|j||+y)Nr.)r1rTime2Internaldater)rexpectedtinternals    r!test_Time2Internaldatez"TestImaplib.test_Time2Internaldate;s?
2"	1A003HXx0	1r#cX|jD]}tj|yN)r1rr6)rr8s  r!,test_that_Time2Internaldate_returns_a_resultz8TestImaplib.test_that_Time2Internaldate_returns_a_resultFs("	)A%%a(	)r#ctj5}	|jdtjf|j	ddddt
j}|jt5}tjddd|jjj|y#tj
$rYwxYw#1swYxYw#1swYUxYw)Nz3Cannot run the test with local IMAP server running.)socketconnectr
IMAP4_PORTskipTesterrorrget_socket_conn_refused_errsassertRaisesOSErrorIMAP4assertIn	exceptionerrno)rsexpected_errnoscms    r!test_imap4_host_default_valuez)TestImaplib.test_imap4_host_default_valueMs]]_	
		2w1123

IK	(DDF


w
'	2MMO	

bll((/:<<

				s4C2B>:C#>CCCCC #C,N)
__name__
__module____qualname__r"rr'r1rr:r=rskip_if_tcp_blackholerOr#r!rrst
.+,D-D0Xw0*+1,11)((;);r#rceZdZdZy)SecureTCPServerc|jj\}}tjtj}|jt|j|d}||fS)NT)server_side)r@acceptssl
SSLContextPROTOCOL_TLS_SERVERload_cert_chainCERTFILEwrap_socket)r	newsocketfromaddrcontext
connstreams     r!get_requestzSecureTCPServer.get_requestbs["&++"4"4"6IxnnS%<%<=G##H- ,,YD,IJx''r#N)rPrQrRrdrTr#r!rVrV`s	(r#rVceZdZy)rVNrPrQrRrTr#r!rVrVmsr#czeZdZejZdZdZfdZdZ	dZ
dZdZdZ
d	Zd
ZdZdZd
ZxZS)SimpleIMAPHandlerNr?cft|d|j_d|j_yNF)supersetupserveris_selectedloggedr	__class__s r!rlzSimpleIMAPHandler.setupxs$

"'!r#c~trtd|jz|jj	|y)NzSENT: %r)rprintstripwfilewritermessages  r!_sendzSimpleIMAPHandler._send}s**w}}./

!r#c,|j|dzy)N
)ryrws  r!
_send_linezSimpleIMAPHandler._send_lines

7W$%r#cD|j|jdy)NASCII)r|encoderws  r!_send_textlinez SimpleIMAPHandler._send_textlinesw/0r#cJ|jdj|||fy)N )rjoin)rtagcoderxs    r!_send_taggedzSimpleIMAPHandler._send_taggeds CHHc4%9:;r#c|jd	d}		|jjd}|dk(ry||z
}|j	drn:t
rt
d|jz|jr	|jj||jdj}|d}|d}|dd}t|d	|zr+t|d	|z||}|r)||_t|n|j!|d
|dz#t$rYywxYw#t$r
d|_YwxYw)Nz* OK IMAP4rev1rr#r{zGOT: %rr~rcmd_BADz unknown)rrfilereadrGendswithrrsrtcontinuationsend
StopIterationdecodesplithasattrgetattrnextr)rlinepart	splitlinercmdargsrs        r!handlezSimpleIMAPHandler.handlesT,-D::??1-Ds{DLD==)i$**,./  -%%**40G,224IA,CA,CQR=DtVc\*:wtVc\:3E(4D%&!!#ucJ.>?K%-(,D%-s( DD?D*	D'&D'*D=<D=c|jrd|jznd}|jd|z|j|ddy)Nz
IMAP4rev1 	IMAP4rev1z
* CAPABILITY OKCAPABILITY completed)capabilitiesrr)rrrcapss    r!cmd_CAPABILITYz SimpleIMAPHandler.cmd_CAPABILITYsK$$t000 	
	
Od23#t%;<r#cnd|j_|jd|j|ddy)Nz"* BYE IMAP4ref1 Server logging outrzLOGOUT completed)rmrorrrrrs   r!
cmd_LOGOUTzSimpleIMAPHandler.cmd_LOGOUTs0!@A#t%78r#cR|d|j_|j|ddy)NrrzLOGIN completed)rmrorrs   r!	cmd_LOGINzSimpleIMAPHandler.cmd_LOGINs%!!W#t%67r#cnd|j_|jd|j|ddy)NT
* 2 EXISTSr[READ-WRITE] SELECT completed.)rmrnr|rrs   r!
cmd_SELECTzSimpleIMAPHandler.cmd_SELECTs-"&
&#t%EFr#c|jjr%d|j_|j|ddy|j|ddy)NFrz*Returned to authenticated state. (Success)rzNo mailbox selected)rmrnrrs   r!cmd_UNSELECTzSimpleIMAPHandler.cmd_UNSELECTsA;;""&+DKK#c4)UVc5*?@r#)rPrQrRrLOOPBACK_TIMEOUTtimeoutrrrlryr|rrrrrrrr
__classcell__rqs@r!rhrhssS&&GLL"
"
&1<(@T=9
8G
Ar#rhcLeZdZdZd"dZdZdZdZdZdZ	d	Z
d
ZdZdZ
d
ZdZdZej$dddZej$dddZdZej.dddZdZeddZdZdZdZdZdZ d Z!d!Z"y)#NewIMAPTestsMixinNTc	Gdd|j}|j|j|jtjdf||_t
j|jdz|j
jddi|_
d|j_|jj|r(|j|j
j|_|j|j
fS)	NceZdZdZy)/NewIMAPTestsMixin._setup.<locals>.TestTCPServercH	|j||jr<
close_requestserver_closerrequestclient_addresss   r!handle_errorz<NewIMAPTestsMixin._setup.<locals>.TestTCPServer.handle_errors&""7+!!#r#NrPrQrRrrTr#r!
TestTCPServerrs
r#rrz-server
poll_interval{Gz?nametargetkwargsT)server_class
addCleanup_cleanuprHOSTrm	threadingThread_testMethodName
serve_foreverthreaddaemonstart
imap_classserver_addressclient)rimap_handlerrArs    r!_setupzNewIMAPTestsMixin._setups		D--		


&''););Q(?N&&%%i/;;,,$T*
,")$//4;;+E+EFDK{{DKK''r#c8	|j3|jjdk7r|jj|jj|jj	tj|jd|_y)NLOGOUT)rstateshutdownrmrrjoin_threadrr&s r!rzNewIMAPTestsMixin._cleanupsm	;;"t{{'8'8H'DKK  "  "$$T[[1r#cGddtj}|j|d\}}|jtj
j|jg|jy)NceZdZdZy)ONewIMAPTestsMixin.test_EOF_without_complete_welcome_message.<locals>.EOFHandlerc:|jjdyNs* OKrurvr&s r!rzVNewIMAPTestsMixin.test_EOF_without_complete_welcome_message.<locals>.EOFHandler.handle	s

  )r#NrPrQrRrrTr#r!
EOFHandlerrs
*r#rFrA)	socketserverStreamRequestHandlerrrFrrHabortrr)rr_rms    r!)test_EOF_without_complete_welcome_messagez;NewIMAPTestsMixin.test_EOF_without_complete_welcome_messages\	*::	*KK
EK:	6'----t	2!00	2r#cGddt}|j|d\}}|jtjj
|jg|jy)NceZdZdZy)BNewIMAPTestsMixin.test_line_termination.<locals>.BadNewlineHandlercL|jd|j|ddyNs* CAPABILITY IMAP4rev1 AUTH
rrryrrs   r!rzQNewIMAPTestsMixin.test_line_termination.<locals>.BadNewlineHandler.cmd_CAPABILITY"

;<!!#t-CDr#NrPrQrRrrTr#r!BadNewlineHandlerrs
Er#rFr)rhrrFrrHrrr)rrrrms    r!test_line_terminationz'NewIMAPTestsMixin.test_line_terminationsZ	E 1	EKK 15KA	6'----t	2!00	2r#cVGddt}|j|\}}|j|j|j	t
jjd5|jdddd|j|jy#1swY%xYw)NceZdZdZy)MNewIMAPTestsMixin.test_enable_raises_error_if_not_AUTH.<locals>.EnableHandlerAUTH ENABLE UTF8=ACCEPTNrPrQrRrrTr#r!
EnableHandlerrs4Lr#rzENABLE.*NONAUTHfoo)	rhrassertFalseutf8_enabledassertRaisesRegexrrHrDenable)rrrrs    r!$test_enable_raises_error_if_not_AUTHz6NewIMAPTestsMixin.test_enable_raises_error_if_not_AUTHs	5-	5KK
.	,,-

#
#GMM$7$79J
K	!MM% 	!,,-	!	!s)BB(c|jt\}}|jtjj
d5|j
ddddy#1swYyxYw)Ndoes not support ENABLEr)rrhrrrHrDr)rrrs   r!)test_enable_raises_error_if_no_capabilityz;NewIMAPTestsMixin.test_enable_raises_error_if_no_capability!sSKK 12	

#
#GMM$7$7)+	!MM% 	!	!	!sAA'c"|jt\}}|jdd\}}|j|d|j	t
jjd5|jddddy#1swYyxYw)NuserpassrrUTF8=ACCEPT)	rrhloginrrrrHrDrrrrtypdatas     r!.test_enable_UTF8_raises_error_if_not_supportedz@NewIMAPTestsMixin.test_enable_UTF8_raises_error_if_not_supported'swKK 12	LL0	Td#

#
#GMM$7$7)+	)MM-(	)	)	)s*BBc^Gddt}|j|\}}|j|jd|j	dd\}}|j|d|j|j
d|j
d\}}|j|d|j|jd	d
}|jddd|jd	\}}|j|d|j|j
d|zjd	y)Nc"eZdZdZdZdZdZy)HNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServerzENABLE UTF8=ACCEPTc*|j|ddyNrzENABLE successfulrrs   r!
cmd_ENABLEzSNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_ENABLE2!!#t-@Ar#c3zK|jdd|j_|j|ddywN+rzFAKEAUTH successfulrrmresponserrs   r!cmd_AUTHENTICATEzYNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_AUTHENTICATE43##C(',$!!#t-BC9;c3zK|jdd|j_|j|ddywNrrokayrrs   r!
cmd_APPENDzSNewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_APPEND82##C(',$!!#tV4rN)rPrQrRrrrrrTr#r!UTF8AppendServerr0s/L
B
D
5r#r!asciiMYAUTHcyNsfakerTxs r!<lambda>z@NewIMAPTestsMixin.test_enable_UTF8_True_append.<locals>.<lambda>>r#r
ZmFrZQ==
rutf-8Subject: üñí©öðéUTF8 (%s)
)	rhrr	_encodingauthenticaterrappendr)	rr!rrmrr
msg_stringr	r
s	         r!test_enable_UTF8_True_appendz.NewIMAPTestsMixin.test_enable_UTF8_True_append/s	50	5%56))73%%h0ABat$/:--
.at$))73.
MM$dJ4E4Eg4NO	Td#
z
)11':	<r#cGddt}|j|\}}|jdd\}}|j|d|j	d\}}|j|d|j|j|jtjjd5|jdd	dddy#1swYyxYw)
NceZdZdZdZdZy)PNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Serverrc*|j|ddyrrrs   r!rz[NewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Server.cmd_ENABLEMrr#c3zK|jdd|j_|j|ddywrrrs   r!rzaNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.UTF8Server.cmd_AUTHENTICATEOrrNrPrQrRrrrrTr#r!
UTF8Serverr5Ks4L
B
Dr#r9r#cyr%rTr&s r!r(zNNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode.<locals>.<lambda>Tr)r#rrz
charset.*UTF8rbar)rhrr/rr
assertTruerrrrHrDsearch)rr9rrr	s     r!*test_search_disallows_charset_in_utf8_modez<NewIMAPTestsMixin.test_search_disallows_charset_in_utf8_modeJs	D*	DKK
+	$$X/@AQd#}-Qd#++,

#
#GMM$7$7
I	(MM%'	(	(	(s7CCcGddt}|j|\}}|jtjj
d5|j
dddddy#1swYyxYw)NceZdZdZy)6NewIMAPTestsMixin.test_bad_auth_name.<locals>.MyServercN|j|ddj|dyNNOz#unrecognized authentication type {}rrformatrs   r!rzGNewIMAPTestsMixin.test_bad_auth_name.<locals>.MyServer.cmd_AUTHENTICATE^s'!!#t9@@aIKr#NrPrQrRrrTr#r!MyServerrA]s
Kr#rHz'unrecognized authentication type METHODMETHODcyNrrTrTr#r!r(z6NewIMAPTestsMixin.test_bad_auth_name.<locals>.<lambda>dr)r#rhrrrrHrDr/rrHrrs    r!test_bad_auth_namez$NewIMAPTestsMixin.test_bad_auth_name\sg	K(	KKK)	

#
#GMM$7$79;	5)4	5	5	5A++A4cGddt}|j|\}}|jtjj
d5|j
dddddy#1swYyxYw)NceZdZdZy)?NewIMAPTestsMixin.test_invalid_authentication.<locals>.MyServerc3fK|jdd|_|j|ddywNrrDz[AUTHENTICATIONFAILED] invalidrrrrs   r!rzPNewIMAPTestsMixin.test_invalid_authentication.<locals>.MyServer.cmd_AUTHENTICATEh.##C( %
!!#t-MN/1NrGrTr#r!rHrRgs
Or#rHz \[AUTHENTICATIONFAILED\] invalidr#cyr%rTr&s r!r(z?NewIMAPTestsMixin.test_invalid_authentication.<locals>.<lambda>or)r#rLrMs    r!test_invalid_authenticationz-NewIMAPTestsMixin.test_invalid_authenticationfsh	O(	O
KK)	

#
#GMM$7$735	=*;<	=	=	=rOcGddt}|j|\}}|jdd\}}|j|d|j|jdy)NceZdZdZy)CNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.MyServerc3zK|jdd|j_|j|ddywrrrs   r!rzTNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.MyServer.cmd_AUTHENTICATEsrrNrGrTr#r!rHr\r
Dr#rHr#cyr%rTr&s r!r(zCNewIMAPTestsMixin.test_valid_authentication_bytes.<locals>.<lambda>xr)r#rr*rhrr/rrrrHrrmrrs      r!test_valid_authentication_bytesz1NewIMAPTestsMixin.test_valid_authentication_bytesqs`	D(	D
X.%%h0ABat$/:r#cGddt}|j|\}}|jdd\}}|j|d|j|jdy)NceZdZdZy)HNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.MyServerc3zK|jdd|j_|j|ddywrrrs   r!rzYNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.MyServer.cmd_AUTHENTICATE~rrNrGrTr#r!rHre}r^r#rHr#cyNfakerTr&s r!r(zHNewIMAPTestsMixin.test_valid_authentication_plain_text.<locals>.<lambda>r)r#rr*r`ras      r!$test_valid_authentication_plain_textz6NewIMAPTestsMixin.test_valid_authentication_plain_text|s`	D(	D
X.%%h0@Aat$/:r#md5opensslcGddt}|j|\}}|jd|jv|j	dd\}}|j|dy)NceZdZdZdZy)@NewIMAPTestsMixin.test_login_cram_md5_bytes.<locals>.AuthHandlerLOGINDISABLED AUTH=CRAM-MD5c3K|jdd}|dk(r|j|ddy|j|ddywNz:+ PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ=s2dGltIGYxY2E2YmU0NjRiOWVmYTFjY2E2ZmZkNmNmMmQ5ZjMy
rzCRAM-MD5 successfulrDz	No accessrrrrrrs    r!rzQNewIMAPTestsMixin.test_login_cram_md5_bytes.<locals>.AuthHandler.cmd_AUTHENTICATEP##%9:77%%c41FG%%c4=AANrPrQrRrrrTr#r!AuthHandlerrp8L
>r#rz
AUTH=CRAM-MD5timtanstaaftanstaafrrhrr<rlogin_cram_md5rrrzrrrets     r!test_login_cram_md5_bytesz+NewIMAPTestsMixin.test_login_cram_md5_bytessa
	>+
	>KK,	6+>+>>?&&u.ABQd#r#cGddt}|j|\}}|jd|jv|j	dd\}}|j|dy)NceZdZdZdZy)ENewIMAPTestsMixin.test_login_cram_md5_plain_text.<locals>.AuthHandlerrqc3K|jdd}|dk(r|j|ddy|j|ddywrsrtrus    r!rzVNewIMAPTestsMixin.test_login_cram_md5_plain_text.<locals>.AuthHandler.cmd_AUTHENTICATErwrxNryrTr#r!rzrr{r#rzr|r}tanstaaftanstaafrrrs     r!test_login_cram_md5_plain_textz0NewIMAPTestsMixin.test_login_cram_md5_plain_textsa
	>+
	>KK,	6+>+>>?&&u.@AQd#r#cGddt}|j|\}}|jtjj
d5|j
dddddy#1swYyxYw)NceZdZdZy)?NewIMAPTestsMixin.test_aborted_authentication.<locals>.MyServerc3K|jdd|_|jdk(r|j|ddy|j|ddywNrs*
rDz[AUTHENTICATIONFAILED] abortedrzMYAUTH successfulrUrs   r!rzPNewIMAPTestsMixin.test_aborted_authentication.<locals>.MyServer.cmd_AUTHENTICATEsS##C( %
==H,%%8:
%%c41DEAANrGrTr#r!rHrs	
Fr#rHz \[AUTHENTICATIONFAILED\] abortedr#cyr<rTr&s r!r(z?NewIMAPTestsMixin.test_aborted_authentication.<locals>.<lambda>r)r#rLrMs    r!test_aborted_authenticationz-NewIMAPTestsMixin.test_aborted_authenticationsg
	F(
	FKK)	

#
#GMM$7$735	:.9	:	:	:rOzimaplib._MAXLINE
cGddt}|j|d\}}|jtjj
d5|j|jdddy#1swYyxYw)NceZdZdZy):NewIMAPTestsMixin.test_linetoolong.<locals>.TooLongHandlerc:|jjdy)Ns* OK xxxxxxxxxxx
rr&s r!rzANewIMAPTestsMixin.test_linetoolong.<locals>.TooLongHandler.handles

  !?@r#NrrTr#r!TooLongHandlerrs
Ar#rFrzgot more than 10 bytes)rhrrrrHrDrr)rrrrms    r!test_linetoolongz"NewIMAPTestsMixin.test_linetoolongso	A.	AKKK>	6

#
#GMM$7$7(*	4DOOV223	4	4	4sA33A<c|jtd\}}|j|j5	dddy#1swYyxYw)NFr)rrhrr)rrrms   r!test_simple_with_statementz,NewIMAPTestsMixin.test_simple_with_statementsEKK 15KA	6
T__f33
4				s	?Awalltimec.|jt\}}|jd}|jd|d}|j	|j
jd|j|jd|tj}|j	|j
jtj|j|jt5|jd|d}dddy#1swYyxYw)Nr	localhostrr)rrhrrrsockrrrrrF
ValueError)rrrmaddrrs     r!test_imaplib_timeout_testz+NewIMAPTestsMixin.test_imaplib_timeout_testsKK 12	6$$Q'dDA,,d3dG<T<TU,,g.F.FG


z
*	C__[$_BF	C	C	Cs-DDcGddt}|j|\}}|jd}|jt5|jd|d}dddy#1swYyxYw)NceZdZdZy)QNewIMAPTestsMixin.test_imaplib_timeout_functionality_test.<locals>.TimeoutHandlercXtjdtj|yrK)rsleeprhrr&s r!rzXNewIMAPTestsMixin.test_imaplib_timeout_functionality_test.<locals>.TimeoutHandler.handles

1
!((.r#NrrTr#r!TimeoutHandlerrs
/r#rrrgMbP?r)rhrrrFTimeoutErrorr)rrrrmrrs      r!'test_imaplib_timeout_functionality_testz9NewIMAPTestsMixin.test_imaplib_timeout_functionality_testsn	/.	/
KK/	6$$Q'


|
,	G__[$_FF	G	G	GsA&&A/c&|jtd\}}|j|j5}|j	dd|j|jdddd|j|jy#1swY%xYwNFrrr)rrhrrrrroassertIsNonerrrmimaps    r!test_with_statementz%NewIMAPTestsMixin.test_with_statementszKK 15KA	6
T__f33
4	4JJvv&V]]F3	4	
&--(	4	4s/BBc||jtd\}}|j|j5}|j	dd|j|jd|j|j|jddd|j|jy#1swY%xYwr)	rrhrrrrrologoutrrs    r!test_with_statement_logoutz,NewIMAPTestsMixin.test_with_statement_logoutsKK 15KA	6
T__f33
4	-JJvv&V]]F3KKMfmm,		-
	
&--(	-	-sAB22B;c|jt\}}|jdd\}}|j|d|j|dd|j|jdy)NrrrrLOGIN completedAUTH)rrhrrrrs     r!
test_loginzNewIMAPTestsMixin.test_loginsbKK 12	LL0	Td#a"45v.r#cd|jt\}}|jdd\}}|j|d|j|dd|j	\}}|j|d||f|j|dd||f|j|j
dy)	NrrrrrBYEsIMAP4ref1 Server logging outr)rrhrrrrrs     r!test_logoutzNewIMAPTestsMixin.test_logoutsKK 12	LL0	Td#a"45MMO	Tec4[1a"AC;Ox0r#cGddt}|j|\}}|jdd|j\}}|j	|d|j	|ddy)NceZdZdZy),NewIMAPTestsMixin.test_lsub.<locals>.LsubCmdcJ|jd|j|ddS)Nz* LSUB () "." directoryArzLSUB completedrtrs   r!cmd_LSUBz5NewIMAPTestsMixin.test_lsub.<locals>.LsubCmd.cmd_LSUB
s'##$>?((d4DEEr#N)rPrQrRrrTr#r!LsubCmdr	s
Fr#rrrrrs() "." directoryA)rhrrlsubr)rrrrr	r
s      r!	test_lsubzNewIMAPTestsMixin.test_lsubsg	F'	FKK(	VV$KKM	Td#a"67r#cx|jt\}}|jdd|j\}}|j	|d|j	|dd|j\}}|j	|d|j	|dd|j	|jdy)Nrrrr2s*Returned to authenticated state. (Success)r)rrhrselectrunselectrrs     r!
test_unselectzNewIMAPTestsMixin.test_unselectsKK 12	VV$MMO	Td#a$'OO%	Td#a"OPv.r#)T)#rPrQrRrrrrrrrrr2r>rNrYrbrjrrequires_hashdigestrrrr
patchrrr
rrrrrrrrrTr#r!rrs
F(B 22.!)<6($5	=	;	;(^''t<$=$"(^''t<$=$":"TZZ"B'4(4
z"
C#
C	G))/1	8
/r#rc<eZdZejZejZy)NewIMAPTestsN)	rPrQrRrrHrr	TCPServerrrTr#r!rr sJ))Lr#rzSSL not availablecLeZdZeZeZeddZeddZ	y)NewIMAPSSLTestsrctjtj}|j|jtj
|j|jd|jt|jtjd5|jt\}}|j|jd|i}|jdddy#1swYyxYw)NT=IP address mismatch, certificate is not valid for '127.0.0.1'ssl_context)rZr[PROTOCOL_TLS_CLIENTrverify_mode
CERT_REQUIREDcheck_hostnameload_verify_locationsCAFILErCertificateErrorrrhrrrrrrrmrs     r!test_ssl_raiseszNewIMAPSSLTests.test_ssl_raises*snnS%<%<=00#2C2CD33T:))&1

#
#C$8$8	$56IAv$T__f&;&;>1<>FOO
			s
AC--C6ctjtj}|jt|jt\}}|jd|jd|}|jy)Nrrr)
rZr[rrrrrhrrrrs     r!test_ssl_verifiedz!NewIMAPSSLTests.test_ssl_verified9sfnnS%<%<=))&1KK 12	6f.C.CA.F-8!:r#N)
rPrQrR	IMAP4_SSLrrVrr
rrrTr#r!rr%s<J"Lz"#z"#r#rcpeZdZejZejZdZ	dZ
edZedZ
ejdZejdZejdZejdZGd	d
eZejdZejdZejd
ZejdZejdZejdZejdZejdZejej>dddZ ejdZ!dZ"ejdZ#ejdZ$ejdZ%eje&e'jPdddZ)y) ThreadedNetworkedTestscGdd|j}trtd|||}|j|j|j
j
trCtdtd|td|jtd|jtjd|jz|jd	d
i}d|_|jtrtd
||fS)NceZdZdZy)4ThreadedNetworkedTests.make_server.<locals>.MyServercF|j||jr<rrs   r!rzAThreadedNetworkedTests.make_server.<locals>.MyServer.handle_errorJs""7+!!#r#NrrTr#r!rHrIs
r#rHzcreating serverzserver createdzADDR =zCLASS =zHDLR =z
%s servingrrrTzserver running)
rrrsrrr@getsocknameRequestHandlerClassrrrrr)rrhdlrrHrmr8s      r!make_serverz"ThreadedNetworkedTests.make_serverGs	t((	#$$%..

0I0I0KL"#(D!)T../(F667 1 11''$T*

,		"#qyr#ctrtd|j|j|j	trtdyy)Nzwaiting for serverdone)rrsrrr)rrmrs   r!reap_serverz"ThreadedNetworkedTests.reap_servergs<&'
&Mr#c#K|jtjdf|\}}	||j||y#|j||wxYww)Nr)rrrr)rrrmrs    r!
reaped_serverz$ThreadedNetworkedTests.reaped_serverpsQ))=+=+=q*A4H	-LVV,DVV,s&AAAAAc#K|j|5}|j|j}	||f|j	dddy#|jwxYw#1swYyxYwwr<)rrrr)rrrmrs    r!reaped_pairz"ThreadedNetworkedTests.reaped_pairxsj



%	 $T__f&;&;<F
 fn$

	 	 


	 	 s2A0A$AA$	A0A!!A$$A-)A0c|jt5}|j|j}|j	dddy#1swYyxYwr<)rrhrrrrrmrs   r!test_connectz#ThreadedNetworkedTests.test_connectsH


 1
2	f$T__f&;&;<FOO			s*A		AcGddt}|j|5\}}|jdd\}}|j|d|j|jd|jd|j
dd	d
\}\}|jd||jd|j	d\}\}|jd|dddy#1swYyxYw)
Nc0eZdZfdZdZdZdZxZS)EThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandlerc4gd|_t|	y)N)AnsweredFlaggedDeletedSeenDraft)flagsrkrrps r!rzLThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.handlesP
 r#c3zK|jdd|j_|j|ddywrrrs   r!rzVThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_AUTHENTICATErrc4dj|j}|jd|zjd|jd|jdd|z}|j|jd|j	|ddy)	N \z* FLAGS (%s)r"rs
* 0 RECENTz-* OK [PERMANENTFLAGS %s \*)] Flags permitted.rr)rrr|rr)rrrflag_msgmsgs     r!rzPThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_SELECTs} ::djj1(!: B B7 KL
.
.G"#

7 34!!#t-MNr#cT|djdjdj}|jj|ddj	|jz}d|dd|}|j|j
d	|j|d
dy)Nr()z(FLAGS (%s))rz* rz FETCH r"rzSTORE completed.)rtrrextendrr|rr)rrr	new_flags	flags_msgrs      r!	cmd_STOREzOThreadedNetworkedTests.test_bracket_flags.<locals>.BracketFlagHandler.cmd_STOREs GMM#.44S9??A	

!!),*UZZ

-CC	)-a)<

7 34!!#t-?@r#)rPrQrRrrrrrrs@r!BracketFlagHandlerrs
!
D

O
Ar#r	r#cyr%rTr&s r!r(z;ThreadedNetworkedTests.test_bracket_flags.<locals>.<lambda>r)r#rr*test1z+FLAGSz[test]s[test]PERMANENTFLAGS)rhrr/rrrstorerI)rr	rmrrr
r	s       r!test_bracket_flagsz)ThreadedNetworkedTests.test_bracket_flagss	A!2	A:

0
1		+5Eff,,X7HIJD$T4(V__o>MM&! ,,tXx@KC$MM)T*MM&! //*:;KC$MM)T*		+		+		+sB<C&&C/cGddtj}|j|5}|jtj
j|jg|jdddy#1swYyxYw)NceZdZdZy)9ThreadedNetworkedTests.test_issue5949.<locals>.EOFHandlerc:|jjdyrrr&s r!rz@ThreadedNetworkedTests.test_issue5949.<locals>.EOFHandler.handles

  )r#NrrTr#r!rrs
*r#r)	rrrrFrrHrrr)rrrms   r!test_issue5949z%ThreadedNetworkedTests.test_issue5949sr	*::	*




+	GvDgmm11"oo
G060E0E
G	G	G	GsAA55A>cGddt}|j|5}|jtjj
|jg|jdddy#1swYyxYw)NceZdZdZy)GThreadedNetworkedTests.test_line_termination.<locals>.BadNewlineHandlercL|jd|j|ddyrrrs   r!rzVThreadedNetworkedTests.test_line_termination.<locals>.BadNewlineHandler.cmd_CAPABILITYrr#NrrTr#r!rrs
Er#r)rhrrFrrHrrr)rrrms   r!rz,ThreadedNetworkedTests.test_line_terminationsp	E 1	E

 1
2	GfDgmm11"oo
G060E0E
G	G	G	GAA++A4ceZdZdZdZdZy)!ThreadedNetworkedTests.UTF8Serverrc*|j|ddyrrrs   r!rz,ThreadedNetworkedTests.UTF8Server.cmd_ENABLEsc4)<=r#c#zK|jdd|j_|j|ddywrrrs   r!rz2ThreadedNetworkedTests.UTF8Server.cmd_AUTHENTICATEs3$#(DKK c4)>?rNr8rTr#r!r9rs0	>	@r#r9c@|j|j5\}}|j|j|j	t
jj|jd|j|jdddy#1swYyxYw)Nr)	rr9rrrFrrHrDrrs   r!rz;ThreadedNetworkedTests.test_enable_raises_error_if_not_AUTHsx


doo
.	22B66V001gmm116==%HV001	2	2	2sA/BBcGdd|j}|j|5\}}|jtjj
|jddddy#1swYyxYw)NceZdZdZy)XThreadedNetworkedTests.test_enable_raises_error_if_no_capability.<locals>.NoEnableServerrNrrTr#r!NoEnableServerr!s!Lr#r"r)r9rrFrrHrDr)rr"rmrs    r!rz@ThreadedNetworkedTests.test_enable_raises_error_if_no_capabilitys`	"T__	"


n
-	I1A&&gmm116==%H	I	I	Is9A))A2c`Gddt}|jtjj5|j|5\}}|j
dd\}}|j|d|jdddddddy#1swYxYw#1swYyxYw)NceZdZy)\ThreadedNetworkedTests.test_enable_UTF8_raises_error_if_not_supported.<locals>.NonUTF8ServerNrfrTr#r!
NonUTF8Serverr%sr#r&rrrr)	rhrFrrHrDrrrr)rr&rmrr	r
s      r!rzEThreadedNetworkedTests.test_enable_UTF8_raises_error_if_not_supporteds	-	


w}}22
3	-!!-0
-4DVV"LL8	T  d+

m,
-	-	-
-
-	-	-s#B$<BB$B!	B$$B-c	Gdd|j}|j|5\}}|j|jd|j	dd\}}|j|d|j|j
d|j
d\}}|j|d|j|jd	d
}|jddd|jd	\}}|j|d|j|j
d|zjd	dddy#1swYyxYw)NceZdZdZy)MThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.UTF8AppendServerc3zK|jdd|j_|j|ddywrrrs   r!rzXThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.UTF8AppendServer.cmd_APPENDr rN)rPrQrRrrTr#r!r!r)s
5r#r!r"r#cyr%rTr&s r!r(zEThreadedNetworkedTests.test_enable_UTF8_True_append.<locals>.<lambda>r)r#rr*rr+r,r-)	r9rrr.r/rrr0r)	rr!rmrrrr1r	r
s	         r!r2z3ThreadedNetworkedTests.test_enable_UTF8_True_appends.	5t	5

.
/	3CFFV--w7))(4EFGD!T4(V__,
.mmM2GD!T4(V--w72J

dD*"3"3G"<>ICS$' :-55g>
			sDD>>Ec|j|j5\}}|jdd\}}|j|d|j	d\}}|j|d|j|j|jtjj|jdddddy#1swYyxYw)Nr#cyr%rTr&s r!r(zSThreadedNetworkedTests.test_search_disallows_charset_in_utf8_mode.<locals>.<lambda>r)r#rrrr;)rr9r/rrr<rrFrrHrDr=)rrmrr	rs     r!r>zAThreadedNetworkedTests.test_search_disallows_charset_in_utf8_modes


doo
.	P2B66((3DEFCS$']]=1FCS$'OOF//0gmm116==%O
	P	P	PsB#CCcGddt}|j|5\}}|jtjj
5|j
ddddddddy#1swYxYw#1swYyxYw)NceZdZdZy);ThreadedNetworkedTests.test_bad_auth_name.<locals>.MyServercN|j|ddj|dyrCrErs   r!rzLThreadedNetworkedTests.test_bad_auth_name.<locals>.MyServer.cmd_AUTHENTICATE#s&!!#t.,,2F47O=r#NrGrTr#r!rHr0!s
=r#rHrIcyrKrTrTr#r!r(z;ThreadedNetworkedTests.test_bad_auth_name.<locals>.<lambda>)r)r#rhrrFrrHrDr/)rrHrmrs    r!rNz)ThreadedNetworkedTests.test_bad_auth_names}	=(	=

h
'	9+;FF""7==#6#67
9##Hi8
9	9	9
9
9	9	9s#-A?A3"A?3A<	8A??BcGddt}|j|5\}}|jtjj
5|j
dd\}}ddddddy#1swYxYw#1swYyxYw)NceZdZdZy)DThreadedNetworkedTests.test_invalid_authentication.<locals>.MyServerc3fK|jdd|_|j|ddywrTrUrs   r!rzUThreadedNetworkedTests.test_invalid_authentication.<locals>.MyServer.cmd_AUTHENTICATE0rVrWNrGrTr#r!rHr6.s
Or#rHr#cyr%rTr&s r!r(zDThreadedNetworkedTests.test_invalid_authentication.<locals>.<lambda>7r)r#r3rrHrmrrr
s      r!rYz2ThreadedNetworkedTests.test_invalid_authentication+s	O(	O

h
'	N+;FF""7==#6#67
N#00;LM
d
N	N	N
N
N	N	N#-BA6%B6A?	;BBcGddt}|j|5\}}|jdd\}}|j|d|j|jdddd|j|5\}}|jdd\}}|j|d|j|jddddy#1swYkxYw#1swYyxYw)NceZdZdZy)BThreadedNetworkedTests.test_valid_authentication.<locals>.MyServerc3zK|jdd|j_|j|ddywrrrs   r!rzSThreadedNetworkedTests.test_valid_authentication.<locals>.MyServer.cmd_AUTHENTICATE>rrNrGrTr#r!rHr=<s
Dr#rHr#cyr%rTr&s r!r(zBThreadedNetworkedTests.test_valid_authentication.<locals>.<lambda>Dr)r#rr*cyrhrTr&s r!r(zBThreadedNetworkedTests.test_valid_authentication.<locals>.<lambda>Jr)r#)rhrr/rrr9s      r!test_valid_authenticationz0ThreadedNetworkedTests.test_valid_authentication9s	D(	D

h
'	.+;FF,,X7HIJD$T4(V__,
.	.

h
'	.+;FF,,X7GHJD$T4(V__,
.	.	.
	.	.	.	.ACACCC(rkTrlcGddt}|j|5\}}|jd|jv|j	dd\}}|j|dddd|j|5\}}|jd|jv|j	dd\}}|j|ddddy#1swYkxYw#1swYyxYw)NceZdZdZdZy)?ThreadedNetworkedTests.test_login_cram_md5.<locals>.AuthHandlerrqc3K|jdd}|dk(r|j|ddy|j|ddywrsrtrus    r!rzPThreadedNetworkedTests.test_login_cram_md5.<locals>.AuthHandler.cmd_AUTHENTICATEWrwrxNryrTr#r!rzrESs8L
>r#rzr|r}rrr~)rhrr<rrr)rrzrmrrr
s      r!test_login_cram_md5z*ThreadedNetworkedTests.test_login_cram_md5Os	>+	>

k
*	(.>vvOOOv/B/BBC--e5GHICS$'	(


k
*	(.>vvOOOv/B/BBC--e5HIICS$'	(	(	(	(
	(	(rBcGddt}|j|5\}}|jtjj
5|j
dd\}}ddddddy#1swYxYw#1swYyxYw)NceZdZdZy)DThreadedNetworkedTests.test_aborted_authentication.<locals>.MyServerc3K|jdd|_|jdk(r|j|ddy|j|ddywrrUrs   r!rzUThreadedNetworkedTests.test_aborted_authentication.<locals>.MyServer.cmd_AUTHENTICATEqsM##C( %
==H,%%c41QR%%c41DErNrGrTr#r!rHrJos
Fr#rHr#cyr<rTr&s r!r(zDThreadedNetworkedTests.test_aborted_authentication.<locals>.<lambda>|r)r#r3r9s      r!rz2ThreadedNetworkedTests.test_aborted_authenticationls		F(		F

h
'	K+;FF""7==#6#67
K#00>J
d
K	K	K
K
K	K	Kr:cGddt}|j|5}|jtjj
|jg|jdddy#1swYyxYw)NceZdZdZy)?ThreadedNetworkedTests.test_linetoolong.<locals>.TooLongHandlerch|jjdtjdzzdzy)Ns* OK xr{)rurvr_MAXLINEr&s r!rzFThreadedNetworkedTests.test_linetoolong.<locals>.TooLongHandler.handles)

  G,<,<t,C!Cg!MNr#NrrTr#r!rrOs
Or#r)rhrrFrrHrDrr)rrrms   r!rz'ThreadedNetworkedTests.test_linetoolongso	O.	O



/	G6Dgmm11"oo
G060E0E
G	G	G	Grc|jt5}|j|j5	ddddddy#1swYxYw#1swYyxYwr<)rrhrr)rrms  r!rz1ThreadedNetworkedTests.test_simple_with_statements[

 1
2	f &"7"78

		

		s!AAAA	AAcF|jt5}|j|j5}|j	dd|j|jdddd|j|jdddy#1swY-xYw#1swYyxYwNrr)rrhrrrrrorrrmrs   r!rz*ThreadedNetworkedTests.test_with_statements


 1
2	-f &"7"78
8D

66*  7
8
fmm,		-	-
8
8	-	-s"B/B#BB	BB c|jt5}|j|j5}|j	dd|j|jd|j|j|jddd|j|jdddy#1swY-xYw#1swYyxYwrU)	rrhrrrrrorrrVs   r!rz1ThreadedNetworkedTests.test_with_statement_logouts

 1
2	-f &"7"78
1D

66*  7
!!&--0	
1

fmm,
	-	-
1
1	-	-s#CAB6
#C6B?	;CCFz Won't work if __debug__ is Falseclddgi}|jt5}|j|j5}tj
j
|d5}|j||jddddddddddy#1swYxYw#1swYxYw#1swYyxYw)Nz
READ-WRITEr#_mesgz)untagged responses dump:READ-WRITE: [b''])	rrhrrr
robject_dump_urassert_called_with)runtagged_resp_dictrmr	mock_mesgs     r!test_dump_urz#ThreadedNetworkedTests.test_dump_urs
+SE2


 1
2	f &"7"78
DZZ&&tW5MM"4500C
		

		s:B*!B#B9BB*BBB'	#B**B3N)*rPrQrRrrrrrHrrrrrrrreap_threadsrrrrrhr9rrrr2r>rNrYrArrrGrrrrrr	unittest
skipUnlessr_rTr#r!rrCsw))LJ@--  ""#
"".+#.+`""	G#	G""
G#
G	@&	@""2#2""I#I""-#-""#:""P#P""
9#
9""N#N"".#.*""'^''t<(=#(6""K#K$G""#""-#-""-#-""X$FG
H#
r#rc8eZdZeZeZejdZ	y)ThreadedNetworkedTestsSSLc@tjtj}|jt|jtjd5|jt5}|j|jd|i}|jdddddd|jt5}|jd|jd|}|jdddy#1swYaxYw#1swYexYw#1swYyxYw)Nrrrrr)rZr[rrrrrrrhrrr)rrrmrs    r!rz+ThreadedNetworkedTestsSSL.test_ssl_verifiedsnnS%<%<=))&1

#
#$$	"##$56
"&(&*?*?B5@B!
"		"

 1
2	f__[&2G2G2J1<%>FOO		
"
"		"	"		s0D/-C<D2D<D	DDDN)
rPrQrRrVrrrrr`rrTr#r!rdrds$"LJ""#r#rdnetworkznetwork resource disabledz'cyrus.andrew.cmu.edu blocks connectionscLeZdZdZdZdZdZejZ	dZ
dZdZdZ
y	)
RemoteIMAPTestzcyrus.andrew.cmu.edu	anonymousrctj|j5|j|j|j|_dddy#1swYyxYwr<)rtransient_internethostrportrmr&s r!setUpzRemoteIMAPTest.setUpsG

-
-dii
8	@//$))TYY?DK	@	@	@s,AAc|jCtj|j5|jj	dddyy#1swYyxYwr<)rmrrlrmrr&s r!tearDownzRemoteIMAPTest.tearDownsM;;"11$))<
%""$
%
%#
%
%sAActj|j5|jjD]}|j|t|jd|jj|jd|jj|jj|j|j}|j|dddddy#1swYyxYw)N
LOGINDISABLEDzAUTH=ANONYMOUSrr)rrlrmrmrassertIsInstancestrrIrusernamepasswordr)rcaprss   r!test_logincapazRemoteIMAPTest.test_logincapas

-
-dii
8	*{{//
0%%c3/
0MM/4;;+C+CDMM*DKK,D,DE""4==$--@BRUD)
	*	*	*sCC,,C5ctj|j5|jj	}d|_|j|dd|dddy#1swYyxYwNrr)rrlrmrmrr)rrys  r!rzRemoteIMAPTest.test_logoutsX

-
-dii
8	/##%BDKRUE2.	/	/	/8A!!A*N)rPrQrRrmrnrvrwrrHrrorqrzrrTr#r!rhrhs6"DDHHJ@%
*/r#rhc$eZdZfdZdZxZS)RemoteIMAP_STARTTLSTestct|tj|j5|j
j
}|j|dddddy#1swYyxYw)Nrr)rkrorrlrmrmstarttlsr)rryrqs  r!rozRemoteIMAP_STARTTLSTest.setUpsY



-
-dii
8	*%%'BRUD)	*	*	*s0A((A1c|jjD]}|j|t|j	d|jjy)Nrs)rmrrtruassertNotIn)rrxs  r!rzz&RemoteIMAP_STARTTLSTest.test_logincapasE;;++	,C!!#s+	,$++*B*BCr#)rPrQrRrorzrrs@r!rrs*Dr#rc8eZdZdZeZdZdZdZdZ	dZ
dZy)	RemoteIMAP_SSLTesticyr<rTr&s r!rozRemoteIMAP_SSLTest.setUpr#cyr<rTr&s r!rqzRemoteIMAP_SSLTest.tearDown
rr#ctjtj}d|_tj|_|j
t|Srj)rZr[rr	CERT_NONErr]r^)rrs  r!create_ssl_contextz%RemoteIMAP_SSLTest.create_ssl_context
s>nnS%<%<=%*""%--##H-r#c	|jD]}|j|t|jd|j|j	d|j|j|j|j}|j|dd|jy#|jwxYw)Nrsz
AUTH=PLAINrr)
rrtrurrIrrvrwrr)rrmrxrys    r!check_logincapaz"RemoteIMAP_SSLTest.check_logincapas	**
0%%c3/
0_f.A.ABMM,(;(;<dmmT]];BRUD)MMOFMMOsBB--B?ctj|j5|j|j|j}|j|dddy#1swYyxYwr<)rrlrmrrnr)r_servers  r!rzz!RemoteIMAP_SSLTest.test_logincapasO

-
-dii
8	*oodii;G  )	*	*	*r}ctj|j5|j|j|j}|j}|j
|dd|dddy#1swYyxYwr|)rrlrmrrnrr)rrrys   r!rzRemoteIMAP_SSLTest.test_logout$sc

-
-dii
8	/oodii;G!BRUE2.	/	/	/sA
A66A?N)rPrQrRrnrrrorqrrrzrrTr#r!rrs,DJ

	*
/r#r__main__)8rrtest.supportr
contextlibrros.pathosrrrrr@rrrr	r
rrrar
rrrrZImportErrorrequires_working_socketpathrdirname__file__curdirr^rTestCaserrrVrrrhrrrbrrrdis_resource_enabledskiprhrrrPmainrTr#r!<module>rs&%
__')22 t,
77<<1>RYYO	bggooh/<299n	M>;(##>;B(,00(!!I

I\A99\A~K/K/\
*$h&7&7*
S-.'):):/:mX..m`S-. 6/0G	*,GI89/X&&/:I/@S-.G	*,GI89DnD:I/DS-.89%/%/:/%/PzHMMOm 
CsKKK