ÿØÿà 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 3gd@srddlmZddlmZddlmZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlmZmZmZmZmZddlmZddlZddlmZddlmZmZmZz ddlZWneydZYn0ejejepejd Z ejejepejd Z!Gd d d ej"Z#err?rGrrrrr@]sr@c@s eZdZdS)r@Nr=r>r?rrrrr@jscszeZdZejZdZdZfddZddZ ddZ d d Z d d Z d dZ ddZddZddZddZddZZS)SimpleIMAPHandlerNr0cstd|j_d|j_dSNF)supersetupserver is_selectedloggedr __class__rrrLus zSimpleIMAPHandler.setupcCs$trtd||j|dS)NzSENT: %r)rprintstripwfilewritermessagerrr_sendzszSimpleIMAPHandler._sendcCs||ddS)N )rXrVrrr _send_lineszSimpleIMAPHandler._send_linecCs||ddS)NASCII)rZencoderVrrr_send_textlinesz SimpleIMAPHandler._send_textlinecCs|d|||fdS)N )r]join)rtagcoderWrrr _send_taggedszSimpleIMAPHandler._send_taggedcCs|dd}z&|jd}|dkr*WdS||7}WntyHYdS0|drqXqtrltd||jrz|j |Wq t yd|_Yq 0q | d }|d}|d}|dd}t |d |rt|d |||}|r||_t|q ||d |d q dS) Nz* OK IMAP4rev1rrYzGOT: %rr[rZcmd_BADz unknown)r]Zrfilereadr5endswithrrRrS continuationsend StopIterationdecodesplithasattrgetattrnextrb)rlinepartZ splitliner`cmdargsrhrrrhandles:         zSimpleIMAPHandler.handlecCs4|jrd|jnd}|d|||dddS)Nz IMAP4rev1 Z IMAP4rev1z * CAPABILITY OKCAPABILITY completed) capabilitiesr]rb)rr`rsZcapsrrrcmd_CAPABILITYs  z SimpleIMAPHandler.cmd_CAPABILITYcCs$d|j_|d||dddS)Nz"* BYE IMAP4ref1 Server logging outruzLOGOUT completed)rMrOr]rbrr`rsrrr cmd_LOGOUTs zSimpleIMAPHandler.cmd_LOGOUTcCs|d|j_||dddS)NrruzLOGIN completed)rMrOrbryrrr cmd_LOGINs zSimpleIMAPHandler.cmd_LOGINcCs$d|j_|d||dddS)NT * 2 EXISTSru[READ-WRITE] SELECT completed.)rMrNrZrbryrrr cmd_SELECTs zSimpleIMAPHandler.cmd_SELECTcCs2|jjr d|j_||ddn||dddS)NFruz*Returned to authenticated state. (Success)rezNo mailbox selected)rMrNrbryrrr cmd_UNSELECTszSimpleIMAPHandler.cmd_UNSELECT)r=r>r?rLOOPBACK_TIMEOUTtimeoutrhrwrLrXrZr]rbrtrxrzr{r~r __classcell__rrrPrrIps *rIc@s eZdZdZd;ddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZejddddd Zejdddd!d"Zd#d$Zed%d&d'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Z d9d:Z!dS)<NewIMAPTestsMixinNTcCsGddd|j}||j|tjdf||_tj|jd|jj ddid|_ d|j _ |j |rx|j |jj|_|j|jfS) a Sets up imap_handler for tests. imap_handler should inherit from either: - SimpleIMAPHandler - for testing IMAP commands, - socketserver.StreamRequestHandler - if raw access to stream is needed. Returns (client, server). c@seZdZddZdS)z/NewIMAPTestsMixin._setup..TestTCPServercSs|||dS)zP End request and raise the error if one occurs. NZ close_request server_closerZrequestZclient_addressrrr handle_errors z.TestTCPServer.handle_errorNr=r>r?rrrrr TestTCPServersrrz-server poll_interval{Gz?nametargetkwargsT) server_classZ addCleanup_cleanuprHOSTrM threadingThreadZ_testMethodName serve_foreverthreaddaemonstart imap_classserver_addressclient)rZ imap_handlerr2rrrr_setups  zNewIMAPTestsMixin._setupcCsJ|jdur |jjdkr |j|j|jt|jd|_dS)z Cleans up the test server. This method should not be called manually, it is added to the cleanup queue in the _setup method already. NLOGOUT)rstateshutdownrMrr join_threadrrrrrrs     zNewIMAPTestsMixin._cleanupcCsDGdddtj}|j|dd\}}|jtjj|jg|jRdS)Nc@seZdZddZdS)zONewIMAPTestsMixin.test_EOF_without_complete_welcome_message..EOFHandlercSs|jddSNs* OKrTrUrrrrrtszVNewIMAPTestsMixin.test_EOF_without_complete_welcome_message..EOFHandler.handleNr=r>r?rtrrrr EOFHandlersrFr2) socketserverStreamRequestHandlerrr4rr6abortrr)rr_rMrrr)test_EOF_without_complete_welcome_messages z;NewIMAPTestsMixin.test_EOF_without_complete_welcome_messagecCsBGdddt}|j|dd\}}|jtjj|jg|jRdS)Nc@seZdZddZdS)zBNewIMAPTestsMixin.test_line_termination..BadNewlineHandlercSs|d||dddSNs* CAPABILITY IMAP4rev1 AUTH rurvrXrbryrrrrxs zQNewIMAPTestsMixin.test_line_termination..BadNewlineHandler.cmd_CAPABILITYNr=r>r?rxrrrrBadNewlineHandler srFr)rIrr4rr6rrr)rrrrMrrrtest_line_termination s z'NewIMAPTestsMixin.test_line_terminationcCstGdddt}||\}}||j|tjjd|dWdn1sZ0Y||jdS)Nc@seZdZdZdS)zMNewIMAPTestsMixin.test_enable_raises_error_if_not_AUTH..EnableHandlerAUTH ENABLE UTF8=ACCEPTNr=r>r?rwrrrr EnableHandlersrzENABLE.*NONAUTHfoo) rIr assertFalse utf8_enabledassertRaisesRegexrr6r3enable)rrrrrrr$test_enable_raises_error_if_not_AUTHs  (z6NewIMAPTestsMixin.test_enable_raises_error_if_not_AUTHcCsL|t\}}|tjjd|dWdn1s>0YdS)Ndoes not support ENABLEr)rrIrrr6r3r)rrrrrr)test_enable_raises_error_if_no_capabilitys  z;NewIMAPTestsMixin.test_enable_raises_error_if_no_capabilitycCsh|t\}}|dd\}}||d|tjjd|dWdn1sZ0YdS)Nuserpassrur UTF8=ACCEPT) rrIloginrrrr6r3rrrrtypdatarrr.test_enable_UTF8_raises_error_if_not_supported$s  z@NewIMAPTestsMixin.test_enable_UTF8_raises_error_if_not_supportedc CsGdddt}||\}}||jd|ddd\}}||d||jd|d \}}||d||jd d }|ddd|d \}}||d||jd |d dS) Nc@s(eZdZdZddZddZddZdS) zHNewIMAPTestsMixin.test_enable_UTF8_True_append..UTF8AppendServerzENABLE UTF8=ACCEPTcSs||dddSNruzENABLE successfulrbryrrr cmd_ENABLE/szSNewIMAPTestsMixin.test_enable_UTF8_True_append..UTF8AppendServer.cmd_ENABLEcss&|ddV|j_||dddSN+ruzFAKEAUTH successfulr]rMresponserbryrrrcmd_AUTHENTICATE1s  zYNewIMAPTestsMixin.test_enable_UTF8_True_append..UTF8AppendServer.cmd_AUTHENTICATEcss&|ddV|j_||dddSNrruZokayrryrrr cmd_APPEND5s  zSNewIMAPTestsMixin.test_enable_UTF8_True_append..UTF8AppendServer.cmd_APPENDN)r=r>r?rwrrrrrrrUTF8AppendServer-srasciiMYAUTHcSsdSNsfakerxrrr;rcz@NewIMAPTestsMixin.test_enable_UTF8_True_append..ru ZmFrZQ== rutf-8Subject: üñí©öðé UTF8 (%s) ) rIrr _encoding authenticaterrappendr\) rrrrMrar msg_stringrrrrrtest_enable_UTF8_True_append,s     z.NewIMAPTestsMixin.test_enable_UTF8_True_appendcCsGdddt}||\}}|ddd\}}||d|d\}}||d||j|tj j d| d d Wdn1s0YdS) Nc@s eZdZdZddZddZdS)zPNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode..UTF8ServerrcSs||dddSrrryrrrrJsz[NewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode..UTF8Server.cmd_ENABLEcss&|ddV|j_||dddSrrryrrrrLs  zaNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode..UTF8Server.cmd_AUTHENTICATENr=r>r?rwrrrrrr UTF8ServerHsrrcSsdSrrrrrrrQrczNNewIMAPTestsMixin.test_search_disallows_charset_in_utf8_mode..rurz charset.*UTF8rbar) rIrrrr assertTruerrrr6r3search)rrrrrrrr*test_search_disallows_charset_in_utf8_modeGs   z.MyServercSs||dd|ddSNNOz#unrecognized authentication type {}rrbformatryrrrr[s zGNewIMAPTestsMixin.test_bad_auth_name..MyServer.cmd_AUTHENTICATENr=r>r?rrrrrMyServerZsrz'unrecognized authentication type METHODMETHODcSsdSNrrrrrrrarcz6NewIMAPTestsMixin.test_bad_auth_name..rIrrrr6r3rrrrrrrrtest_bad_auth_nameYs  z$NewIMAPTestsMixin.test_bad_auth_namecCsbGdddt}||\}}|tjjd |dddWdn1sT0YdS)Nc@seZdZddZdS)z?NewIMAPTestsMixin.test_invalid_authentication..MyServercss$|ddV|_||dddSNrrz[AUTHENTICATIONFAILED] invalidr]rrbryrrrres zPNewIMAPTestsMixin.test_invalid_authentication..MyServer.cmd_AUTHENTICATENrrrrrrdsrz \[AUTHENTICATIONFAILED\] invalidrcSsdSrrrrrrrlrcz?NewIMAPTestsMixin.test_invalid_authentication..rrrrrtest_invalid_authenticationcs  z-NewIMAPTestsMixin.test_invalid_authenticationcCsPGdddt}||\}}|ddd\}}||d||jddS)Nc@seZdZddZdS)zCNewIMAPTestsMixin.test_valid_authentication_bytes..MyServercss&|ddV|j_||dddSrrryrrrrps  zTNewIMAPTestsMixin.test_valid_authentication_bytes..MyServer.cmd_AUTHENTICATENrrrrrrosrrcSsdSrrrrrrrurczCNewIMAPTestsMixin.test_valid_authentication_bytes..rurrIrrrrrrrrMrarrrrtest_valid_authentication_bytesns  z1NewIMAPTestsMixin.test_valid_authentication_bytescCsPGdddt}||\}}|ddd\}}||d||jddS)Nc@seZdZddZdS)zHNewIMAPTestsMixin.test_valid_authentication_plain_text..MyServercss&|ddV|j_||dddSrrryrrrr{s  zYNewIMAPTestsMixin.test_valid_authentication_plain_text..MyServer.cmd_AUTHENTICATENrrrrrrzsrrcSsdSNZfakerrrrrrrczHNewIMAPTestsMixin.test_valid_authentication_plain_text..rurrrrrr$test_valid_authentication_plain_textys  z6NewIMAPTestsMixin.test_valid_authentication_plain_textmd5ZopensslcCsNGdddt}||\}}|d|jv|dd\}}||ddS)Nc@seZdZdZddZdS)z@NewIMAPTestsMixin.test_login_cram_md5_bytes..AuthHandlerLOGINDISABLED AUTH=CRAM-MD5css:|ddV}|dkr(||ddn||dddSNz:+ PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ=s2dGltIGYxY2E2YmU0NjRiOWVmYTFjY2E2ZmZkNmNmMmQ5ZjMy ruzCRAM-MD5 successfulrz No accessr]rbrr`rsrrrrrs  zQNewIMAPTestsMixin.test_login_cram_md5_bytes..AuthHandler.cmd_AUTHENTICATENr=r>r?rwrrrrr AuthHandlersr AUTH=CRAM-MD5timtanstaaftanstaafrurIrrrwlogin_cram_md5rrrrrretrrrtest_login_cram_md5_bytess  z+NewIMAPTestsMixin.test_login_cram_md5_bytescCsNGdddt}||\}}|d|jv|dd\}}||ddS)Nc@seZdZdZddZdS)zENewIMAPTestsMixin.test_login_cram_md5_plain_text..AuthHandlerrcss:|ddV}|dkr(||ddn||dddSrrrrrrrs  zVNewIMAPTestsMixin.test_login_cram_md5_plain_text..AuthHandler.cmd_AUTHENTICATENrrrrrrsrrrtanstaaftanstaafrurrrrrtest_login_cram_md5_plain_texts  z0NewIMAPTestsMixin.test_login_cram_md5_plain_textcCsbGdddt}||\}}|tjjd |dddWdn1sT0YdS)Nc@seZdZddZdS)z?NewIMAPTestsMixin.test_aborted_authentication..MyServercss>|ddV|_|jdkr,||ddn||dddSNrs* rz[AUTHENTICATIONFAILED] abortedruzMYAUTH successfulrryrrrrs  zPNewIMAPTestsMixin.test_aborted_authentication..MyServer.cmd_AUTHENTICATENrrrrrrsrz \[AUTHENTICATIONFAILED\] abortedrcSsdSr.rrrrrrrcz?NewIMAPTestsMixin.test_aborted_authentication..rrrrrtest_aborted_authentications   z-NewIMAPTestsMixin.test_aborted_authenticationzimaplib._MAXLINE cCsbGdddt}|j|dd\}}|tjjd|j|jWdn1sT0YdS)Nc@seZdZddZdS)z:NewIMAPTestsMixin.test_linetoolong..TooLongHandlercSs|jddS)Ns* OK xxxxxxxxxxx rrrrrrtszANewIMAPTestsMixin.test_linetoolong..TooLongHandler.handleNrrrrrTooLongHandlersr Frzgot more than 10 bytes)rIrrrr6r3rr)rr rrMrrrtest_linetoolongs  z"NewIMAPTestsMixin.test_linetoolongcCsB|jtdd\}}|j|jWdn1s40YdS)NFr)rrIrr)rrrMrrrtest_simple_with_statementsz,NewIMAPTestsMixin.test_simple_with_statementcCs|t\}}|jd}|jd|dd}||jjd||jd|tj d}||jjtj || t  |jd|dd}Wdn1s0YdS)Nr localhostrr) rrIrrrsockrrrrr4 ValueError)rrrMaddrrrrrtest_imaplib_timeout_tests  z+NewIMAPTestsMixin.test_imaplib_timeout_testcCshGdddt}||\}}|jd}|tj |jd|dd}Wdn1sZ0YdS)Nc@seZdZddZdS)zQNewIMAPTestsMixin.test_imaplib_timeout_functionality_test..TimeoutHandlercSstdt|dSr)rsleeprIrtrrrrrts zXNewIMAPTestsMixin.test_imaplib_timeout_functionality_test..TimeoutHandler.handleNrrrrrTimeoutHandlersrrrgMbP?r)rIrrr4r1rr)rrrrMrrrrr'test_imaplib_timeout_functionality_tests  z9NewIMAPTestsMixin.test_imaplib_timeout_functionality_testcCsh|jtdd\}}|j|j*}|dd||jdWdn1sN0Y||jdSNFrrr)rrIrrrrrO assertIsNonerrrMimaprrrtest_with_statements  ,z%NewIMAPTestsMixin.test_with_statementcCs||jtdd\}}|j|j>}|dd||jd|||jWdn1sb0Y||jdSr) rrIrrrrrOlogoutrrrrrtest_with_statement_logouts *z,NewIMAPTestsMixin.test_with_statement_logoutcCsL|t\}}|dd\}}||d||dd||jddS)NrrrurLOGIN completedAUTH)rrIrrrrrrr test_logins  zNewIMAPTestsMixin.test_logincCs|t\}}|dd\}}||d||dd|\}}||d||f||dd||f||jddS) NrrrurrBYEsIMAP4ref1 Server logging outr)rrIrrrrrrrr test_logouts  zNewIMAPTestsMixin.test_logoutcCsVGdddt}||\}}|dd|\}}||d||dddS)Nc@seZdZddZdS)z,NewIMAPTestsMixin.test_lsub..LsubCmdcSs|d||ddS)Nz* LSUB () "." directoryAruzLSUB completedrryrrrcmd_LSUBs z5NewIMAPTestsMixin.test_lsub..LsubCmd.cmd_LSUBN)r=r>r?r$rrrrLsubCmdsr%rrrurs() "." directoryA)rIrrZlsubr)rr%rrrrrrr test_lsubs    zNewIMAPTestsMixin.test_lsubcCs||t\}}|dd|\}}||d||dd|\}}||d||dd||jddS)Nrrrur2s*Returned to authenticated state. (Success)r )rrIrselectrZunselectrrrrr test_unselects     zNewIMAPTestsMixin.test_unselect)T)"r=r>r?rrrrrrrrrrrrrrr requires_hashdigestrrr r patchr rrrrrr!r#r&r)rrrrrs< !                 rc@seZdZejZejZdS) NewIMAPTestsN) r=r>r?rr6rr TCPServerrrrrrr,sr,zSSL not availablec@s0eZdZeZeZddZddZe ddZ dS)NewIMAPSSLTestscCsttj}||jtj||jd|t| tj d8| t \}}|j |jd|i}|Wdn1s0YdS)NT=IP address mismatch, certificate is not valid for '127.0.0.1' ssl_context)rBrCPROTOCOL_TLS_CLIENTr verify_modeZ CERT_REQUIREDcheck_hostnameload_verify_locationsCAFILErCertificateErrorrrIrrrrr0rrMrrrrtest_ssl_raises&s   zNewIMAPSSLTests.test_ssl_raisescCsFttj}|t|t\}}|jd|jd|d}| dS)Nrrr0) rBrCr1r4r5rrIrrrr7rrrtest_ssl_verified4s  z!NewIMAPSSLTests.test_ssl_verifiedc Cstdtftj|jdPtj|jd |jddtdWdn1sX0YWdn1sv0YWdn1s0YdS)Nr0openZ_connectr)certfile)rZcheck_warningsDeprecationWarningr r+objectrrErrrrtest_certfile_arg_warn?sz&NewIMAPSSLTests.test_certfile_arg_warnN) r=r>r? IMAP4_SSLrr@rr8r:r r@rrrrr.!s  r.c@s2eZdZejZejZddZ ddZ e ddZ e ddZ ed d Zed d Zed dZeddZGdddeZeddZeddZeddZeddZeddZeddZedd Zed!d"Zeejd#d$d%d&d'Zed(d)Z d*d+Z!ed,d-Z"ed.d/Z#ed0d1Z$d2S)3ThreadedNetworkedTestscCsGddd|j}trtd|||}||j|jtrjtdtd|td|jtd|jtj d|j|j d d id }d |_ | trtd ||fS)Nc@seZdZddZdS)z4ThreadedNetworkedTests.make_server..MyServercSs|||dSr.rrrrrrMs zAThreadedNetworkedTests.make_server..MyServer.handle_errorNrrrrrrLsrzcreating serverzserver createdzADDR =zCLASS =zHDLR =z %s servingrrrTzserver running) rrrRrrr1 getsocknameZRequestHandlerClassrrrrr)rrhdlrrrMr,rrr make_serverJs(    z"ThreadedNetworkedTests.make_servercCs4tr td|||tr0tddS)Nzwaiting for serverdone)rrRrrr_)rrMrrrr reap_serverjsz"ThreadedNetworkedTests.reap_serverc cs@|tjdf|\}}z|VW|||n|||0dS)Nr)rErrrG)rrDrMrrrr reaped_serverssz$ThreadedNetworkedTests.reaped_serverc cs\||>}|j|j}z||fVW|n |0Wdn1sN0YdSr.)rHrrr)rrDrMrrrr reaped_pair{s    z"ThreadedNetworkedTests.reaped_paircCsB|t$}|j|j}|Wdn1s40YdSr.)rHrIrrrrrMrrrr test_connects  z#ThreadedNetworkedTests.test_connectcCsGdddt}||\}}|ddd\}}||d||jd|d|d d d \}\}|d ||d|d \}\}|d |Wdn1s0YdS)Ncs4eZdZfddZddZddZddZZS) zEThreadedNetworkedTests.test_bracket_flags..BracketFlagHandlercsgd|_tdS)N)ZAnsweredZFlaggedZDeletedZSeenZDraft)flagsrKrtrrPrrrts zLThreadedNetworkedTests.test_bracket_flags..BracketFlagHandler.handlecss&|ddV|j_||dddSrrryrrrrs  zVThreadedNetworkedTests.test_bracket_flags..BracketFlagHandler.cmd_AUTHENTICATEcSs^d|j}|d|d|d|dd|}||d||dddS) N \z * FLAGS (%s)rr|s * 0 RECENTz-* OK [PERMANENTFLAGS %s \*)] Flags permitted.rur})r_rLrZr\rb)rr`rsZflag_msgmsgrrrr~s   zPThreadedNetworkedTests.test_bracket_flags..BracketFlagHandler.cmd_SELECTcSsf|ddd}|j|dd|j}d|d|f}||d||d d dS) Nrd()z (FLAGS (%s))rMz * %s FETCH %srrruzSTORE completed.)rSrlrLextendr_rZr\rb)rr`rsZ new_flagsZ flags_msgrNrrr cmd_STOREs  zOThreadedNetworkedTests.test_bracket_flags..BracketFlagHandler.cmd_STORE)r=r>r?rtrr~rRrrrrPrBracketFlagHandlers  rSrcSsdSrrrrrrrrcz;ThreadedNetworkedTests.test_bracket_flags..rurtest1z+FLAGSz[test]s[test]ZPERMANENTFLAGS)rIrIrrrr(storer7)rrSrMrrarrrrrtest_bracket_flagss     z)ThreadedNetworkedTests.test_bracket_flagscCs\Gdddtj}||,}|jtjj|jg|jRWdn1sN0YdS)Nc@seZdZddZdS)z9ThreadedNetworkedTests.test_issue5949..EOFHandlercSs|jddSrrrrrrrtsz@ThreadedNetworkedTests.test_issue5949..EOFHandler.handleNrrrrrrsr) rrrHr4rr6rrr)rrrMrrrtest_issue5949s  z%ThreadedNetworkedTests.test_issue5949cCsZGdddt}||,}|jtjj|jg|jRWdn1sL0YdS)Nc@seZdZddZdS)zGThreadedNetworkedTests.test_line_termination..BadNewlineHandlercSs|d||dddSrrryrrrrxs zVThreadedNetworkedTests.test_line_termination..BadNewlineHandler.cmd_CAPABILITYNrrrrrrsr)rIrHr4rr6rrr)rrrMrrrrs  z,ThreadedNetworkedTests.test_line_terminationc@s eZdZdZddZddZdS)z!ThreadedNetworkedTests.UTF8ServerrcCs||dddSrrryrrrrsz,ThreadedNetworkedTests.UTF8Server.cmd_ENABLEccs&|ddV|j_||dddSrrryrrrrs  z2ThreadedNetworkedTests.UTF8Server.cmd_AUTHENTICATENrrrrrrsrcCs`||j@\}}||j|tjj|jd||jWdn1sR0YdS)Nr) rIrrrr4rr6r3rrJrrrrs z;ThreadedNetworkedTests.test_enable_raises_error_if_not_AUTHcCsXGddd|j}||(\}}|tjj|jdWdn1sJ0YdS)Nc@seZdZdZdS)zXThreadedNetworkedTests.test_enable_raises_error_if_no_capability..NoEnableServerr NrrrrrNoEnableServersrYr)rrIr4rr6r3r)rrYrMrrrrrsz@ThreadedNetworkedTests.test_enable_raises_error_if_no_capabilityc CsGdddt}|tjjd||:\}}|dd\}}||d|dWdn1sj0YWdn1s0YdS)Nc@s eZdZdS)z\ThreadedNetworkedTests.test_enable_UTF8_raises_error_if_not_supported..NonUTF8ServerNrHrrrr NonUTF8ServersrZrrrur) rIr4rr6r3rIrrr)rrZrMrrrrrrrs  zEThreadedNetworkedTests.test_enable_UTF8_raises_error_if_not_supportedc CsGddd|j}||\}}||jd|ddd\}}||d||jd|d \}}||d||jd d }|ddd|d \}}||d||jd |d Wdn1s0YdS) Nc@seZdZddZdS)zMThreadedNetworkedTests.test_enable_UTF8_True_append..UTF8AppendServercss&|ddV|j_||dddSrrryrrrrs  zXThreadedNetworkedTests.test_enable_UTF8_True_append..UTF8AppendServer.cmd_APPENDN)r=r>r?rrrrrrsrrrcSsdSrrrrrrrrczEThreadedNetworkedTests.test_enable_UTF8_True_append..rurrrrr) rrIrrrrrrr\) rrrMrrarrrrrrrrs(    z3ThreadedNetworkedTests.test_enable_UTF8_True_appendcCs||jp\}}|ddd\}}||d|d\}}||d||j|tj j |j ddWdn1s0YdS)NrcSsdSrrrrrrrrczSThreadedNetworkedTests.test_search_disallows_charset_in_utf8_mode..rurrr) rIrrrrrrr4rr6r3r)rrMrrrrrrrs   zAThreadedNetworkedTests.test_search_disallows_charset_in_utf8_modec CsGdddt}||R\}}|tjj |dddWdn1sT0YWdn1sr0YdS)Nc@seZdZddZdS)z;ThreadedNetworkedTests.test_bad_auth_name..MyServercSs||dd|ddSrrryrrrr's zLThreadedNetworkedTests.test_bad_auth_name..MyServer.cmd_AUTHENTICATENrrrrrr%srrcSsdSrrrrrrr-rcz;ThreadedNetworkedTests.test_bad_auth_name..rIrIr4rr6r3r)rrrMrrrrr"sz)ThreadedNetworkedTests.test_bad_auth_namec CsGdddt}||V\}}|tjj$|ddd\}}Wdn1sX0YWdn1sv0YdS)Nc@seZdZddZdS)zDThreadedNetworkedTests.test_invalid_authentication..MyServercss$|ddV|_||dddSrrryrrrr4s zUThreadedNetworkedTests.test_invalid_authentication..MyServer.cmd_AUTHENTICATENrrrrrr2srrcSsdSrrrrrrr;rczDThreadedNetworkedTests.test_invalid_authentication..r[rrrMrrarrrrr/sz2ThreadedNetworkedTests.test_invalid_authenticationcCsGdddt}||B\}}|ddd\}}||d||jdWdn1sb0Y||B\}}|ddd\}}||d||jdWdn1s0YdS) Nc@seZdZddZdS)zBThreadedNetworkedTests.test_valid_authentication..MyServercss&|ddV|j_||dddSrrryrrrrBs  zSThreadedNetworkedTests.test_valid_authentication..MyServer.cmd_AUTHENTICATENrrrrrr@srrcSsdSrrrrrrrHrczBThreadedNetworkedTests.test_valid_authentication..rurcSsdSrrrrrrrNrc)rIrIrrrr\rrrtest_valid_authentication=s " z0ThreadedNetworkedTests.test_valid_authenticationrTrcCsGdddt}||@\}}|d|jv|dd\}}||dWdn1s`0Y||@\}}|d|jv|dd\}}||dWdn1s0YdS)Nc@seZdZdZddZdS)z?ThreadedNetworkedTests.test_login_cram_md5..AuthHandlerrcss:|ddV}|dkr(||ddn||dddSrrrrrrr[s  zPThreadedNetworkedTests.test_login_cram_md5..AuthHandler.cmd_AUTHENTICATENrrrrrrWsrrrrrur)rIrIrrwrr)rrrMrrrrrrtest_login_cram_md5Ss*z*ThreadedNetworkedTests.test_login_cram_md5c CsGdddt}||V\}}|tjj$|ddd\}}Wdn1sX0YWdn1sv0YdS)Nc@seZdZddZdS)zDThreadedNetworkedTests.test_aborted_authentication..MyServercss>|ddV|_|jdkr,||ddn||dddSr rryrrrrus   zUThreadedNetworkedTests.test_aborted_authentication..MyServer.cmd_AUTHENTICATENrrrrrrssrrcSsdSr.rrrrrrrczDThreadedNetworkedTests.test_aborted_authentication..r[r\rrrr ps z2ThreadedNetworkedTests.test_aborted_authenticationcCsZGdddt}||,}|jtjj|jg|jRWdn1sL0YdS)Nc@seZdZddZdS)z?ThreadedNetworkedTests.test_linetoolong..TooLongHandlercSs|jdtjdddS)Ns* OK xrY)rTrUrZ_MAXLINErrrrrtszFThreadedNetworkedTests.test_linetoolong..TooLongHandler.handleNrrrrrr sr )rIrHr4rr6r3rr)rr rMrrrr s  z'ThreadedNetworkedTests.test_linetoolongc CsZ|t<}|j|jWdn1s.0YWdn1sL0YdSr.)rHrIrr)rrMrrrrs z1ThreadedNetworkedTests.test_simple_with_statementc Cs|tb}|j|j*}|dd||jdWdn1sH0Y||jWdn1sr0YdSNrr)rHrIrrrrrOrrrMrrrrrs   ,z*ThreadedNetworkedTests.test_with_statementc Cs|tv}|j|j>}|dd||jd|||jWdn1s\0Y||jWdn1s0YdSr`) rHrIrrrrrOrrrarrrrs  *z1ThreadedNetworkedTests.test_with_statement_logoutN)%r=r>r?rr-rrr6rrErGrrHrIrrKrWrXrrIrrrrrrrrr]r r*r^r r rrrrrrrrBFsZ      0                 rBc@s eZdZeZeZeddZdS)ThreadedNetworkedTestsSSLc Csttj}|t|tjdT|t*}|j |j d|i}| Wdn1s`0YWdn1s~0Y|t.}|j d|j d|d}| Wdn1s0YdS)Nr/r0rrr9) rBrCr1r4r5rr6rHrIrrr)rr0rMrrrrr:s     D z+ThreadedNetworkedTestsSSL.test_ssl_verifiedN) r=r>r?r@rrArrr:rrrrrbsrbZnetworkznetwork resource disabledz'cyrus.andrew.cmu.edu blocks connectionsc@sBeZdZdZdZdZdZejZ ddZ ddZ d d Z d d Z d S)RemoteIMAPTestzcyrus.andrew.cmu.edur<Z anonymousrcCsBt|j"||j|j|_Wdn1s40YdSr.)rtransient_internethostrportrMrrrrsetUpszRemoteIMAPTest.setUpcCsD|jdur@t|j|jWdn1s60YdSr.)rMrrdrerrrrrtearDowns zRemoteIMAPTest.tearDowncCst|jl|jjD]}||tq|d|jj|d|jj|j|j |j }| |ddWdn1s~0YdS)N LOGINDISABLEDzAUTH=ANONYMOUSrru) rrdrerMrwassertIsInstancestrr7rusernamepasswordr)rcaprsrrrtest_logincapas zRemoteIMAPTest.test_logincapacCsRt|j2|j}d|_||dd|Wdn1sD0YdSNrr")rrdrerMrrrrorrrr#s zRemoteIMAPTest.test_logoutN)r=r>r?rerfrlrmrr6rrgrhrpr#rrrrrcs rccs$eZdZfddZddZZS)RemoteIMAP_STARTTLSTestcsTtt|j*|j}||ddWdn1sF0YdS)Nrru)rKrgrrdrerMZstarttlsrrrrPrrrgs  zRemoteIMAP_STARTTLSTest.setUpcCs.|jjD]}||tq|d|jjdS)Nri)rMrwrjrk assertNotIn)rrnrrrrps z&RemoteIMAP_STARTTLSTest.test_logincapa)r=r>r?rgrprrrrPrrss rsc@sTeZdZdZeZddZddZddZdd Z d d Z d d Z ddZ ddZ dS)RemoteIMAP_SSLTesticCsdSr.rrrrrrgszRemoteIMAP_SSLTest.setUpcCsdSr.rrrrrrhszRemoteIMAP_SSLTest.tearDowncCs(ttj}d|_tj|_|t|SrJ)rBrCr1r3Z CERT_NONEr2rDrE)rr0rrrcreate_ssl_contexts   z%RemoteIMAP_SSLTest.create_ssl_contextcCspz`|jD]}||tq|d|j|d|j||j|j}||ddW| n | 0dS)Nriz AUTH=PLAINrru) rwrjrkrtr7rrlrmrr)rrMrnrorrrcheck_logincapa s z"RemoteIMAP_SSLTest.check_logincapacCsJt|j*||j|j}||Wdn1s<0YdSr.)rrdrerrfrw)r_serverrrrrpsz!RemoteIMAP_SSLTest.test_logincapacCsZt|j:||j|j}|}||dd|Wdn1sL0YdSrq)rrdrerrfrr)rrxrorrrr#szRemoteIMAP_SSLTest.test_logoutc CsPt|j0|jt|j|j|jt|dWdn1sB0YdS)N)r=r0 rrdrer4rrrfrErvrrrr#test_ssl_context_certfile_exclusives z6RemoteIMAP_SSLTest.test_ssl_context_certfile_exclusivec CsPt|j0|jt|j|j|jt|dWdn1sB0YdS)N)Zkeyfiler0ryrrrr"test_ssl_context_keyfile_exclusive%s z5RemoteIMAP_SSLTest.test_ssl_context_keyfile_exclusiveN)r=r>r?rfrArrgrhrvrwrpr#rzr{rrrrrus ru__main__)6rTrZ test.supportr contextlibrrZos.pathosrrrrr1rrrrr r Zunittestr r r rrB ImportErrorpathr_dirname__file__curdirrEr5ZTestCaserr-r@rArrIrr,Z skipUnlessr.rBrbZis_resource_enabledskiprcrsrur=mainrrrrsl        @ _O $d     4