python (3.12.0)

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

ΑeddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZmZej dZddlmZmZddlmZ	ddlZej0j3ej0j5edZe
ej:ZnGdd	eZGd
dZejAe!fZ"ee"ejFfz
Z"Gdd
eejHZ%ejLedGdde%Z'GddejPZ)dZ*Gddej$Z+GddZ,Gdde,Z-GddZ.Gdde.Z/Gdde/Z0Gd d!e/Z1Gd"d#Z2Gd$d%e2e,ejHZ3Gd&d'e2e,ejHZ4Gd(d)e,ejHZ5Gd*d+e-ejHZ6Gd,d-ejHZ7Gd.d/ejHZ8Gd0d1ejHZ9Gd2d3Z:ejLedGd4d5e9Z;Gd6d7ejHZ<e=d8k(rej|yy#e$rdZY'wxYw)9N)support)
socket_helperwarnings_helpernntplib)NNTP	GroupInfo)patchzkeycert3.pemceZdZ	dZy)SSLErrorzThis will never be raised.N)__name__
__module____qualname__reasonE/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_nntplib.pyrrs
D-rrceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
Zej"dddZdZddZej"dddZdZdZdZedZdZdZy)NetworkedNNTPTestsMixinNcv|jj}|jtt	|yN)server
getwelcomeassertEqualstrtype)selfwelcomes  rtest_welcomez$NetworkedNNTPTestsMixin.test_welcome*s(++((*d7m,rc|jj\}}|j|jd||D]!}|j	t
t
|#y)Nz100 )rhelp
assertTrue
startswithrrr)rresplineslines    r	test_helpz!NetworkedNNTPTestsMixin.test_help.sRkk&&(e/6	.DS$t*-	.rc|jj\}}t|dkDrO|jtt|d|jtt|djyyNr)rlistlenrrrrgrouprr#groupss   r	test_listz!NetworkedNNTPTestsMixin.test_list4s]{{'')fv;?YVAY8S$vay"78rc|jj|j\}}t|dkDrO|j	t
t
|d|j	tt
|djyyr()	rr)	GROUP_PATr*rrrrr+r,s   rtest_list_activez(NetworkedNNTPTestsMixin.test_list_active:sc{{''7fv;?YVAY8S$vay"78rc|jtj5}|jj	ddddj
j}|j|jd|y#1swYAxYw)NXYZZYz500 )	assertRaisesrNNTPPermanentErrorr	_shortcmd	exceptionresponser!r")rcmr#s   rtest_unknown_commandz,NetworkedNNTPTestsMixin.test_unknown_command@se


w99
:	+bKK!!'*	+||$$/6	+	+sA<<Bc@tjjtjdz
}|jj|\}}t
|dkDr=|j|dt|j|djtyy)N)daysr)datetimedatetoday	timedeltar	newgroupsr*assertIsInstancerr+r)rdtr#r-s    rtest_newgroupsz&NetworkedNNTPTestsMixin.test_newgroupsFsz]]
 
 
"X%7%7Q%?
?{{,,R0fv;?!!&)Y7!!&)//37rcVfd}jjj}||jj|jjj
}||jjd}j
|dy)Ncjj|tjj|yr)rCrassertNotIn
GROUP_NAME)descrs r_check_descz=NetworkedNNTPTestsMixin.test_description.<locals>._check_descPs'!!$,T__d3rzzk.brrtt.baz)rdescriptionrIassertInDESCr0r)rrKrJs`  rtest_descriptionz(NetworkedNNTPTestsMixin.test_descriptionOs	4{{&&t7D

dii&{{&&t~~6D{{&&~6r"rcp|jj|j\}}|j|j	dxs|j	d||j|t||j}|j||jj|jy)Nz215 z282 )
rdescriptionsr0r!r"rCdictrIrrM)rr#descsrJs    rtest_descriptionsz)NetworkedNNTPTestsMixin.test_descriptions_skk..t~~>eOOF#>tv'>	FeT*T__%t{{66tGHrc|jj|j}|jdt	||\}}}}}|j||j|j|t|j|t|j|t|j|||j|jd|y)N211 )
rr+rIrr*rCintassertLessEqualr!r")rresultr#countfirstlastr+s       r
test_groupz"NetworkedNNTPTestsMixin.test_grouphs""4??3CK(*0'eUD%0eS)eS)dC(UD)/6rc|jj\}}|j|tj|j	|j
d|j
|j
dy)Nii)rr?rCr>assertGreaterEqualyearrZrr#r?s   r	test_datez!NetworkedNNTPTestsMixin.test_datessV[[%%'
ddH$5$56		40TYY-rc|j|t|j|jhd|j	D]#}|j|t
t
df%y)N>r?fromsubject
references:bytes:lines
message-id)rCrSrakeysvaluesrr)rart_dictvs   r_check_art_dictz'NetworkedNNTPTestsMixin._check_art_dictzs^h-


/	"	8A!!!c4:%67	8rc\|jj|j\}}}}}|jj|dz
|\}}t	|dk(r|jd|d\}}|j
||dz
|j|||j|y)NrWrzno articles retrieved)	rr+rIxoverr*skipTestrarZrp)	rr#r\r]r^namer$art_numrns	         r
test_xoverz"NetworkedNNTPTestsMixin.test_xovers)-):):4??)K&eUD$kk''q$7eu:?MM12!!H2Wd+X&rTzHtemporarily skipped until a permanent solution is found for issue #28971c|jj|j\}}}}}|dz
}|jj|df\}}|d\}}	|j	|	|jj||f\}}|d\}}	|j|||j
|||j	|	y)N
r)rr+rIoverrprarZ)
rr#r\r]r^rtstartr$rurns
          r	test_overz!NetworkedNNTPTestsMixin.test_overs*.):):4??)K&eUD$r	kk&&t}5e!!HX&kk&&t}5e!"I/Wd+X&rc|jj|j\}}}}}|jjd|\}}|D]$}|j	t
