python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_nntplib.cpython-311.opt-2.pyc

eddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZmZejdZddlmZmZddlmZ	ddlZn
#e$rdZYnwxYwejejeddZeejZnGd	d
eZGddZe e!fZ"ee"ej#fz
Z"Gd
deej$Z%ej&edGdde%Z'Gddej(Z)dZ*GddejZ+GddZ,Gdde,Z-GddZ.Gdde.Z/Gdd e/Z0Gd!d"e/Z1Gd#d$Z2Gd%d&e2e,ej$Z3Gd'd(e2e,ej$Z4Gd)d*e,ej$Z5Gd+d,e-ej$Z6Gd-d.ej$Z7Gd/d0ej$Z8Gd1d2ej$Z9Gd3d4Z:ej&edGd5d6e9Z;Gd7d8ej$Z<e=d9krej>dSdS):N)support)
socket_helperwarnings_helpernntplib)NNTP	GroupInfo)patchcertdatazkeycert3.pemceZdZ	dZdS)SSLErrorzThis will never be raised.N)__name__
__module____qualname__reasonE/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_nntplib.pyrrsD-rrceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZejdddZdZddZejdddZdZdZdZedZdZdZdS)NetworkedNNTPTestsMixinNc|j}|tt	|dSN)server
getwelcomeassertEqualstrtype)selfwelcomes  rtest_welcomez$NetworkedNNTPTestsMixin.test_welcome*s7+((**d7mm,,,,,rc|j\}}||d||D]*}|t
t
|+dS)Nz100 )rhelp
assertTrue
startswithrrr)rresplineslines    r	test_helpz!NetworkedNNTPTestsMixin.test_help.sqk&&((e//666	.	.DS$t**----	.	.rc*|j\}}t|dkrc|tt|d|tt|djdSdSNr)rlistlenrrrrgrouprr$groupss   r	test_listz!NetworkedNNTPTestsMixin.test_list4sy{''))fv;;??YVAY888S$vay"7"788888?rc6|j|j\}}t|dkrc|t
t
|d|tt
|djdSdSr))	rr*	GROUP_PATr+rrrrr,r-s   rtest_list_activez(NetworkedNNTPTestsMixin.test_list_active:s}{''77fv;;??YVAY888S$vay"7"788888?rc|tj5}|jddddn#1swxYwY|jj}||d|dS)NXYZZYz500 )	assertRaisesrNNTPPermanentErrorr	_shortcmd	exceptionresponser"r#)rcmr$s   rtest_unknown_commandz,NetworkedNNTPTestsMixin.test_unknown_command@s


w9
:
:	+bK!!'***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+|$//66666sAAAc`tjtjdz
}|j|\}}t
|dkrI||dt||dj	tdSdS)N)daysr)datetimedatetoday	timedeltar	newgroupsr+assertIsInstancerr,r)rdtr$r.s    rtest_newgroupsz&NetworkedNNTPTestsMixin.test_newgroupsFs]
 
 
"
"X%7Q%?%?%?
?{,,R00fv;;??!!&)Y777!!&)/377777?rcPfd}jj}||j|jj}||jd}|ddS)Nct|tj|dSr)rDrassertNotIn
GROUP_NAME)descrs r_check_descz=NetworkedNNTPTestsMixin.test_description.<locals>._check_descPs7!!$,,,T_d33333rzzk.brrtt.baz)rdescriptionrJassertInDESCr1r)rrLrKs`  rtest_descriptionz(NetworkedNNTPTestsMixin.test_descriptionOs	4	4	4	4	4{&&t77D

di&&&{&&t~66D{&&~66r"""""rc||j|j\}}||dp|d|||t||j}|||j	|jdS)Nz215 z282 )
rdescriptionsr1r"r#rDdictrJrrN)rr$descsrKs    rtest_descriptionsz)NetworkedNNTPTestsMixin.test_descriptions_sk..t~>>eOOF##>tv'>'>	F	F	FeT***T_%t{66tGGHHHHHrc|j|j}|dt	||\}}}}}|||j||t||t||t|||||	d|dS)N211 )
rr,rJrr+rDintassertLessEqualr"r#)rresultr$countfirstlastr,s       r
test_groupz"NetworkedNNTPTestsMixin.test_grouphs""4?33CKK(((*0'eUD%000eS)))eS)))dC(((UD)))//66666rc|j\}}||tj||jd||jddS)Nii)rr@rDr?assertGreaterEqualyearr[rr$r@s   r	test_datez!NetworkedNNTPTestsMixin.test_datessh[%%''
ddH$5666	4000TY-----rc||t||hd|D],}||t
t
df-dS)N>r@fromsubject
references:bytes:lines
message-id)rDrTrbkeysvaluesrr)rart_dictvs   r_check_art_dictz'NetworkedNNTPTestsMixin._check_art_dictzsh---


/
/
/			""	8	8A!!!c4::%67777	8	8rc|j|j\}}}}}|j|dz
|\}}t	|dkr|d|d\}}|||dz
|||||dS)NrXrzno articles retrieved)	rr,rJxoverr+skipTestrbr[rq)	rr$r]r^r_namer%art_numros	         r
test_xoverz"NetworkedNNTPTestsMixin.test_xovers)-):):4?)K)K&eUD$k''q$77eu::??MM1222!!H222Wd+++X&&&&&rTzHtemporarily skipped until a permanent solution is found for issue #28971c|j|j\}}}}}|dz
}|j|df\}}|d\}}	||	|j||f\}}|d\}}	||||||||	dS)N
r)rr,rJoverrqrbr[)
rr$r]r^r_rustartr%rvros
          r	test_overz!NetworkedNNTPTestsMixin.test_overs*.):):4?)K)K&eUD$r	k&&t}55e!!HX&&&k&&t}55e!"I///Wd+++X&&&&&rc|j|j\}}}}}|jd|\}}|D]0}|t
t
|d1dS)Nrh)rr,rJxhdrrrr)rr$r]r^r_rur%r&s        r	test_xhdrz!NetworkedNNTPTestsMixin.test_xhdrs{)-):):4?)K)K&eUD$k&&y$77e	1	1DS$tAw--0000	1	1rc||tj|||j||jD]}||t||jdddS)Nrz).s.
.
)rDrArticleInfornumberr%bytesrI)rr$articlervr&s     rcheck_article_respz*NetworkedNNTPTestsMixin.check_article_respsgw':;;;W^W555M	/	/D!!$....r*,DEEEEErzFIXME: see bpo-32128c
|j|j\}}}}}|||dz
fD]Y}	|j|\}}n7#tj$r%}|jdsYd}~Pd}~wwxYwn|d|	|d||
||||j|\}}	|	|d||
||	||j|\}}
|	|d||
||
|d

fd|j
D}
fd	|
j
D}|||d
gz|	j
zdS)Nrz423 z(could not find a suitable article numberz221 z222 z220 c,|dS)NsX-Antivirus)r#)r&s r<lambda>z@NetworkedNNTPTestsMixin.test_article_head_body.<locals>.<lambda>s ? ?rc*g|]}|
|Srr.0r&denylists  r
<listcomp>zBNetworkedNNTPTestsMixin.test_article_head_body.<locals>.<listcomp>s5666&.htnn6t666rc*g|]}|
|Srrrs  rrzBNetworkedNNTPTestsMixin.test_article_head_body.<locals>.<listcomp>s51114!)$1$111rr)rr,rJheadrNNTPTemporaryErrorr9r#rtr"rbodyrr%r)rr$r]r^r_rurvrerrfiltered_head_linesfiltered_linesrs             @rtest_article_head_bodyz.NetworkedNNTPTestsMixin.test_article_head_bodys#)-):):4?)K)K&eUD$eTAX.
	F
	FG
![--g66
dd-


z,,V44	


EMMDEEE//666dG444[%%g..
d//666dG444++G44
g//666gw777??6666
66611117=111)<u)Dtz)QRRRRRsABA??Bcfd}jjd|jj\}}||dS)Nc|d}|ttfd|dS)NLISTOVERVIEW.FMT)rDr*tuplerO)caps	caps_listrs  r_check_capsz>NetworkedNNTPTestsMixin.test_capabilities.<locals>._check_capss@VI!!)dE];;;MM.)44444r)rbrnntp_versiongetcapabilitiescapabilities)rrr$rs`   rtest_capabilitiesz)NetworkedNNTPTestsMixin.test_capabilitiess	5	5	5	5	5	
 8!<<<DK//11222[--//
