ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙa 3glE@sdZddlZddlZddlZddlZddlZddlZddlZddlZddlm Z m Z ddl m Z ddlmZddlmZejZdZdZeedrddlZd Zejejepejd Zejejepejd Ze ed Zd ZdZGdddej Z!Gdddej"ej#Z$Gddde Z%erBddl&m'Z'Gddde'e!Z(eGddde%Z)eGddde%Z*Gddde Z+ddZ,e-d kre.dS)!zTest script for poplib module.N)TestCase skipUnless)support)hashlib_helper) socket_helperFPOP3_SSLTz keycert3.pemz pycacert.pemzSSL not supporteds1 1 2 2 3 3 4 4 5 5 . stFrom: postmaster@python.org Content-Type: text/plain MIME-Version: 1.0 Subject: Dummy line1 line2 line3 . c@seZdZgdgdZdZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZeZddZeZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zerd*d+Zd,d-Zd.d/Zd0S)1DummyPOP3Handlerzpython-testlib-pop-server)ZUIDLIMPLEMENTATIONFcCs8tj|||dg|_|dd|_d|_dS)N (+OK dummy pop3 server ready. F)asynchat async_chat__init__set_terminator in_bufferpush tls_active tls_startingselfconnr//opt/python39/lib/python3.9/test/test_poplib.pyr3s   zDummyPOP3Handler.__init__cCs|j|dSN)rappendrdatarrrcollect_incoming_data;sz&DummyPOP3Handler.collect_incoming_datacCsd|j}t|d}g|_|dd}|d}|dkrR||dd}nd}t|d|r|t|d|}||n|d |dS) N ISO-8859-1 rZcmd_z$-ERR unrecognized POP3 command "%s".) joinrstrsplitlowerfindhasattrgetattrr)rlinecmdspaceargmethodrrrfound_terminator>s    z!DummyPOP3Handler.found_terminatorcCsdSrrrrrr handle_errorNszDummyPOP3Handler.handle_errorcCstj||dddS)Nrr )r r rencoderrrrrQszDummyPOP3Handler.pushcCs||dSrrrr.rrrcmd_echoTszDummyPOP3Handler.cmd_echocCs |dkr|d|ddS)Nguidoz-ERR no such userz+OK password requiredr4r5rrrcmd_userXs zDummyPOP3Handler.cmd_usercCs |dkr|d|ddS)Npythonz-ERR wrong passwordz+OK 10 messagesr4r5rrrcmd_pass]s zDummyPOP3Handler.cmd_passcCs|ddS)Nz +OK 10 100r4r5rrrcmd_statbszDummyPOP3Handler.cmd_statcCs4|r|d||fn|dtj|tdS)Nz +OK %s %sz+OK)rr r LIST_RESPr5rrrcmd_listes zDummyPOP3Handler.cmd_listcCs$|dtttj|tdS)Nz +OK %s bytes)rlen RETR_RESPr r r5rrrcmd_retrnszDummyPOP3Handler.cmd_retrcCs|ddS)Nz +OK message marked for deletion.r4r5rrrcmd_deletszDummyPOP3Handler.cmd_delecCs|ddSNz+OK done nothing.r4r5rrrcmd_noopwszDummyPOP3Handler.cmd_noopcCs|ddSrBr4r5rrrcmd_rpopzszDummyPOP3Handler.cmd_rpopcCs|ddSrBr4r5rrrcmd_apop}szDummyPOP3Handler.cmd_apopcCs|d|dS)Nz +OK closing.)rZclose_when_doner5rrrcmd_quits zDummyPOP3Handler.cmd_quitcCs t|j}|jstrg|d<|SNZSTLS)dictCAPASr SUPPORTS_SSL)rZ_capasrrr _get_capass  zDummyPOP3Handler._get_capascCsZ|d|rL|D],\}}|g}|r:|||d|q|ddS)Nz+OK Capability list followsr .)rrKitemsextendr$)rr.ZcapparamsZ_lnrrrcmd_capas  zDummyPOP3Handler.cmd_capacCs||jrdnddS)Nz+OK I know RFC6856z-ERR What is UTF8?!)r enable_UTF8r5rrrcmd_utf8s zDummyPOP3Handler.cmd_utf8cCsv|jdurh|dt}|t|j|jdddd}|| |d|_d|_ g|_ | n |ddS)NFz+OK Begin TLS negotiationT)Z server_sideZdo_handshake_on_connectZsuppress_ragged_eofsz*-ERR Command not permitted when TLS active) rrssl SSLContextZload_cert_chainCERTFILEZ wrap_socketsocketZ del_channelZ set_socketrr_do_tls_handshake)rr.contextZtls_sockrrrcmd_stlss      zDummyPOP3Handler.cmd_stlsc Csz|jWntjy}z|jdtjtjfvrDWYd}~dS|jdtjkrh|WYd}~Sd|jdvsd|jdvr|WYd}~SWYd}~n\d}~0t y}z0|jdt j kr|WYd}~SWYd}~nd}~00d|_ d|_ dS)NrZSSLV3_ALERT_BAD_CERTIFICATEr"ZSSLV3_ALERT_CERTIFICATE_UNKNOWNTF)rVZ do_handshakerSZSSLErrorargsZSSL_ERROR_WANT_READZSSL_ERROR_WANT_WRITEZ SSL_ERROR_EOF handle_closeOSErrorerrnoZ ECONNABORTEDrr)rerrrrrrWs&  *z"DummyPOP3Handler._do_tls_handshakecCsB|jr|n.ztj|Wntjy<|Yn0dSr)rrWr r handle_readrSZ SSLEOFErrorr[r1rrrr_s  zDummyPOP3Handler.handle_readN)__name__ __module__ __qualname__rIrQrrr0r2rr6r8r:r;r=Zcmd_uidlr@Zcmd_toprArCrDrErFrKrPrRrJrYrWr_rrrrr.s6  rc@sZeZdZeZejfddZddZddZ ddZ d d Z d d Z e Z d dZddZdS)DummyPOP3ServercCsttj|tj|d|_||tj| || dd|_ t |_ |jdd\|_|_d|_dS)NTF) threadingThreadrasyncore dispatcherdaemonZ create_socketrV SOCK_STREAMbindlistenactiveLock active_lock getsocknamehostporthandler_instance)raddressafrrrrs     zDummyPOP3Server.__init__cCs$t|_tj||jdSr)rfEvent_DummyPOP3Server__flagrgstartwaitr1rrrrys  zDummyPOP3Server.startc Csvd|_|jzR|jrTtjrT|jtjdddWdq1sH0YqWtjddntjdd0dS)NTg?r")timeoutcount)Z ignore_all)rnrxsetrhZ socket_maprpZloopZ close_allr1rrrruns  0zDummyPOP3Server.runcCsd|_|dSNF)rnr$r1rrrstopszDummyPOP3Server.stopcCs|||_dSr)handlerrt)rraddrrrrhandle_acceptedszDummyPOP3Server.handle_acceptedcCs |dSr)closer1rrrhandle_connectszDummyPOP3Server.handle_connectcCsdS)Nrrr1rrrwritableszDummyPOP3Server.writablecCsdSrrr1rrrr2szDummyPOP3Server.handle_errorN)r`rarbrrrVAF_INETrryr~rrrr_rr2rrrrrcs  rcc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZejdddd d!Zejdddd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zed0d1Zed2d3Zed4d5Zd6S)7 TestPOP3ClasscCs||ddS)N+OK) assertTrue startswithrresprrrassertOKszTestPOP3Class.assertOKcCs8tttf|_|jtj|jj|jjt j d|_ dSNr{) rcHOSTPORTserverrypoplibPOP3rrrs test_supportLOOPBACK_TIMEOUTclientr1rrrsetUps  zTestPOP3Class.setUpcCs|j|jd|_dSr)rrrrr1rrrtearDowns  zTestPOP3Class.tearDowncCs||jddS)Ns(+OK dummy pop3 server ready. ) assertEqualrZ getwelcomer1rrrtest_getwelcomes zTestPOP3Class.test_getwelcomecCs|tj|jjddS)Nz echo -err) assertRaisesr error_protor _shortcmdr1rrrtest_exceptionsszTestPOP3Class.test_exceptionscCs*||jd|tj|jjddS)Nr7invalid)rruserrrrr1rrr test_userszTestPOP3Class.test_usercCs*||jd|tj|jjddS)Nr9r)rrZpass_rrrrr1rrr test_pass_szTestPOP3Class.test_pass_cCs||jddS)N) d)rrstatr1rrr test_statszTestPOP3Class.test_statcCs>||jddgddf||jdddS)Nr")s1 1s2 2s3 3s4 4s5 51sOK 1 1)rrlistrendswithr1rrr test_list s zTestPOP3Class.test_listcCs*dgddf}|jd}|||dS)N +OK 116 bytessFrom: postmaster@python.orgsContent-Type: text/plainsMIME-Version: 1.0sSubject: Dummyrsline1sline2sline3qfoo)rZretrr)rexpectedrrrr test_retr&s  zTestPOP3Class.test_retrcCs&|tj|jjdtjdddS)Nzecho +%sra)rrrrrZ_MAXLINEr1rrrtest_too_long_lines/sz!TestPOP3Class.test_too_long_linescCs||jddSNr)rrZdeler1rrr test_dele3szTestPOP3Class.test_delecCs||jdSr)rrnoopr1rrr test_noop6szTestPOP3Class.test_noopcCs||jddSr)rrZrpopr1rrr test_rpop9szTestPOP3Class.test_rpopmd5T)ZopensslcCs||jdddS)NrZ dummypassword)rrapopr1rrrtest_apop_normal<szTestPOP3Class.test_apop_normalcCsVddd}t|jd|&|tj|jjddWdn1sH0YdS)NrsN      3  )!9