t
|d&y)Nrg)rr+rIxhdrrrr)rr#r\r]r^rtr$r%s        r	test_xhdrz!NetworkedNNTPTestsMixin.test_xhdrsf)-):):4??)K&eUD$kk&&y$7e	1DS$tAw-0	1rc|j|tj||j|j||j
D]}|j|t|j|j
ddy)Nry).s.
.
)rCrArticleInfornumberr$bytesrH)rr#articlerur%s     rcheck_article_respz*NetworkedNNTPTestsMixin.check_article_respsqgw':':;W^^W5MM	/D!!$.	/	
r*,DErzFIXME: see bpo-32128c|jj|j\}}}}}|||dz
fD]"}	|jj|\}}n|jd|j|jd||j||jj|\}}	|j|jd||j||	||jj|\}}
|j|jd||j||
|d}|jDcgc]}||s|}
}|
jDcgc]}||s|}}|j||
dgz|	jzy#tj
$r'}|jjdsYd}~d}~wwxYwcc}wcc}w)	Nr~z423 z(could not find a suitable article numberz221 z222 z220 c$|jdS)NsX-Antivirus)r")r%s r<lambda>z@NetworkedNNTPTestsMixin.test_article_head_body.<locals>.<lambda>s ?rr)rr+rIheadrNNTPTemporaryErrorr8r"rsr!rbodyrr$r)rr#r\r]r^rtrurerrdenylistr%filtered_head_linesfiltered_liness               rtest_article_head_bodyz.NetworkedNNTPTestsMixin.test_article_head_bodys)-):):4??)K&eUD$eTAX.
	FG
![[--g6
d

	F
MMDE/6dG4[[%%g.
d/6dG4++G4
g/6gw7?04

6&.tn $66+2==14!)$11)<u)Dtzz)QR---
zz,,V4	
$61s#F+G(4G-+G%>G  G%cfd}jjjd|jjjj	\}}||y)Ncl|d}j|ttfjd|y)NLISTOVERVIEW.FMT)rCr)tuplerN)caps	caps_listrs  r_check_capsz>NetworkedNNTPTestsMixin.test_capabilities.<locals>._check_capss.VI!!)dE];MM.)4r)rarnntp_versiongetcapabilitiescapabilities)rrr#rs`   rtest_capabilitiesz)NetworkedNNTPTestsMixin.test_capabilitiessW	5	
 8 8!<DKK//12[[--/
dDrc|d}d}|jtj|jj||dy)NnotarealusernotarealpasswordF)userpasswordusenetrc)r4r	NNTPErrorrlogin)rbaduserbadpws   rtest_zloginz#NetworkedNNTPTestsMixin.test_zlogins=!"'++T[[->->&		Hrcvt|}	|jjd|_y#d|_wxYwr)rrquit)rclss  rtest_zzquitz#NetworkedNNTPTestsMixin.test_zzquits/4j	KKCJCJs/	8cd}t|D]?}|jdst||}t|s-t	||||Ay)NcBtjfd}|S)Nc~tj|j5|dddy#1swYyxYwr)rtransient_internet	NNTP_HOST)rmeths rwrappedzHNetworkedNNTPTestsMixin.wrap_methods.<locals>.wrap_meth.<locals>.wrappeds1"55dnnEJs	3<)	functoolswraps)rrs` r	wrap_methz7NetworkedNNTPTestsMixin.wrap_methods.<locals>.wrap_meths%
__T
"
#
Nrtest_)dirr"getattrcallablesetattr)rrrtrs    rwrap_methodsz$NetworkedNNTPTestsMixin.wrap_methodssS	H	0D??7+3%DD>
Cy/	0rc|jt5|j|jdddddy#1swYyxYw)NrFtimeoutr)r4
ValueError
NNTP_CLASSrrs rtest_timeoutz$NetworkedNNTPTestsMixin.test_timeouts?


z
*	GOODNNAOF	G	G	Gs	>Acfd}ttjd}|j|j|d<	|j|j
fi|5|j
||j
jddd|j||j|j
fi|5jddd|j|y#1swYnxYw#1swY,xYw#t$rK}tjd|jr%tjd|d|j
d}~wwxYw)Ncltdsy	jy#ttf$rYywxYw)NfileFT)hasattrr OSErrorEOFError)rsris_connectedzANetworkedNNTPTestsMixin.test_with_statement.<locals>.is_connected
s<66*

X&

s!33Frssl_context(?i)KEY.TOO.SMALLzGot  connecting to )rSrINTERNET_TIMEOUTrrrr!r assertFalserrresearchrunittestSkipTest)rrkwargsssl_errrs    @rtest_with_statementz+NetworkedNNTPTestsMixin.test_with_statementsG	,,
'$($4$4F=!	$T__T^^>v>F
//
.
/
\^,$T__T^^>v>F


\^,
/
/

	yy-w~~>''$wi8..2nn-?)ABB	sHD6D=DD!DD	DDD	E,!AE''E,r)rr
rrrr&r.r1r:rErPrUr_rdrprvrskipIfr|rrrrrrclassmethodrrrrrrrr&sK-.9978# I	7.	8	'X__T89
'9
'"1FX__T12S3S<H00&G!rrc@eZdZdZdZdZdZeZe	dZ
e	dZy)NetworkedNNTPTestsznews.trigofacile.comfr.comp.lang.pythonzfr.comp.lang.*Pythonc	~tjdttjd}|j|j|d<tj|j5	|j|jfi||_		dddy#t$rb}tjd|jr'tj|d|d|jt!|jd}~wt"$r%tj|d|jwxYw#1swYyxYw)	NnetworkFrrrz got rz  got EOF error on connecting to )rrequiresrSrrrrrrrrrrrrrprint
EOF_ERRORS)rrrs   r
setUpClasszNetworkedNNTPTests.setUpClassAs3#,,
??&$'OOF=!

-
-cmm
<	A
A+S^^CMMDVD
	A	A