dDrcjd}d}|tj|jj||ddS)NnotarealusernotarealpasswordF)userpasswordusenetrc)r5r	NNTPErrorrlogin)rbaduserbadpws   rtest_zloginz#NetworkedNNTPTestsMixin.test_zloginsM!"'+T[->&		H	H	H	H	Hrc~t|}	|jd|_dS#d|_wxYwr)rrquit)rclss  rtest_zzquitz#NetworkedNNTPTestsMixin.test_zzquitsD4jj	KCJJJCJs3	<cd}t|D]R}|dst||}t|s8t	||||SdS)NcFtjfd}|S)Nctj|j5|ddddS#1swxYwYdSr)rtransient_internet	NNTP_HOST)rmeths rwrappedzHNetworkedNNTPTestsMixin.wrap_methods.<locals>.wrap_meth.<locals>.wrappeds"5dnEEDJJJs488)	functoolswraps)rrs` r	wrap_methz7NetworkedNNTPTestsMixin.wrap_methods.<locals>.wrap_meths8
_T
"
"



#
"
Nrtest_)dirr#getattrcallablesetattr)rrrurs    rwrap_methodsz$NetworkedNNTPTestsMixin.wrap_methodss			HH	0	0D??7++
3%%DD>>

Cyy////	0	0rc|t5||jddddddS#1swxYwYdS)NrFtimeoutr)r5
ValueError
NNTP_CLASSrrs rtest_timeoutz$NetworkedNNTPTestsMixin.test_timeouts


z
*
*	G	GOODNAOFFF	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	GsAA

A
cfd}ttjd}|j
|j|d<	|j|jfi|5|||dddn#1swxYwY|||j|jfi|5	dddn#1swxYwY||dS#t$r?}tjd|j
rtjd|d|jd}~wwxYw)NctdsdS	n#ttf$rYdSwxYwdS)NfileFT)hasattrr!OSErrorEOFError)rsris_connectedzANetworkedNNTPTestsMixin.test_with_statement.<locals>.is_connected
sZ66**
u




X&


uu
4s*??Frssl_context(?i)KEY.TOO.SMALLzGot  connecting to )rTrINTERNET_TIMEOUTrrrr"r!assertFalserrresearchrunittestSkipTest)rrkwargsssl_errrs    @rtest_with_statementz+NetworkedNNTPTestsMixin.test_with_statements6					,


'$($4F=!	$T_T^>>v>>F
/
////

...
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
\\^^,,,$T_T^>>v>>F



















\\^^,,,,,			y-w~>>
B')Aw)A)A.2n)A)ABBB	s`D"	ABD"BD"!B"5D"C8,D"8C<<D"?C< D""
E+,:E&&E+r)r
rrrrr'r/r2r;rFrQrVr`rerqrwrskipIfr}rrrrrrclassmethodrrrrrrrr&sK---...999999777888### III	7	7	7...	8	8	8	'	'	'X_T899
'
'99
'"111FFFFX_T122SS32S<HHH00[0&GGG!!!!!rrcNeZdZdZdZdZdZeZe	dZ
e	dZdS)NetworkedNNTPTestsznews.trigofacile.comfr.comp.lang.pythonzfr.comp.lang.*Pythonc	2tjdttjd}|j
|j|d<tj|j5	|j|jfi||_	n#t$rU}tjd|j
r!tj|d|d|jt!|jd}~wt"$rtj|d|jwxYw	ddddS#1swxYwYdS)	NnetworkFrrrz got rz  got EOF error on connecting to )rrequiresrTrrrrrrrrrrrrrprint
EOF_ERRORS)rrrs   r
setUpClasszNetworkedNNTPTests.setUpClassAs###,


?&$'OF=!

-cm
<
<	A	A
A+S^CMDDVDD




917>BBE"+s-D-D-D-D25--D-DEEEcm$$$
A
A
A'3)@)@.1m)@)@AAA
A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	As7DA54D5
C;?AC,C;;DDDcJ|j|jdSdSr)rr)rs r
tearDownClassz NetworkedNNTPTests.tearDownClassXs*:!JOO"!rN)r
rrrrJr1rPrrrrrrrrrr8sd&I&J IDJAA[A,[rrrequires SSL supportceZdZdZdZdZdZeeddZ	dZ
dZe7ej
Zedejje_dSdS)NetworkedNNTP_SSLTestsz
nntp.aioe.orgz	aioe.testzaioe.*testNNTP_SSLNDEFAULT)r
rrrrJr1rPrrrr/
test_starttlsssl_create_unverified_contextrset_ciphers
TLSVersionTLSv1_2maximum_versionrrrrr]s IJID*d33JIM
4c466	***&)n&<###rrc4eZdZ	dZdZdZdZdZdZdS)
_NNTPServerIOctj|tj|_tj|_||_|j|jj|j	dSr)
io	RawIOBase__init__BytesIOc2ss2chandlerr|readline	push_data)rrs  rrz_NNTPServerIO.__init__s^
d###:<<:<<48,dn=====rcdSNTrrs rreadablez_NNTPServerIO.readabletrcdSrrrs rwritablez_NNTPServerIO.writabler
rc	|j}|jdd|j||j|dS)Nrr)rtellseekwrite)rdataposs   rrz_NNTPServerIO.push_datasX<hmmoo

at

crc	|j}|j||j||jt
|Sr)rrrrrprocess_pendingr+)rbrs   rrz_NNTPServerIO.writes[+hmmooq

c$$&&&1vv
rc	|j|jt	|}t	|}||d|<|Sr)rrrreadr+)rbufrns    rreadintoz_NNTPServerIO.readintosO1$$&&&HMM#c((##FFBQBrN)	r
rrrr	rrrrrrrrr|ss>>>rrcRt|}tj||}||fSr)rrBufferedRWPair)rsiors   rmake_mock_filers-

 
 CS#&&D;rceZdZddZdZdS)