9917>>B"++se5	B225--1B-DEEcmm$
A''3%0..1mm->)@AA
A	A	As++D3-"B	D0"AC??1D00D33D<cR|j|jjyyr)rr)rs r
tearDownClassz NetworkedNNTPTests.tearDownClassXs::!JJOO"rN)rr
rrrIr0rOrrrrrrrrrr8sC&I&J IDJAA,rrrequires SSL supportceZdZdZdZdZdZeeddZ	dZ
dZe>ejZejdej j"e_yy)NetworkedNNTP_SSLTestsz
nntp.aioe.orgz	aioe.testzaioe.*testNNTP_SSLNDEFAULT)rr
rrrIr0rOrrrr.
test_starttlsssl_create_unverified_contextrset_ciphers
TLSVersionTLSv1_2maximum_versionrrrrr]sp IJID*d3JIM
4c446	*&)nn&<&<#rrc2eZdZ	dZdZdZdZdZdZy)
_NNTPServerIOc(tjj|tj|_tj|_||_|jj|jj|jyr)
io	RawIOBase__init__BytesIOc2ss2chandlerr{readline	push_data)rrs  rrz_NNTPServerIO.__init__sW
d#::<::<488,,dnn=rcyNTrrs rreadablez_NNTPServerIO.readablercyrrrs rwritablez_NNTPServerIO.writablerrc	|jj}|jjdd|jj||jj|y)Nrr)rtellseekwrite)rdataposs   rrz_NNTPServerIO.push_datasF<hhmmo

at

crc	|jj}|jj||jj||jjt
|Sr)rrr
r	rprocess_pendingr*)rbrs   rr
z_NNTPServerIO.writesM+hhmmoq

c$$&1v
rc	|jj|jjt	|}t	|}||d||Sr)rrrreadr*)rbufrns    rreadintoz_NNTPServerIO.readintosD1$$&HHMM#c(#FBQrN)	rr
rrrrrr
rrrrrr|s%>rrcLt|}tj||}||fSr)rrBufferedRWPair)rsiors   rmake_mock_filers*

 CS#&D;rceZdZddZdZy)
NNTPServerNcB||_||_|j|yr)rhost
_base_init)rfr
readermodes    rrzNNTPServer.__init__s		
#rc<|jj|`yr)rclosers r_closezNNTPServer._closes		Irr)rr
rrr"rrrrrs$
rrc2eZdZdZfdZfdZdZxZS)MockedNNTPTestsMixinNcBt||jyrsupersetUpmake_serverr	__class__s rr(zMockedNNTPTestsMixin.setUps

rc&t||`yr)r'tearDownrr*s rr-zMockedNNTPTestsMixin.tearDowns
Krc|j|_t|j\|_}t	|dg|i||_|j
S)Nztest.server)
handler_classrrrrr)rargsrrs    rr)z MockedNNTPTestsMixin.make_serversH))+'5$ }FtFvF{{r)rr
rr/r(r-r)
__classcell__r+s@rr$r$sMrr$ceZdZfdZxZS)MockedNNTPWithReaderModeMixincFt||jdy)NT)rr&r*s rr(z#MockedNNTPWithReaderModeMixin.setUps

D)r)rr
rr(r1r2s@rr4r4s
**rr4ceZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZddZdZdZd dZdZdZdddZdddZdZdZedzezZddZddZddZdZy)!
NNTPv1Handlerz200 NNTP mock servercxd|_d|_||_||_d|_d|_|j
y)NFT)in_body
allow_posting	_readline
_push_data
_logged_in
_user_senthandle_welcome)rrrs   rr{zNNTPv1Handler.starts9!!#rct|ddS)Nutf-8surrogateescape)rrrs  r_decodezNNTPv1Handler._decodes4"344rc|jrm	|j}|sy|jj||dk(rn5	|j\}}||d|jid|_d|_d|_	|j|j}|sy|j
dstdj||dd}|j^}}t|d|jzd}||jn#	|||jr||f|_g|_	#d|_d|_d|_wxYw#t$r }tdj||d}~wwxYw)	NrrF
z line doesn't end with \r\n: {!r}handle_zcommand failed: {!r})r9r;rappend
body_callbackrDendswithrformatsplitrupperhandle_unknown	Exception)rr%rtokenscmdrs      rrzNNTPv1Handler.process_pendingss<<~~'		  &8#

%#11ff-499-%)" 	$<< 01D==( !E!L!LT!RSS9D::<LC&4SYY[!8$?D|##%'&M||-16\*$&	)&*" 	$ !Q$%;%B%B4%HIqPQs$!D4E4E	E7E22E7c	d|_yr)r9rs rexpect_bodyzNNTPv1Handler.expect_body
sErc(	|j|yr)r<rCs  rrzNNTPv1Handler.push_datas#rc	tj|}dj|jdz}|j	d}|j|y)NrFrA)textwrapdedentjoin
splitlinesencoder)rlits  rpush_litzNNTPv1Handler.push_litsG#ooc"kk#..*+f4jj!src&|jdy)Nz	500 What?r]rs rrOzNNTPv1Handler.handle_unknowns

k"rc:|j|jyr)r]rrs rr?zNNTPv1Handler.handle_welcomes

dll#rc&|jdyNz205 Bye!r_rs rhandle_QUITzNNTPv1Handler.handle_QUIT"s

j!rc&|jdy)N111 20100914001155r_rs rhandle_DATEzNNTPv1Handler.handle_DATE%s

*+rcr|dk(r|jdy|jdj|y)Nrz$211 486 761 1265 fr.comp.lang.pythonz411 No such group {})r]rL)rr+s  rhandle_GROUPzNNTPv1Handler.handle_GROUP(s0))MM@AMM077>?rc&|jdy)Nz            100 Legal commands
              authinfo user Name|pass Password|generic <prog> <args>
              date
              help
            Report problems to <root@example.org>
            .r_rs rhandle_HELPzNNTPv1Handler.handle_HELP.s

	rNc||jdy|dk(r|jdy|dk(r|jdy|jdy)N412 No newsgroup selected3000234"223 3000234 <45223423@example.com><45223423@example.com>223 0 <45223423@example.com>430 No Such Article Foundr_rmessage_specs  rhandle_STATzNNTPv1Handler.handle_STAT7sMMM56
Y
&MM>?
5
5MM89MM56rc&|jdy)N*223 3000237 <668929@example.org> retrievedr_rs rhandle_NEXTzNNTPv1Handler.handle_NEXTAs

BCrc&|jdy)N,223 3000234 <45223423@example.com> retrievedr_rs rhandle_LASTzNNTPv1Handler.handle_LASTDs

DErcb||jdy|dk(r)|dk(r|jdy|jdy|dk(r|jdy|dk(r@|d	k(r|jd
y|dk(r|jdy|jd
y|jdy)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 keywordr_)ractionparams   rhandle_LISTzNNTPv1Handler.handle_LISTGs>MM
x

%



~
%MM


|
#**

--




MM45rc|dk(r|dk(r|dk(r|jdy|dk(r|dk(r|dk(r|jdy|dk(r!|dvr|dk(r|jd	d
zdzy|jdy)
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
                .r_)rr+date_strtime_strs    rhandle_NEWNEWSzNNTPv1Handler.handle_NEWNEWS}s
''H
,BH$MM

))h(.BH$MM

))00("MM/D0 
!
MM
rcT|dk(r|jdy|jdy)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
                .r_rrs  rhandle_XOVERzNNTPv1Handler.handle_XOVERs.7"MM
4
MM
r)rc|@|jr"|jd|jy|jdy|jd||_y)Nz+340 Input article; end with <CR-LF>.<CR-LF>440 Posting not permitted240 Article received OKr:r]rTposted_body)rrs  rhandle_POSTzNNTPv1Handler.handle_POSTsM<!!

KL  "

9:
MM34#Drc|E|jr'|dk(r"|jd|jy|jdy|jd||_y)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_IHAVEsV<""KK

EF  "

67
MM6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

c||jdn@|dk(r|jdn)|dk(r|jdn|jdy|j|j|jdy)N"220 3000237 <45223423@example.com>ro220 0 <45223423@example.com>rm"220 3000234 <45223423@example.com>rq.)r]sample_articlerrs  rhandle_ARTICLEzNNTPv1Handler.handle_ARTICLEsnMM>?
5
5MM89
Y
&MM>?MM56

d))*

crc||jdn@|dk(r|jdn)|dk(r|jdn|jdy|j|j|jdy)N"221 3000237 <45223423@example.com>ro221 0 <45223423@example.com>rm"221 3000234 <45223423@example.com>rqr)r]sample_headrrs  rhandle_HEADzNNTPv1Handler.handle_HEADnMM>?
5
5MM89
Y
&MM>?MM56

d&&'

crc||jdn@|dk(r|jdn)|dk(r|jdn|jdy|j|j|jdy)N"222 3000237 <45223423@example.com>ro222 0 <45223423@example.com>rm"222 3000234 <45223423@example.com>rqr)r]sample_bodyrrs  rhandle_BODYzNNTPv1Handler.handle_BODYrrc&|jr|jdy|dk(r7|jr|jdy|jdd|_y|dk(r|jdd|_ytdj	|)	Nz502 Already Logged Inrz 482 User Credential Already Sentz381 Password RequiredTpassz281 Login SuccessfulzUnknown cred type {})r=r]r>rPrL)r	cred_typers   rhandle_AUTHINFOzNNTPv1Handler.handle_AUTHINFO
sy??MM12
&
 

@A

56"&
&
 MM01"DO299)DEErrNN)rr
rrr{rDrrTrr]rOr?rcrfrhrjrtrwrzrrrrrrrrrrrrrrrr7r7s$G5$'L#$",@7DF46l>@#'
$04$CK"K!6)K7N
Frr7c"eZdZ	dZdZddZy)
NNTPv2Handlercd}|js!|j|jdy|j|jdy)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 USERrL)r=r]rLrfmts  rhandle_CAPABILITIESz!NNTPv2Handler.handle_CAPABILITIESs<	MM#**%BCDMM#**R.)rctd)Nz3MODE READER sent despite READER has been advertised)rP)r_s  rhandle_MODEzNNTPv2Handler.handle_MODE.sMNNrNc$|j|Sr)rrrs  rhandle_OVERzNNTPv2Handler.handle_OVER1s  ..rr)rr
rrrrrrrrrs,*"O/rrc eZdZ	fdZxZS)CapsAfterLoginNNTPv2Handlerc^|js|jdyt|
y)Nz480 You must log in.)r=r]r'rr*s rrz/CapsAfterLoginNNTPv2Handler.handle_CAPABILITIES8s"MM01G')r)rr
rrr1r2s@rrr5s=**rrc eZdZ	dZdZdZy)ModeSwitchingNNTPv2Handlercd|_yNF)	_switchedrs rrz#ModeSwitchingNNTPv2Handler.__init__Bs	rcd}|jr!|j|jdy|j|jdy)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
            .rLzMODE-)rr]rLrs  rrz.ModeSwitchingNNTPv2Handler.handle_CAPABILITIESEs;	>>MM#**R.)MM#**W-.rc4d|_|jdy)NTz200 Posting allowed)rr])rwhats  rrz&ModeSwitchingNNTPv2Handler.handle_MODEUs

+,rN)rr
rrrrrrrrr?s./ -rrceZdZfdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#xZ$S)"NNTPv1v2TestsMixinc"t|yr)r'r(r*s rr(zNNTPv1v2TestsMixin.setUp]s

rcx|j|jj|jjyr)rrrrrs rrzNNTPv1v2TestsMixin.test_welcome`s&,,dll.B.BCrc|jdk(r&|jd|jj|jj	dd|jd|jjy)NrAUTHINFOtestusertestpw)rrNr_capsrrHrs r
test_authinfoz NNTPv1v2TestsMixin.test_authinfocsX!MM*dkk&7&78*h/	
T[[%6%67rc|jj\}}|j|d|j|tjddddddy)Nre	r7)rr?rr>rcs   rrdzNNTPv1v2TestsMixin.test_dateksN[[%%'
d34x00q"aRHIrc|j|jj|jj	}|j|d|j
|jjyrb)rrclosedrrrr!)rr#s  r	test_quitzNNTPv1v2TestsMixin.test_quitpsN){{!z*(rc|jj\}}|j|d|j|gdy)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_helpvs>[[%%'
d34 
	rc	r|jj\}}|jt|d|d}|j|t	dddd|jjd\}}|jt|d|d	}|j|t	d