NNTPServerNcL||_||_||dSr)rhost
_base_init)rfr"
readermodes    rrzNNTPServer.__init__s(		
#####rc<|j|`dSr)rclosers r_closezNNTPServer._closes	IIIrr)r
rrrr(rrrr r s7$$$$
rr c2eZdZdZfdZfdZdZxZS)MockedNNTPTestsMixinNcpt|dSrsupersetUpmake_serverr	__class__s rr.zMockedNNTPTestsMixin.setUps,


rcLt|`dSr)r-tearDownrr0s rr3zMockedNNTPTestsMixin.tearDowns"
KKKrc||_t|j\|_}t	|dg|Ri||_|jS)Nztest.server)
handler_classrrrr r)rargsrrs    rr/z MockedNNTPTestsMixin.make_serversS))++'55$ }FtFFFvFF{r)r
rrr5r.r3r/
__classcell__r1s@rr*r*seMrr*ceZdZfdZxZS)MockedNNTPWithReaderModeMixinctt|ddS)NT)r%r,r0s rr.z#MockedNNTPWithReaderModeMixin.setUps1


D)))))r)r
rrr.r7r8s@rr:r:s8*********rr:ceZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZddZdZdZd dZdZdZdddZdddZdZdZedzezZddZddZddZdZdS)!
NNTPv1Handlerz200 NNTP mock servercd|_d|_||_||_d|_d|_|dS)NFT)in_body
allow_posting	_readline
_push_data
_logged_in
_user_senthandle_welcome)rrrs   rr|zNNTPv1Handler.startsE!!#rc$t|ddS)Nutf-8surrogateescape)rrrs  r_decodezNNTPv1Handler._decodes4"3444rc@|jr	|}|sdS|j||dkrn:	|j\}}||d|jid|_d|_d|_n#d|_d|_d|_wxYw	||}|sdS|ds"td||dd}|	^}}t|d|zd}||nS	|||jr||f|_g|_n5#t$r(}td	||d}~wwxYw)
NTrrF
z line doesn't end with \r\n: {!r}handle_zcommand failed: {!r})r?rArappend
body_callbackrJendswithrformatsplitrupperhandle_unknown	Exception)rr&rtokenscmdrs      rrzNNTPv1Handler.process_pendings<	%
~~''F	  &&&8##


%#1ff-49---%)" 	$&*" 	$$$$$	'<< 0 011D
==((
T !E!L!LT!R!RSSS9D::<<LC&4SYY[[!8$??D|##%%%%'D&MM|'-16\*$&	!QQQ$%;%B%B4%H%HIIqPQ	's$A11BE))
F3#FFc	d|_dSr)r?rs rexpect_bodyzNNTPv1Handler.expect_body
sErc2	||dSr)rBrIs  rrzNNTPv1Handler.push_datas#rc	tj|}d|dz}|d}||dS)NrLrG)textwrapdedentjoin
splitlinesencoder)rlits  rpush_litzNNTPv1Handler.push_lits]#oc""kk#..**++f4jj!!src0|ddS)Nz	500 What?rcrs rrUzNNTPv1Handler.handle_unknowns

k"""""rc:||jdSr)rcrrs rrEzNNTPv1Handler.handle_welcomes

dl#####rc0|ddSNz205 Bye!rers rhandle_QUITzNNTPv1Handler.handle_QUIT"s

j!!!!!rc0|ddS)N111 20100914001155rers rhandle_DATEzNNTPv1Handler.handle_DATE%s

*+++++rc|dkr|ddS|d|dS)Nrz$211 486 761 1265 fr.comp.lang.pythonz411 No such group {})rcrR)rr,s  rhandle_GROUPzNNTPv1Handler.handle_GROUP(sN)))MM@AAAAAMM077>>?????rc0|ddS)Nz            100 Legal commands
              authinfo user Name|pass Password|generic <prog> <args>
              date
              help
            Report problems to <root@example.org>
            .rers rhandle_HELPzNNTPv1Handler.handle_HELP.s'

					rNc||ddS|dkr|ddS|dkr|ddS|ddS)N412 No newsgroup selected3000234"223 3000234 <45223423@example.com><45223423@example.com>223 0 <45223423@example.com>430 No Such Article Foundrermessage_specs  rhandle_STATzNNTPv1Handler.handle_STAT7sMM566666
Y
&
&MM>?????
5
5
5MM899999MM566666rc0|ddS)N*223 3000237 <668929@example.org> retrievedrers rhandle_NEXTzNNTPv1Handler.handle_NEXTAs

BCCCCCrc0|ddS)N,223 3000234 <45223423@example.com> retrievedrers rhandle_LASTzNNTPv1Handler.handle_LASTDs

DEEEEErc||ddS|dkr4|dkr|ddS|ddS|dkr|ddS|dkrQ|d	kr|d
dS|dkr|ddS|d
dS|ddS)Na                215 Newsgroups in form "group high low flags".
                comp.lang.python 0000052340 0000002828 y
                comp.lang.python.announce 0000001153 0000000993 m
                free.it.comp.lang.python 0000000002 0000000002 y
                fr.comp.lang.python 0000001254 0000000760 y
                free.it.comp.lang.python.learner 0000000000 0000000001 y
                tw.bbs.comp.lang.python 0000000304 0000000304 y
                .ACTIVE*distutils*z                    215 Newsgroups in form "group high low flags"
                    gmane.comp.python.distutils.devel 0000014104 0000000001 m
                    gmane.comp.python.distutils.cvs 0000000000 0000000001 m
                    .zW                    215 Newsgroups in form "group high low flags"
                    .ra                215 Order of fields in overview database.
                Subject:
                From:
                Date:
                Message-ID:
                References:
                Bytes:
                Lines:
                Xref:full
                .
NEWSGROUPScomp.lang.pythonz                    215 Descriptions in form "group description".
                    comp.lang.python	The Python computer language.
                    .comp.lang.python*z                    215 Descriptions in form "group description".
                    comp.lang.python.announce	Announcements about the Python language. (Moderated)
                    comp.lang.python	The Python computer language.
                    .zW                    215 Descriptions in form "group description".
                    .z501 Unknown LIST keywordre)ractionparams   rhandle_LISTzNNTPv1Handler.handle_LISTGsu>MM




x


%%



~
%
%MM










|
#
#***

---




MM455555rc.|dkr#|dkr|dkr|ddS|dkr#|dkr|dkr|ddS|dkr'|dvr#|dkr|d	d
zdzdS|ddS)
Nr20100913082004a                230 list of newsarticles (NNTP v2) created after Mon Sep 13 08:20:04 2010 follows
                <a4929a40-6328-491a-aaaf-cb79ed7309a2@q2g2000vbk.googlegroups.com>
                <f30c0419-f549-4218-848f-d7d0131da931@y3g2000vbm.googlegroups.com>
                .100913a                230 list of newsarticles (NNTP v1) created after Mon Sep 13 08:20:04 2010 follows
                <a4929a40-6328-491a-aaaf-cb79ed7309a2@q2g2000vbk.googlegroups.com>
                <f30c0419-f549-4218-848f-d7d0131da931@y3g2000vbm.googlegroups.com>
                .)20100101100101090000z
too long lineiz
.zK                230 An empty list of newsarticles follows
                .re)rr,date_strtime_strs    rhandle_NEWNEWSzNNTPv1Handler.handle_NEWNEWS}s

'''H
,B,BH$$MM





)))h(.B.BH$$MM





)))000(""MM/D0 
!
!
!
!
!
MM




rcj|dkr|ddS|ddS)Nz57-59uK224 Overview information for 57-58 follows
57	Re: ANN: New Plone book with strong Python (and Zope) themes throughout	Doug Hellmann <doug.hellmann-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>	Sat, 19 Jun 2010 18:04:08 -0400	<4FD05F05-F98B-44DC-8111-C6009C925F0C@gmail.com>	<hvalf7$ort$1@dough.gmane.org>	7103	16	Xref: news.gmane.io gmane.comp.python.authors:57
58	Looking for a few good bloggers	Doug Hellmann <doug.hellmann-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>	Thu, 22 Jul 2010 09:14:14 -0400	<A29863FA-F388-40C3-AA25-0FD06B09B5BF@gmail.com>		6683	16	
59	Re: Message d'erreur incompréhensible (par moi)	Eric Brunel <eric.brunel@pragmadev.nospam.com>	Wed, 15 Sep 2010 18:09:15 +0200	<eric.brunel-2B8B56.18091515092010@news.wanadoo.fr>	<4c90ec87$0$32425$ba4acef3@reader.news.orange.fr>	1641	27	Xref: saria.nerim.net fr.comp.lang.python:1265
.
z1                224 No articles
                .rerxs  rhandle_XOVERzNNTPv1Handler.handle_XOVERsY7""MM




4
MM




r)rc|I|jr+|d|dS|ddS|d||_dS)Nz+340 Input article; end with <CR-LF>.<CR-LF>440 Posting not permitted240 Article received OKr@rcrZposted_body)rrs  rhandle_POSTzNNTPv1Handler.handle_POSTsy<!
;

KLLL  """""

9:::::
MM3444#Drc|O|jr1|dkr+|d|dS|ddS|d||_dS)N+<i.am.an.article.you.will.want@example.com>z%335 Send it; end with <CR-LF>.<CR-LF>435 Article not wanted235 Article transferred OKr)r
message_idrs   rhandle_IHAVEzNNTPv1Handler.handle_IHAVEs<"
8KKK

EFFF  """""

677777
MM6777#Drz        From: "Demo User" <nobody@example.net>
        Subject: I am just a test article
        Content-Type: text/plain; charset=UTF-8; format=flowed
        Message-ID: <i.am.an.article.you.will.want@example.com>ui        This is just a test article.
        ..Here is a dot-starting line.

        -- Signed by André.z

c2||dnO|dkr|dn3|dkr|dn|ddS||j|ddS)N"220 3000237 <45223423@example.com>ru220 0 <45223423@example.com>rs"220 3000234 <45223423@example.com>rw.)rcsample_articlerxs  rhandle_ARTICLEzNNTPv1Handler.handle_ARTICLEsMM>????
5
5
5MM89999
Y
&
&MM>????MM5666F

d)***

crc2||dnO|dkr|dn3|dkr|dn|ddS||j|ddS)N"221 3000237 <45223423@example.com>ru221 0 <45223423@example.com>rs"221 3000234 <45223423@example.com>rwr)rcsample_headrxs  rhandle_HEADzNNTPv1Handler.handle_HEADMM>????
5
5
5MM89999
Y
&
&MM>????MM5666F

d&'''

crc2||dnO|dkr|dn3|dkr|dn|ddS||j|ddS)N"222 3000237 <45223423@example.com>ru222 0 <45223423@example.com>rs"222 3000234 <45223423@example.com>rwr)rcsample_bodyrxs  rhandle_BODYzNNTPv1Handler.handle_BODYrrcN|jr|ddS|dkr<|jr|ddS|dd|_dS|dkr|dd|_dStd|)	Nz502 Already Logged Inrz 482 User Credential Already Sentz381 Password RequiredTpassz281 Login SuccessfulzUnknown cred type {})rCrcrDrVrR)r	cred_typers   rhandle_AUTHINFOzNNTPv1Handler.handle_AUTHINFO
s?	FMM122222
&
 
 
'

@AAAAA

5666"&
&
 
 MM0111"DOOO299)DDEEErrNN)r
rrrr|rJrrZrrcrUrErirlrnrprzr}rrrrrrrrrrrrrrrrr=r=s$G555$'$'$'L###$$$""",,,@@@7777DDDFFF46464646l>@#'
$
$
$
$
$04$$$$$CK"K!6)K7N
F
F
F
F
Frr=c$eZdZ	dZdZddZdS)
NNTPv2Handlercd}|js*||ddS||ddS)Na            101 Capability list:
            VERSION 2 3
            IMPLEMENTATION INN 2.5.1{}
            HDR
            LIST ACTIVE ACTIVE.TIMES DISTRIB.PATS HEADERS NEWSGROUPS OVERVIEW.FMT
            OVER
            POST
            READER
            .z
            AUTHINFO USERrM)rCrcrRrfmts  rhandle_CAPABILITIESz!NNTPv2Handler.handle_CAPABILITIESs\		*MM#**%BCCDDDDDMM#**R..)))))rc td)Nz3MODE READER sent despite READER has been advertised)rV)r_s  rhandle_MODEzNNTPv2Handler.handle_MODE.sMNNNrNc,||Sr)rrxs  rhandle_OVERzNNTPv2Handler.handle_OVER1s  ...rr)r
rrrrrrrrrrsL,***"OOO//////rrc eZdZ	fdZxZS)CapsAfterLoginNNTPv2Handlerc|js|ddStdS)Nz480 You must log in.)rCrcr-rr0s rrz/CapsAfterLoginNNTPv2Handler.handle_CAPABILITIES8sB	*MM011111GG'')))))r)r
rrrr7r8s@rrr5s;=*********rrc"eZdZ	dZdZdZdS)ModeSwitchingNNTPv2Handlercd|_dSNF)	_switchedrs rrz#ModeSwitchingNNTPv2Handler.__init__Bs
rcd}|jr*||ddS||ddS)Na            101 Capability list:
            VERSION 2 3
            IMPLEMENTATION INN 2.5.1
            HDR
            LIST ACTIVE ACTIVE.TIMES DISTRIB.PATS HEADERS NEWSGROUPS OVERVIEW.FMT
            OVER
            POST
            {}READER
            .rMzMODE-)rrcrRrs  rrz.ModeSwitchingNNTPv2Handler.handle_CAPABILITIESEs[	>	/MM#**R..)))))MM#**W--.....rc>d|_|ddS)NTz200 Posting allowed)rrc)rwhats  rrz&ModeSwitchingNNTPv2Handler.handle_MODEUs"

+,,,,,rN)r
rrrrrrrrrr?sD./// -----rrceZdZfdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#xZ$S)"NNTPv1v2TestsMixincHtdSr)r-r.r0s rr.zNNTPv1v2TestsMixin.setUp]s


rcZ||jj|jjdSr)rrrrrs rrzNNTPv1v2TestsMixin.test_welcome`s(,dl.BCCCCCrc|jdkr |d|jj|jdd|d|jjdS)NrAUTHINFOtestusertestpw)rrOr_capsrrIrs r
test_authinfoz NNTPv1v2TestsMixin.test_authinfocsd!!MM*dk&7888*h///	
T[%677777rc|j\}}||d||tjdddddddS)Nrk	r7)rr@rr?rds   rrezNNTPv1v2TestsMixin.test_dateksa[%%''
d3444x0q"aRHHIIIIIrc||jj|j}||d||jjdSrh)rrclosedrrrr")rr$s  r	test_quitzNNTPv1v2TestsMixin.test_quitps_))){!!z***(((((rc|j\}}||d||gddS)Nz100 Legal commands)z8  authinfo user Name|pass Password|generic <prog> <args>z  datez  helpz%Report problems to <root@example.org>)rr!r)rr$r!s   rr'zNNTPv1v2TestsMixin.test_helpvsc[%%''
d3444 
 
 
					rc	|j\}}|t|d|d}||t	dddd|jd\}}|t|d|d	}||t	d
ddddS)
Nrcomp.lang.python.announce
0000001153
0000000993mrrrz!gmane.comp.python.distutils.devel
0000014104
0000000001)rr*rr+r)rr$r.gs    rr/zNNTPv1v2TestsMixin.test_lists{''))fVa(((1I1<"C
)
)	*	*	*{''
66fVa(((1I9<"C
)
)	*	*	*	*	*rcH|jd\}}}||d||d||d|jd\}}}||d||d||d|tj5}|jddddn#1swxYwY||jjd|tj5}|jdddn#1swxYwY||jjddS)	N-rtrurvrz<non.existent.id>rwrr)rstatrr5rrr8r9)rr$rvrr:s     r	test_statzNNTPv1v2TestsMixin.test_stats$(K$4$4W$=$=!gzCDDD'***%=>>>$(K$4$45M$N$N!gz=>>>!$$$%=>>>


w9
:
:	2bK0111	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2.0KLLL


w9
:
:	bK															.0KLLLLLs$ DDDE77E;>E;c|j\}}}||d||d||ddS)Nr|-z<668929@example.org>)rnextrrr$rvrs    r	test_nextzNNTPv1v2TestsMixin.test_nextsf$(K$4$4$6$6!gzKLLL'***%;<<<<<rc|j\}}}||d||d||ddS)Nrrru)rr_rrs    r	test_lastzNNTPv1v2TestsMixin.test_lastsf$(K$4$4$6$6!gzMNNN'***%=>>>>>rc|jd}||d|jd}||ddS)NrThe Python computer language.comp.lang.pythonxrM)rrNr)rrKs  rrQz#NNTPv1v2TestsMixin.test_descriptionsa{&&'9::>???{&&':;;r"""""rcn|jd\}}||d||ddi|jd\}}||ddd|jd\}}||idS)Nrz-215 Descriptions in form "group description".rrz4Announcements about the Python language. (Moderated))rrr)rrSrr-s   rrVz$NNTPv1v2TestsMixin.test_descriptionss{//0BCCfNOOO ?"			{//0CDDf ?)_""			{//0CDDf$$$$$rc^|jd\}}}}}||d|||d||d||d||d|tj5}|jddddn#1swxYwY|j}||j	d|j	dS)NrrYiiizcomp.lang.python.develz411 No such group)
rr,r"r#rr5rrr8r9)rr$r]r^r_r,r:excs        rr`zNNTPv1v2TestsMixin.test_groups[*.+*;*;<Q*R*R'eUD%//666$$$t$$$$$$ 5666