dddy)
Nr~comp.lang.python.announce
0000001153
0000000993mr}rrz!gmane.comp.python.distutils.devel
0000014104
0000000001)rr)rr*r)rr#r-gs    rr.zNNTPv1v2TestsMixin.test_lists{{'')fVa(1I1<"C
)	*{{''
6fVa(1I9<"C
)	*rc*|jjd\}}}|j|d|j|d|j|d|jjd\}}}|j|d|j|d|j|d|jtj
5}|jjdddd|jjjd|jtj
5}|jjddd|j|jjdy#1swYxYw#1swY<xYw)	N-rnrorprz<non.existent.id>rqrl)rstatrr4rrr7r8)rr#rurr9s     r	test_statzNNTPv1v2TestsMixin.test_statsL$(KK$4$4W$=!gzCD'*%=>$(KK$4$45M$N!gz=>!$%=>


w99
:	2bKK01	2..0KL


w99
:	bKK	..0KL	2	2		s
E=3F	=F	Fc|jj\}}}|j|d|j|d|j|dy)Nrv-z<668929@example.org>)rnextrrr#rurs    r	test_nextzNNTPv1v2TestsMixin.test_nextsM$(KK$4$4$6!gzKL'*%;<rc|jj\}}}|j|d|j|d|j|dy)Nryrro)rr^rrs    r	test_lastzNNTPv1v2TestsMixin.test_lastsM$(KK$4$4$6!gzMN'*%=>rc|jjd}|j|d|jjd}|j|dy)NrThe Python computer language.comp.lang.pythonxrL)rrMr)rrJs  rrPz#NNTPv1v2TestsMixin.test_descriptionsM{{&&'9:>?{{&&':;r"rcR|jjd\}}|j|d|j|ddi|jjd\}}|j|ddd|jjd\}}|j|iy)Nrz-215 Descriptions in form "group description".rrz4Announcements about the Python language. (Moderated))rrr)rrRrr,s   rrUz$NNTPv1v2TestsMixin.test_descriptionss{{//0BCfNO ?"	{{//0CDf ?)_"	{{//0CDf$rc8|jjd\}}}}}|j|jd||j	|d|j	|d|j	|d|j	|d|jtj5}|jjddddj}|j|jjd|jy#1swYKxYw)NrrXiiizcomp.lang.python.develz411 No such group)
rr+r!r"rr4rrr7r8)rr#r\r]r^r+r9excs        rr_zNNTPv1v2TestsMixin.test_groups*.++*;*;<Q*R'eUD%/6$t$$ 56


w99
:	8bKK67	8ll//0CD	&	8	8s*DDctjdddddd}|jjd|\}}dj|j}|j|||j|d	d
gtjdddddd}|jjd|\}}|j|d|j|gy)
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>rnewnewsrLrr)rrDr#idsexpecteds     rtest_newnewszNNTPv1v2TestsMixin.test_newnewss


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


tQAr1
5KK''(=rB	cJKb!rc|jt|d|j|djdd|j|dd|j|dd|j|d	d
y)NrryrAu-- Signed by André.rGrs.Here is a dot-starting line.sThis is just a test article.)rr*decoderr$s  r_check_article_bodyz&NNTPv1v2TestsMixin._check_article_bodystUQ'r))'24JKrC(r$DEr$CDrc|jt|d|j|dd|j|ddy)Nrrs&From: "Demo User" <nobody@example.net>s7Message-ID: <i.am.an.article.you.will.want@example.com>)rr*rs  r_check_article_headz&NNTPv1v2TestsMixin._check_article_heads@UQ'q#LMq#]^rc|jt|d|j|dd|j|dd|j|ddy)Nrrrr)rr*r
rrs  r_check_article_dataz&NNTPv1v2TestsMixin._check_article_datasRUQ'  r+  rs,q3'rcn|jj\}}|j|d|\}}}|j|d|j|d|j||jjd\}}|j|d|\}}}|j|d|j|d|j||jjd\}}|j|d|\}}}|j|d|j|d|j||j	t
j5}|jjdddd|jjjd	y#1swY0xYw)
Nrrrorrrr<non-existent@example.com>rq)	rrrrr4rrr7r8rr#inforurr$r9s       rtest_articlezNNTPv1v2TestsMixin.test_articles[[((*
dCD%)"U'*%=>  '[[((1
dCD%)"U'*%=>  '[[(()AB
d=>%)"U!$%=>  '


w99
:	>bKK <=	>..0KL	>	> F++F4ctj}|jj|\}}|j	|d|\}}}|j	|d|j	|d|j	|g|j}|j
|jdt||j
|jdt|y)NrrrroKFrom: "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"asciirKrrr#rrurr$rs        rtest_article_filez$NNTPv1v2TestsMixin.test_article_filesJJL[[((a(0
dCD%)"U'*%=>#zz|
5T{		



.
T{	rcn|jj\}}|j|d|\}}}|j|d|j|d|j||jjd\}}|j|d|\}}}|j|d|j|d|j||jjd\}}|j|d|\}}}|j|d|j|d|j||j	t
j5}|jjdddd|jjjd	y#1swY0xYw)
Nrrrorrrrrrq)	rrrr
r4rrr7r8rs       r	test_headzNNTPv1v2TestsMixin.test_head [[%%'
dCD%)"U'*%=>  '[[%%g.
dCD%)"U'*%=>  '[[%%&>?
d=>%)"U!$%=>  '