w9
:
:	8bK6777	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8l//0CDD	&	&	&	&	&sC((C,/C,ctjdddddd}|jd|\}}d|j}|||||d	d
gtjdddddd}|jd|\}}||d||gdS)
Nrr
rzS230 list of newsarticles (NNTP v{0}) created after Mon Sep 13 08:20:04 2010 followszB<a4929a40-6328-491a-aaaf-cb79ed7309a2@q2g2000vbk.googlegroups.com>zB<f30c0419-f549-4218-848f-d7d0131da931@y3g2000vbm.googlegroups.com>rz)230 An empty list of newsarticles follows)r?rnewnewsrRrr)rrEr$idsexpecteds     rtest_newnewszNNTPv1v2TestsMixin.test_newnewss

tQAr1
5
5K''(:B??	c
=fT&''		
x(((PP			

tQAr1
5
5K''(=rBB	cJKKKb!!!!!rcR|t|d||ddd||dd||dd||d	d
dS)NrrzrGu-- Signed by André.rMrs.Here is a dot-starting line.sThis is just a test article.)rr+decoderr%s  r_check_article_bodyz&NNTPv1v2TestsMixin._check_article_bodysUQ'''r))'224JKKKrC(((r$DEEEr$CDDDDDrc|t|d||dd||dddS)Nrrs&From: "Demo User" <nobody@example.net>s7Message-ID: <i.am.an.article.you.will.want@example.com>)rr+rs  r_check_article_headz&NNTPv1v2TestsMixin._check_article_headsZUQ'''q#LMMMq#]^^^^^rc|t|d||dd||dd||dddS)Nrrr
r)rr+rr
rs  r_check_article_dataz&NNTPv1v2TestsMixin._check_article_datasvUQ'''  rr+++  rss,,,q3'''''rc|j\}}||d|\}}}||d||d|||jd\}}||d|\}}}||d||d|||jd\}}||d|\}}}||d||d|||t
j5}|jddddn#1swxYwY||jjd	dS)
Nrrrurrrr<non-existent@example.com>rw)	rrrrr5rrr8r9rr$inforvrr%r:s       rtest_articlezNNTPv1v2TestsMixin.test_articles[((**
dCDDD%)"U'***%=>>>  '''[((11
dCDDD%)"U'***%=>>>  '''[(()ABB
d=>>>%)"U!$$$%=>>>  '''


w9
:
:	>bK <===	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>.0KLLLLL
F44F8;F8c$tj}|j|\}}||d|\}}}||d||d||g|}||dt|||	dt|dS)NrrrruKFrom: "Demo User" <nobody@example.net>
Subject: I am just a test article
UThis is just a test article.
.Here is a dot-starting line.

-- Signed by André.
)
rrrrrgetvaluer"r#asciirQrr$r$rrvrr%rs        rtest_article_filez$NNTPv1v2TestsMixin.test_article_filesJLL[((a(00
dCDDD%)"U'***%=>>>###zz||
5T{{				



.
T{{					rc|j\}}||d|\}}}||d||d|||jd\}}||d|\}}}||d||d|||jd\}}||d|\}}}||d||d|||t
j5}|jddddn#1swxYwY||jjd	dS)
Nrrrurrrrrrw)	rrrrr5rrr8r9rs       r	test_headzNNTPv1v2TestsMixin.test_head [%%''
dCDDD%)"U'***%=>>>  '''[%%g..
dCDDD%)"U'***%=>>>  '''[%%&>??
d=>>>%)"U!$$$%=>>>  '''


w9
:
:	;bK9:::	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;.0KLLLLLrc$tj}|j|\}}||d|\}}}||d||d||g|}||dt||	|
dt|dS)Nrrrrurr)rrrrrrr"r#rrrQrs        rtest_head_filez!NNTPv1v2TestsMixin.test_head_file;sJLL[%%1%--
dCDDD%)"U'***%=>>>###zz||
5T{{				

.
T{{					rc|j\}}||d|\}}}||d||d|||jd\}}||d|\}}}||d||d|||jd\}}||d|\}}}||d||d|||t
j5}|jddddn#1swxYwY||jjd	dS)
Nrrrurrrrrrw)	rrrr
r5rrr8r9rs       r	test_bodyzNNTPv1v2TestsMixin.test_bodyOr#rc$tj}|j|\}}||d|\}}}||d||d||g|}||dt||	|
dt|dS)Nrrrrurr)rrrrrrrr#rr"rQrs        rtest_body_filez!NNTPv1v2TestsMixin.test_body_filejsJLL[%%1%--
dCDDD%)"U'***%=>>>###zz||
5T{{				



.
T{{					rc||d||t|d|d\}}||d||ddddd	d
ddd
|d\}}||dd|d\}}||dddS)Nz224 rr9zEDoug Hellmann <doug.hellmann-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>zGRe: ANN: New Plone book with strong Python (and Zope) themes throughoutzSat, 19 Jun 2010 18:04:08 -0400z0<4FD05F05-F98B-44DC-8111-C6009C925F0C@gmail.com>z<hvalf7$ort$1@dough.gmane.org>710316z*news.gmane.io gmane.comp.python.authors:57)rgrhr@rlrirjrkxrefrr.rrh0Re: Message d'erreur incompréhensible (par moi))r"r#rr+)rr$	overviewsrvr{s     rcheck_over_xover_respz(NNTPv1v2TestsMixin.check_over_xover_resp~s//666Y+++!!
"%%%[`5L:@	 	 						"!
ft,,,!!
iK	M	M	M	M	Mrcn|jdd\}}|||dS)Nr+;)rrsr1rr$r0s   rrwzNNTPv1v2TestsMixin.test_xovers9+++B33i""433333rcl|jd\}}|||dS)N)r+r3)rr{r1r4s   rr}zNNTPv1v2TestsMixin.test_overs7+**844i""433333rsFrom: "Demo User" <nobody@example.net>
Subject: I am just a test article
Content-Type: text/plain; charset=UTF-8; format=flowed
Message-ID: <i.am.an.article.you.will.want@example.com>

This is just a test article.
.Here is a dot-starting line.

-- Signed by André.
c||jj}|t|d||dd||dd||dd||dd	||d
ddS)NryrzrrMs-- Signed by André.
r	
r
s ..Here is a dot-starting line.
rs(From: "Demo User" <nobody@example.net>
)rrrr+rs  r_check_posted_bodyz%NNTPv1v2TestsMixin._check_posted_bodys(UR(((rH---r$EFFFrG,,,r$IJJJq#PQQQQQrc|j}|||fz}d|j_||}||jdd}|||fz}d|j_||}||S)Nr7
)sample_postrrr8replace)rfuncfile_factoryr6post	func_argsr$s       r_check_post_ihave_subz(NNTPv1v2TestsMixin._check_post_ihave_subsLL..00	#' tY!!!''77LL..00	#' tY!!!rc|j|g|Rdti}||||j|g|Rdti}||||j|g|Rdtji}|||d}|j|g|Rd|i}|||d}|j|g|Rd|i}|||dS)Nr>cHt|dS)NTkeependsiterr`rs r	iterlinesz6NNTPv1v2TestsMixin.check_post_ihave.<locals>.iterlinessd33444rcHt|dS)NFrDrFrHs rrIz6NNTPv1v2TestsMixin.check_post_ihave.<locals>.iterlinesse44555r)rArr	bytearrayrr)rr=success_respr6r$rIs      rcheck_post_ihavez#NNTPv1v2TestsMixin.check_post_ihaves@)t)$JJJJEJJ|,,,)t)$NNNNINN|,,,)t)$OOOOBJOO|,,,	5	5	5)t)$NNNNINN|,,,	6	6	6)t)$NNNNINN|,,,,,rcJ||jjdd|j_|tj5}|j|jdddn#1swxYwY|	|j
jddS)NrFr)rMrr?rr@r5rrr;rr8r9rr:s  r	test_postzNNTPv1v2TestsMixin.test_postsdk.0IJJJ%*"


w9
:
:	/bKT-...	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/.4	6	6	6	6	6s A88A<?A<c6||jjdd|tj5}|jd|jdddn#1swxYwY||jj	ddS)Nrrz<another.message.id>r)
rMrihaver5rrr;rr8r9rOs  r
test_ihavezNNTPv1v2TestsMixin.test_ihavesdk/1MK	M	M	M


w9
:
:	HbK4d6FGGG	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H.1	3	3	3	3	3s!A..A25A2ctjdddddd}|tj|jjd|dS)Nrrrrr)r?r5r
NNTPDataErrorrr)rrEs  rtest_too_long_linesz&NNTPv1v2TestsMixin.test_too_long_linessU