w99
:	;bKK9:	;..0KL	;	;rctj}|jj|\}}|j	|d|\}}}|j	|d|j	|d|j	|g|j}|j
|jdt||j|jdt|y)Nrrrrorr)rrrrrrr!r"rrrKrs        rtest_head_filez!NNTPv1v2TestsMixin.test_head_file;sJJL[[%%1%-
dCD%)"U'*%=>#zz|
5T{		

.
T{	rcn|jj\}}|j|d|\}}}|j|d|j|d|j||jjd\}}|j|d|\}}}|j|d|j|d|j||jjd\}}|j|d|\}}}|j|d|j|d|j||j	t
j5}|jjdddd|jjjd	y#1swY0xYw)
Nrrrorrrrrrq)	rrrrr4rrr7r8rs       r	test_bodyzNNTPv1v2TestsMixin.test_bodyOrrctj}|jj|\}}|j	|d|\}}}|j	|d|j	|d|j	|g|j}|j
|jdt||j|jdt|y)Nrrrrorr)rrrrrrrr"rr!rKrs        rtest_body_filez!NNTPv1v2TestsMixin.test_body_filejsJJL[[%%1%-
dCD%)"U'*%=>#zz|
5T{		



.
T{	rcZ|j|jd||jt|d|d\}}|j|d|j|ddddd	d
ddd
|d\}}|j|dd|d\}}|j|ddy)Nz224 r	r9zEDoug 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)rfrgr?rkrhrirjxrefr~r(rrg0Re: Message d'erreur incompréhensible (par moi))r!r"rr*)rr#	overviewsrurzs     rcheck_over_xover_respz(NNTPv1v2TestsMixin.check_over_xover_resp~s/6Y+!!
"%[`5L:@	 		"!
ft,!!
iK	Mrcf|jjdd\}}|j||y)Nr%;)rrrr+rr#r*s   rrvzNNTPv1v2TestsMixin.test_xovers,++++B3i""43rcd|jjd\}}|j||y)N)r%r-)rrzr+r.s   rr|zNNTPv1v2TestsMixin.test_overs*++**84i""43rsFrom: "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é.
c8|jj}|jt|d|j|dd|j|dd|j|dd|j|dd	|j|d
dy)NrxryrrGs-- Signed by André.
r
rs ..Here is a dot-starting line.
rs(From: "Demo User" <nobody@example.net>
)rrrr*rs  r_check_posted_bodyz%NNTPv1v2TestsMixin._check_posted_bodys((UR(rH-r$EFrG,r$IJq#PQrc|j}|||fz}d|j_||}|j|jj	dd}|||fz}d|j_||}|j|S)Nr1
)sample_postrrr2replace)rfuncfile_factoryr0post	func_argsr#s       r_check_post_ihave_subz(NNTPv1v2TestsMixin._check_post_ihave_subsL.00	#' Y!''7L.00	#' Y!rc|j|g|dti}|j|||j|g|dti}|j|||j|g|dtj
i}|j||d}|j|g|d|i}|j||d}|j|g|d|i}|j||y)Nr8c8t|jdS)NTkeependsiterrZrs r	iterlinesz6NNTPv1v2TestsMixin.check_post_ihave.<locals>.iterlinessd344rc8t|jdS)NFr>r@rBs rrCz6NNTPv1v2TestsMixin.check_post_ihave.<locals>.iterlinesse455r)r;rr	bytearrayrr)rr7success_respr0r#rCs      rcheck_post_ihavez#NNTPv1v2TestsMixin.check_post_ihaves)t))$JJEJ|,)t))$NNIN|,)t))$OOBJJO|,	5)t))$NNIN|,	6)t))$NNIN|,rcp|j|jjdd|j_|jtj5}|jj|jddd|jjjdy#1swY0xYw)NrFr)rGrr9rr:r4rrr5rr7r8rr9s  r	test_postzNNTPv1v2TestsMixin.test_postsdkk..0IJ%*"


w99
:	/bKKT--.	/..4	6	/	/s&B,,B5cR|j|jjdd|jtj
5}|jjd|jddd|jjjdy#1swY0xYw)Nrrz<another.message.id>r)
rGrihaver4rrr5rr7r8rIs  r
test_ihavezNNTPv1v2TestsMixin.test_ihavesdkk//1MK	M


w99
:	HbKK4d6F6FG	H..1	3	H	Hs'BB&ctjdddddd}|jtj|jj
d|y)Nrr~rrr)r>r4r
NNTPDataErrorrr)rrDs  rtest_too_long_linesz&NNTPv1v2TestsMixin.test_too_long_linessE


tQ1a
3'//++--/A2	Gr)%rr
rr(rrrdrr&r.rrrrPrUr_rrr
rrrrrr!r#r+rvr|r5r2r;rGrJrMrPr1r2s@rrr[sD8J
)*M =?#%&"&E_
(M6*M6(M6(M*44	*	R -*63GrrceZdZ	dZeZdZy)NNTPv1Testsr~c|jj}|j|i|j|jjd|j|jjdy)Nr~rrrrnntp_implementationrrs  r	test_capszNNTPv1Tests.test_capssX{{**,r"111588$?rN)rr
rrr7r/rWrrrrRrRs4L!M@rrRceZdZ	dZeZdZy)NNTPv2Testsrc|jj}|j|ddgddgdgggdgggd|j|jjd|j|jjd	y)
N23INNz2.5.1USER)r|zACTIVE.TIMESzDISTRIB.PATSHEADERSr~r)VERSIONIMPLEMENTATIONrHDRrOVERPOSTREADERr	z	INN 2.5.1rTrVs  rrWzNNTPv2Tests.test_capss{{**,Sz$g.>
 
		
111588+FrN)rr
rrrr/rWrrrrYrYs6L!MGrrYceZdZ	dZeZdZy)CapsAfterLoginNNTPv2Testsrc|j|jji|jjdd|j	d|jjy)Nrrr`)rrrrrNrs rtest_caps_only_after_loginz4CapsAfterLoginNNTPv2Tests.test_caps_only_after_loginsH**B/*h/

i!2!23rN)rr
rrrr/rirrrrgrgsML/M4rrgceZdZ	dZeZdZy)SendReaderNNTPv2TestsrcP|jd|jjy)Nre)rNrrrs r(test_we_are_in_reader_mode_after_connectz>SendReaderNNTPv2Tests.test_we_are_in_reader_mode_after_connect&s

h 1 12rN)rr
rrrr/rmrrrrkrks-L.M3rrkcbeZdZdZdZdZdZdZdZe	jeddZy	)
	MiscTestscfd}|dd|dd|dd|dd|dd|d	d
|ddy)NcPjtj||yr)rr
decode_header)arrs  rgivesz+MiscTests.test_decode_header.<locals>.gives-sW2215q9rrLza 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)rrrts` rtest_decode_headerzMiscTests.test_decode_header,sh	:
b2
 01
$&<=
57KL
J`	b	<(	*	@@	Brcgd}|jtj|gdgd}|jtj|gdgd}|jtj|gdgd}|jtj|gdgd}|jtj|gdgd}|jtj|gd	y)
N)Subject:From:Date:Message-ID:References:rirj)rgrfr?rkrhrirj)rxryrzr{r|Bytes:Lines:)zsubject:zFROM:zDaTe:zmessage-ID:r|zBYTES:r~)	rxryrzr{r|rirj	Xref:fullzDistribution:full)	rgrfr?rkrhrirjr(distribution)	rxryrzr{r|r}r~z	Xref:FULLzDistribution:FULL)rxryrzr{r|r}r~rrgrfr?rkrhrirjr()rr_parse_overview_fmtrs  rtest_parse_overview_fmtz!MiscTests.test_parse_overview_fmt<s444U;
!	"444U;
!	"444U;
!	"&	
44U;
9	:&	
44U;
9	:A44U;
)	*rctjdgz}dg}tj||}|\\}}|j|d|j|dddddd	d
ddd
g}tj||}|\\}}|j|dddg}tj||}|\\}}|j|dd|j|ddy)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 -0500roz<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: 	rh rL)r_DEFAULT_OVERVIEW_FMT_parse_overviewr)rrr$overviewrufieldss      rtest_parse_overviewzMiscTests.test_parse_overviewds++vh6
;
**5#6%&'*16/2/8	"
		

**5#6%&.

**5#6%&-s3,rc
fd}|dddddddd|d	d
dddddd|dd
dddddd|dd
d
dddddy)Ncrjtj||tj|yr)rr_parse_datetimer>)rsrcrs   rrtz,MiscTests.test_parse_datetime.<locals>.givess.W44Q:%..2
4r19990623135624rr819990623135624990623090623irrus` rtest_parse_datetimezMiscTests.test_parse_datetimesc	4	dAr2r2>
j(D!RR<
h$2r2r:
h$2r2r:rc
fd}|dddddddd	|d
ddddddd	|ddd
dddddfd}|ddddd|d
dddd|ddd
ddy)Nctj||||||}	jtj|||f	jtj|d||fyrr>rr_unparse_datetime
yMdhrsrrrDrs
         rrtz.MiscTests.test_unparse_datetime.<locals>.givesse""1aAq!4BW66r:&1
3W66r5A&1
3rrrrrrrrr20000623rrWr~rr	20100605010203ctj|||}jtj	|||fjtj	|d||fyrr>r?rrrrrrrrrDrs      rrtz.MiscTests.test_unparse_datetime.<locals>.givess]q!Q'BW66r:&1
3W66r5A&1
3r000000rrus` rtest_unparse_datetimezMiscTests.test_unparse_datetimes	3	dAr2r2z8<
dAr2r2z8<
dAq!Q:x8	3	dAr:x0
dAr:x0
dAq*h/rc
fd}|dddddddd	|d
ddddddd	|ddd
dddddfd}|ddddd|d
dddd|ddd
ddy)Nctj||||||}	jtj|d||fyrrrs
         rrtz5MiscTests.test_unparse_datetime_legacy.<locals>.givessB""1aAq!4BW66r4@&1
3rrrrrrrrrr000623rrWr~rr	100605rctj|||}jtj	|d||fyrrrs      rrtz5MiscTests.test_unparse_datetime_legacy.<locals>.givess:q!Q'BW66r4@&1
3rrrrus` rtest_unparse_datetime_legacyz&MiscTests.test_unparse_datetime_legacys	3	dAr2r2x:
dAr2r2x:
dAq!Q8X6	3	dAr8X.
dAr8X.
dAq(H-rrcB|jttdy)Nr)r!rrrs rtest_ssl_supportzMiscTests.test_ssl_supports45rN)
rr
rrvrrrrrr
skipUnlessrrrrrroro*sGB &*P,-\	;0..&X45666rroceZdZ	dZy)PublicAPITestsc|jttdgd}t|j	d|jt
tjt
|y)N__all__)rrNNTPReplyErrorrr5NNTPProtocolErrorrOrrr)r!rrrrIrsetr)r
target_apis  rtest_module_all_attributez(PublicAPITests.test_module_all_attributesO34M
?j)W__-s:?rN)rr
rrrrrrrsH@rrcNeZdZ	ejZ	ddZdZdZdZ	dZ
dZy)	MockSocketTestsNcf	
Gfdd}G	
fddd
g	td|5|j||5|jd||dddddd|j
	D]}|j|jy#1swYExYw#1swYIxYw)	NceZdZfdZy)NMockSocketTests.check_constructor_error_conditions.<locals>.mock_socket_modulecSrr)addressr