tQ1a
3
3'/+-/A2	G	G	G	G	Gr)%r
rrr.rrrerr'r/rrrrQrVr`rr
rrrr r"r%r'r)r1rwr}r;r8rArMrPrSrVr7r8s@rrr[s8DDD888JJJ
)))***MMM ===???###%%%&&&"""&EEE___
(((MMM6*MMM6(MMM6(MMM*444444	*	R	R	R ---*666333GGGGGGGrrceZdZ	dZeZdZdS)NNTPv1Testsrc|j}||i||jjd||jjddS)Nrrrrrnntp_implementationrrs  r	test_capszNNTPv1Tests.test_capssg{**,,r"""115558$?????rN)r
rrrr=r5r]rrrrXrXs54L!M@@@@@rrXceZdZ	dZeZdZdS)NNTPv2Testsrc|j}||ddgddgdgggdgggd||jjd||jjd	dS)
N23INNz2.5.1USER)rzACTIVE.TIMESzDISTRIB.PATSHEADERSrr)VERSIONIMPLEMENTATIONrHDRrOVERPOSTREADERrz	INN 2.5.1rZr\s  rr]zNNTPv2Tests.test_capss{**,,Sz$g.>>>
 
 
	
	
		
115558+FFFFFrN)r
rrrrr5r]rrrr_r_s56L!MGGGGGrr_ceZdZ	dZeZdZdS)CapsAfterLoginNNTPv2Testsrc||jji|jdd|d|jjdS)Nrrrf)rrrrrOrs rtest_caps_only_after_loginz4CapsAfterLoginNNTPv2Tests.test_caps_only_after_loginsT*B///*h///

i!233333rN)r
rrrrr5rorrrrmrms0ML/M44444rrmceZdZ	dZeZdZdS)SendReaderNNTPv2TestsrcF|d|jjdS)Nrk)rOrrrs r(test_we_are_in_reader_mode_after_connectz>SendReaderNNTPv2Tests.test_we_are_in_reader_mode_after_connect&s!

h 122222rN)r
rrrrr5rsrrrrqrqs4-L.M33333rrqcfeZdZdZdZdZdZdZdZe	j
eddZd	S)
	MiscTestscfd}|dd|dd|dd|dd|dd|d	d
|dddS)Ncdt||dSr)rr
decode_header)arrs  rgivesz+MiscTests.test_decode_header.<locals>.gives-s-W22155q99999rrMza plain headerz with extra  spaces z%=?ISO-8859-15?Q?D=E9buter_en_Python?=uDébuter en Pythonz=?utf-8?q?Re=3A_=5Bsqlite=5D_probl=C3=A8me_avec_ORDER_BY_sur_des_cha?= =?utf-8?q?=C3=AEnes_de_caract=C3=A8res_accentu=C3=A9es?=uPRe: [sqlite] problème avec ORDER BY sur des chaînes de caractères accentuéesz,Re: =?UTF-8?B?cHJvYmzDqG1lIGRlIG1hdHJpY2U=?=uRe: problème de matricer/rrrzs` rtest_decode_headerzMiscTests.test_decode_header,s	:	:	:	:	:
b2
 0111
$&<===
57KLLL
J`	b	b	b	<(	*	*	*	@@	B	B	B	B	Brcvgd}|t|gdgd}|t|gdgd}|t|gdgd}|t|gdgd}|t|gdgd}|t|gd	dS)
N)Subject:From:Date:Message-ID:References:rjrk)rhrgr@rlrirjrk)r~rrrrBytes:Lines:)zsubject:zFROM:zDaTe:zmessage-ID:rzBYTES:r)	r~rrrrrjrk	Xref:fullzDistribution:full)	rhrgr@rlrirjrkr.distribution)	r~rrrrrrz	Xref:FULLzDistribution:FULL)r~rrrrrrrrhrgr@rlrirjrkr.)rr_parse_overview_fmtrs  rtest_parse_overview_fmtz!MiscTests.test_parse_overview_fmt<s44444U;;
!
!
!	"	"	"44444U;;
!
!
!	"	"	"44444U;;
!
!
!	"	"	"&&&	
44U;;
9
9
9	:	:	:&&&	
44U;;
9
9
9	:	:	:AAA44U;;
)
)
)	*	*	*	*	*rctjdgz}dg}t||}|\\}}||d||dddddd	d
ddd
g}t||}|\\}}||dddg}t||}|\\}}||dd||dddS)Nr.z3000234	I am just a test article	"Demo User" <nobody@example.com>	6 Oct 1998 04:38:40 -0500	<45223423@example.com>	<45454@example.net>	1234	17	Xref: news.example.com misc.test:3000363rzI am just a test articlez "Demo User" <nobody@example.com>z6 Oct 1998 04:38:40 -0500ruz<45454@example.net>123417z"news.example.com misc.test:3000363rz3000234	I am just a test article	"Demo User" <nobody@example.com>	6 Oct 1998 04:38:40 -0500	<45223423@example.com>	<45454@example.net>	1234	17		z3000234	I am just a test article	"Demo User" <nobody@example.com>	6 Oct 1998 04:38:40 -0500	<45223423@example.com>	 	1234	17	Xref: 	ri rM)r_DEFAULT_OVERVIEW_FMT_parse_overviewr)rrr%overviewrvfieldss      rtest_parse_overviewzMiscTests.test_parse_overviewdsH+vh6
;
**5#66%&'***16/2/8	"
	"
						

**5#66%&...

**5#66%&-s333,,,,,rc
fd}|dddddddd|d	d
dddddd|dd
dddddd|dd
d
ddddddS)Nc~t||tj|dSr)rr_parse_datetimer?)ryrcrs   rrzz,MiscTests.test_parse_datetime.<locals>.givessBW44Q::%.2
4
4
4
4
4r19990623135624rr819990623135624990623090623irr{s` rtest_parse_datetimezMiscTests.test_parse_datetimes	4	4	4	4	4	dAr2r2>>>
j(D!RR<<<
h$2r2r:::
h$2r2r:::::rc
fd}|dddddddd	|d
ddddddd	|ddd
dddddfd}|ddddd|d
dddd|ddd
dddS)Nctj||||||}	t|||f	t|d||fdSrr?rr_unparse_datetime
yMdhrsrrrErs
         rrzz.MiscTests.test_unparse_datetime.<locals>.givess"1aAq!44BW66r::&1
3
3
3W66r5AA&1
3
3
3
3
3rrrrrrrrr20000623rrXrrr20100605010203ctj|||}t|||ft|d||fdSrr?r@rrrrrrrrrErs      rrzz.MiscTests.test_unparse_datetime.<locals>.givessq!Q''BW66r::&1
3
3
3W66r5AA&1
3
3
3
3
3r000000rr{s` rtest_unparse_datetimezMiscTests.test_unparse_datetimes	3	3	3	3	3	dAr2r2z8<<<
dAr2r2z8<<<
dAq!Q:x888	3	3	3	3	3	dAr:x000
dAr:x000
dAq*h/////rc
fd}|dddddddd	|d
ddddddd	|ddd
dddddfd}|ddddd|d
dddd|ddd
dddS)Nctj||||||}	t|d||fdSrrrs
         rrzz5MiscTests.test_unparse_datetime_legacy.<locals>.givessY"1aAq!44BW66r4@@&1
3
3
3
3
3rrrrrrrrrr000623rrXrrr100605rctj|||}t|d||fdSrrrs      rrzz5MiscTests.test_unparse_datetime_legacy.<locals>.givessRq!Q''BW66r4@@&1
3
3
3
3
3rrrr{s` rtest_unparse_datetime_legacyz&MiscTests.test_unparse_datetime_legacys	3	3	3	3	3	dAr2r2x:::
dAr2r2x:::
dAq!Q8X666	3	3	3	3	3	dAr8X...
dAr8X...
dAq(H-----rrcV|ttddS)Nr)r"rrrs rtest_ssl_supportzMiscTests.test_ssl_supports$4455555rN)
r
rrr|rrrrrr
skipUnlessrrrrrruru*sBBB &*&*&*P,-,-,-\	;	;	;000....&X4556665666rruceZdZ	dZdS)PublicAPITestsc
|ttdgd}t|d|t
tjt
|dS)N__all__)rrNNTPReplyErrorrr6NNTPProtocolErrorrUrxr)r"rrrrOrsetr)r
target_apis  rtest_module_all_attributez(PublicAPITests.test_module_all_attributesy33444MMM
?j)))W_--s:?????rN)r
rrrrrrrrs+H@@@@@rrcFeZdZ	ejZ	ddZdZdZdZ	dZ
dZdS)	MockSocketTestsNc	
Gfdd}G	
fddd
g	td|5|||5|d||dddn#1swxYwYdddn#1swxYwY|
	D]}||jdS)	NceZdZfdZdS)NMockSocketTests.check_constructor_error_conditions.<locals>.mock_socket_modulecSrr)addressr
MockSockets  rcreate_connectionz`MockSocketTests.check_constructor_error_conditions.<locals>.mock_socket_module.create_connections!z||#rN)r
rrr)rsrmock_socket_modulers.
$
$
$
$
$
$
$rrc&eZdZfdZfdZdS)FMockSocketTests.check_constructor_error_conditions.<locals>.MockSocketcddSrr)r
socket_closeds rr'zLMockSocketTests.check_constructor_error_conditions.<locals>.MockSocket.closes $


rcj}t|\}}||Sr)rrO)socketmoderrrfilesr5s     rmakefilezOMockSocketTests.check_constructor_error_conditions.<locals>.MockSocket.makefiles6'-//(114T"""rN)r
rrr'r)rr5rsrrrsL
%
%
%
%
%







rrFznntplib.socketdummy)rr)r	assertRaisesRegex
nntp_classr"r)rr5expected_error_typeexpected_error_msgrrrr$rrrs `      @@@r"check_constructor_error_conditionsz2MockSocketTests.check_constructor_error_conditionss
	$	$	$	$	$	$	$	$	$	$																								

#%7
8
8	D	D

#
#$79K
L
L	D	DOOG%(OCCC	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	

&&&	&	&AOOAH%%%%	&	&s5BA5)B5A9	9B<A9	=BBBcxGddt}||tj|jdS)NceZdZdZdS)1MockSocketTests.test_bad_welcome.<locals>.HandlerzBad WelcomeNr
rrrrrrHandlerrs#GGGrr)r=rrrrrrs  rtest_bad_welcomez MockSocketTests.test_bad_welcomes_	$	$	$	$	$m	$	$	$//W.	A	A	A	A	ArcxGddt}||tj|jdS)NceZdZdZdS)EMockSocketTests.test_service_temporarily_unavailable.<locals>.Handlerz#400 Service temporarily unavailableNrrrrrr;GGGrr)r=rrrrrs  r$test_service_temporarily_unavailablez4MockSocketTests.test_service_temporarily_unavailable_	<	<	<	<	<m	<	<	<//W/	B	B	B	B	BrcxGddt}||tj|jdS)NceZdZdZdS)EMockSocketTests.test_service_permanently_unavailable.<locals>.Handlerz#502 Service permanently unavailableNrrrrrrrrr)r=rrr6rrs  r$test_service_permanently_unavailablez4MockSocketTests.test_service_permanently_unavailable
rrcxGfddt}d||tjdS)NceZdZfdZdS)6MockSocketTests.test_bad_capabilities.<locals>.Handlerc2|dSrre)rcapabilities_responses rrzJMockSocketTests.test_bad_capabilities.<locals>.Handler.handle_CAPABILITIESs

344444rN)r
rrr)rsrrrs.
5
5
5
5
5
5
5rrz201 bad capability)r=rrr)rrrs  @rtest_bad_capabilitiesz%MockSocketTests.test_bad_capabilitiessq	5	5	5	5	5	5	5m	5	5	5!5//W+-B	D	D	D	D	Drcd}d}Gfddt}d||tj||dS)Nzt@e.compythonceZdZfdZdS)3MockSocketTests.test_login_aborted.<locals>.Handlerc2|dSrre)rr6authinfo_responses  rrzCMockSocketTests.test_login_aborted.<locals>.Handler.handle_AUTHINFOs

/00000rN)r
rrr)rsrrrs.
1
1
1
1
1
1
1rrz503 Mechanism not recognized)r=rrr6)rrrrrs    @rtest_login_abortedz"MockSocketTests.test_login_aborteds{	1	1	1	1	1	1	1m	1	1	1;//W/1B8					rr)r
rrrrrrrrrrrrrrrrs?J
"&&&&&:AAABBBBBBDDD




rrceZdZ	dZdS)bypass_contextc|Srr)sockr6s  rwrap_socketzbypass_context.wrap_socket(srN)r
rrrrrrrr&s&1rrc$eZdZedZdS)MockSslTestsc2tj|dti|S)Nr)rrr)rkws  rrzMockSslTests.nntp_class-sG.GBGGGrN)r
rrstaticmethodrrrrrr+s2HH\HHHrrcNeZdZdZdZejeddZdS)LocalServerTestsctj}tj|}|t	j|j|f|_|j|	|jj
|ttj
|d|_dS)N)targetr6F)r)rr	bind_portlisten	threadingThread
run_server
backgroundr|
addCleanupr_enterContextrHOSTnntp)rrports   rr.zLocalServerTests.setUp3s}&t,,


#*?$222,---%%d=+=te&T&T&TUU			rc|5|\}}dddn#1swxYwYtj5}||||d}|d	|}|dkr|dn|dkr||dtj	tj
}|t|
|d}||||d}n>|d	kr|d
n$td|,	ddddS#1swxYwYdS)Nrbs200 Server ready
TsCAPABILITIES
s.101 Capability list:
VERSION 2
STARTTLS
.
s
STARTTLS
s382 Begin TLS negotiation now
)server_sidesQUIT
s
205 Bye!
zUnexpected command {!r})accept
contextlib	ExitStack
enter_contextrsendallrr'r
SSLContextPROTOCOL_TLS_SERVERload_cert_chaincertfilerrrR)rrclientrcleanupreaderrXcontexts        rrzLocalServerTests.run_server>sg
	(	(++--KVQ	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(

!
#
#	Lw!!&)))**6??4+@+@AAFNN2333
Loo''---NN!O++LLNNNNN#GHHH!nS-DEEG++H555$00D122F))&111$226??43H3HIIFFK''NN?333$%>%E%Ec%J%JKKK-
L(1	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	Ls'++FGGGrc|jj}|jj}|j|||jj|||jj||jjtj|t|jjdSr)
rrrstarttlsassertNotEqualrDr	SSLSocketr5r)rrrs   rrzLocalServerTests.test_starttls^sy~y~		
D$).111D$).111dincm<<<*di&899999rN)	r
rrr.rrrrrrrrrr2se	V	V	VLLL@X455::65:::rr__main__)?rrr?r]rrros.pathosrr
rrtest.supportrrimport_deprecatedrrr
unittest.mockr	rImportErrorpathr_dirname__file__r!rrVrrrrSSLEOFErrorTestCaserrrrrrr r*r:r=rrrrrXr_rmrqrurrrrrr
mainrrr<module>r7s*				



				77777777
+/
+I
6
6########JJJJ
CCC7<<11:~NN?|HH.....9...GGGGGGGGT$$&&&[
?3?$$J#####0(2C###JS011=====/==21=<)))))BL)))X								&*****$8***BFBFBFBFBFBFBFBFJ
/////M///6*****-***--------8PGPGPGPGPGPGPGPGf
@
@
@
@
@$&:H<M
@
@
@GGGGG$&:H<MGGG.	4	4	4	4	4 4h6G	4	4	4	3	3	3	3	39	3	3	3_6_6_6_6_6!_6_6_6D
@
@
@
@
@X&
@
@
@LLLLLh'LLL\
S011HHHHH?HH21H8:8:8:8:8:x(8:8:8:vzHMOOOOOsAA%$A%