MockSockets  rcreate_connectionz`MockSocketTests.check_constructor_error_conditions.<locals>.mock_socket_module.create_connections!|#rN)rr
rr)rsrmock_socket_modulers
$rrc$eZdZfdZfdZy)FMockSocketTests.check_constructor_error_conditions.<locals>.MockSocketc
dyrr)r
socket_closeds rr!zLMockSocketTests.check_constructor_error_conditions.<locals>.MockSocket.closes $
rcT}t|\}}j||Sr)rrI)socketmoderrrfilesr/s     rmakefilezOMockSocketTests.check_constructor_error_conditions.<locals>.MockSocket.makefiles)'/(14T"rN)rr
rr!r)rr/rsrrrs

%
rrFznntplib.socketdummy)rr)r	assertRaisesRegex
nntp_classr!r)rr/expected_error_typeexpected_error_msgrrrrrrrs `      @@@r"check_constructor_error_conditionsz2MockSocketTests.check_constructor_error_conditionss
	$	$				

#%7
8	D

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

&	&AOOAHH%	&		D	D	D	Ds#B'BB'B$	 B''B0cxGddt}|j|tj|jy)NceZdZdZy)1MockSocketTests.test_bad_welcome.<locals>.HandlerzBad WelcomeNrr
rrrrrHandlerrs#Grr)r7rrrrrrs  rtest_bad_welcomez MockSocketTests.test_bad_welcomes.	$m	$//W..	ArcxGddt}|j|tj|jy)NceZdZdZy)EMockSocketTests.test_service_temporarily_unavailable.<locals>.Handlerz#400 Service temporarily unavailableNrrrrrr;Grr)r7rrrrrs  r$test_service_temporarily_unavailablez4MockSocketTests.test_service_temporarily_unavailable.	<m	<//W//	BrcxGddt}|j|tj|jy)NceZdZdZy)EMockSocketTests.test_service_permanently_unavailable.<locals>.Handlerz#502 Service permanently unavailableNrrrrrrrrr)r7rrr5rrs  r$test_service_permanently_unavailablez4MockSocketTests.test_service_permanently_unavailable
rrcnGfddt}d|j|tjy)NceZdZfdZy)6MockSocketTests.test_bad_capabilities.<locals>.Handlerc(|jyrr_)rcapabilities_responses rrzJMockSocketTests.test_bad_capabilities.<locals>.Handler.handle_CAPABILITIESs

34rN)rr
rr)rsrrrs
5rrz201 bad capability)r7rrr)rrrs  @rtest_bad_capabilitiesz%MockSocketTests.test_bad_capabilitiess4	5m	5!5//W++-B	Drczd}d}Gfddt}d|j|tj||y)Nzt@e.compythonceZdZfdZy)3MockSocketTests.test_login_aborted.<locals>.Handlerc(|jyrr_)rr0authinfo_responses  rrzCMockSocketTests.test_login_aborted.<locals>.Handler.handle_AUTHINFOs

/0rN)rr
rr)rsrrrs
1rrz503 Mechanism not recognized)r7rrr5)rrrrrs    @rtest_login_abortedz"MockSocketTests.test_login_abortedsB	1m	1;//W//1B8	rr)rr
rrrrrrrrrrrrrrrs9?J
"&&:ABBD
rrceZdZ	dZy)bypass_contextc|Srr)sockr0s  rwrap_socketzbypass_context.wrap_socket(srN)rr
rrrrrrr&s
1rrceZdZedZy)MockSslTestsc8tj|dti|S)Nr)rrr)rkws  rrzMockSslTests.nntp_class-sG.GBGGrN)rr
rstaticmethodrrrrrr+sHHrrcJeZdZdZdZejeddZy)LocalServerTestsctj}tj|}|jt	j
|j|f|_|jj|j|jj|jttj|d|_y)N)targetr0F)r)rr	bind_portlisten	threadingThread
run_server
backgroundr{
addCleanuprYenterContextrHOSTnntp)rrports   rr(zLocalServerTests.setUp3s}}&&t,
#**??$2,,-%%d=+=+=te&TU	rc,|5|j\}}dddtj5}|j|j|j	d}|jd	|j
}|dk(r|jdn|dk(r|j|jdtjtj}|jt|j|d}|j||j|j	d}n1|d	k(r|jd
ntdj|	dddy#1swYhxYw#1swYyxYw)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_chaincertfilerrrL)rrclientrcleanupreaderrRcontexts        rr	zLocalServerTests.run_server>sn
	(++-KVQ	(

!
!
#	Lw!!&)**6??4+@AFNN23oo'--NN!O+LLNNN#GH!nnS-D-DEG++H5$00D12F))&1$226??43HIFK'NN?3$%>%E%Ec%JKK-(1	L	L	(	(	L	LsE=EF
=F
Frc|jj}|jj}|jj|j	||jj|j	||jj|j|jjtj|jt|jjyr)
rrrstarttlsassertNotEqualrCr	SSLSocketr4r)rrrs   rrzLocalServerTests.test_starttls^syy~~yy~~			
D$))..1D$))..1diinncmm<*dii&8&89rN)	rr
rr(r	rrrrrrrrr2s3	VL@X45:6:rr__main__)?rrr>rWrrros.pathosrrrrtest.supportrrimport_deprecatedrrr
unittest.mockr	rImportErrorpathrYdirname__file__rrrPrrrrSSLEOFErrorTestCaserrrrrrrr$r4r7rrrrrRrYrgrkrorrrrrrmainrrr<module>r1s	
	7
+/
+
+I
6#
77<<1>B?||H.9.GGT$$&[
?3??$$J#0(2C2C#JS01=/=2=<)BLL)X		&*$8*BFBFJ
/M/6*-*--8PGPGf
@$&:H<M<M
@G$&:H<M<MG.	4 4h6G6G	4	39	3_6!!_6D
@X&&
@Lh''L\
S01H?H2H8:x((8:vzHMMOu2
CsI99JJ