a ze@n@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl Z ddl Z ddlZddlZGdddZGdddeZGdddee jZGd d d ee jZGd d d eZGd ddeZGdddee jZGdddee jZGdddee jZGdddee jZGdddZGdddejZGddde jZGdddee jZGdd d ee jZ Gd!d"d"Z!Gd#d$d$e!eZ"Gd%d&d&ee jZ#Gd'd(d(ee jZ$Gd)d*d*e!eZ%Gd+d,d,ee jZ&Gd-d.d.eZ'Gd/d0d0e'e jZ(Gd1d2d2e'e jZ)d3Z*d4Z+Gd5d6d6e jZ,d7Z-e-.d8Z/d9d:d:d;dd?d@dAdBdCdDdEdFdGdHZ0dIZ1GdJdKdKe jZ2dLdMZ3e4dNkre 5dS)ON)supportc@s8eZdZejejejejejej fZ ddZ ddZ dS)TestBasecCs||tjj||tjtD]\}}||||q&| | | t | t tttD]@\}}| |}||tjj||tj| | |qpdSN)assertIsInstanceemailmessageMessagemailbox_sample_headersitemsassertInZget_all assertTrue is_multipart assertEquallen get_payload_sample_payloads enumerateZassertNotIsInstance)selfmsgkeyvalueipayloadpartrE/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_mailbox.py _check_samples zTestBase._check_samplecCs2tj|rt|ntj|r.t|dSr)ospathisdirrrmtreeexistsunlink)rtargetrrr_delete_recursively&s   zTestBase._delete_recursivelyN) __name__ __module__ __qualname__r rMaildirMessage mboxMessage MHMessage BabylMessage MMDFMessageall_mailbox_typesrr%rrrrrs rc@seZdZdZdZdZddZddZddZe d Z d d Z d d Z ddZddZe ddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zdcd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Z d3d4Z!d5d6Z"d7d8Z#d9d:Z$d;d<Z%d=d>Z&d?d@Z'dAdBZ(dCdDZ)dddEdFZ*dGdHZ+dedIdJZ,dKdLZ-dfdMdNZ.dOdPZ/dgdQdRZ0dSdTZ1dUdVZ2dWdXZ3dYdZZ4d[d\Z5d]d^Z6d_d`Z7dadbZ8dS)h TestMailboxNzFrom: foo %s cCs&tj|_||j||j|_dSr)rTESTFN_pathr%_factory_boxrrrrsetUp5s zTestMailbox.setUpcCs|j||jdSr)r3closer%r1r4rrrtearDown:s zTestMailbox.tearDownc Csg}||j|jd|t|jd||jtt|t|jd||jt t|t|jd||jt t |t|jd||jt|t|jd||jt |t|jd|t.||jt t t Wdn1s40Y|t|jd||j|d|jdd D]}||j||qrdS) Nr)r8r9r:r;r<r=)appendr3add _templaterrr r_sample_messagermessage_from_stringioBytesIO_bytes_sample_message assertWarnsDeprecationWarning TextIOWrapper get_stringr)rkeysrrrrtest_add>s*  &zTestMailbox.test_addu{ From: foo Subject: Falinaptár házhozszállítással. Már rendeltél? 0 cCsF|j|jd}|t|jd||j||jddS)Nlatin-1r8)r3r@ _nonascii_msgencoderr get_bytesrrrrr"test_add_invalid_8bit_bytes_header\s  z.TestMailbox.test_add_invalid_8bit_bytes_headercCs8|jd}|j|d}||j|ddS)Nr8rMzZSubject: =?unknown-8bit?b?RmFsaW5hcHThciBo4Xpob3pzeuFsbO104XNzYWwuIE3hciByZW5kZWx06Ww/?= )rN splitlinesr3r@rOrrJ)rZsubjrrrr&test_invalid_nonascii_header_as_stringbs z2TestMailbox.test_invalid_nonascii_header_as_stringcCsb|td|j|jWdn1s00Y|j|t|jd|dSNz ASCII-onlyr) assertRaisesRegex ValueErrorr3r@rNflushrrassertMailboxEmptyr4rrr&test_add_nonascii_string_header_raisesis , z2TestMailbox.test_add_nonascii_string_header_raisescCsdd}t|tjjd||t"|jt dWdn1sN0Y| t |jd|j | dS)Nc_s tddS)Nz a fake error) Exception)argskwrrrraiserqszETestMailbox.test_add_that_raises_leaves_mailbox_empty..raiserZflattenuFrom: Alphösor)rZpatchr generatorZBytesGenerator assertRaisesr[r3r@rCrrr6rY)rr^rrr)test_add_that_raises_leaves_mailbox_emptyps 0 z5TestMailbox.test_add_that_raises_leaves_mailbox_emptyu0 From: foo@bar.com To: báz Subject: Maintenant je vous présente mon collègue, le pouf célèbre Jean de Baddie Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Да, они летят. zutf-8c Cs|j|j}||j||j|j|0}|||jdtj Wdn1sf0Y||j| ddS)N uДа, они летят. ) r3r@_non_latin_bin_msgrrPget_filereadreplacerlineseprOrrrfrrrtest_add_8bit_bodys "zTestMailbox.test_add_8bit_bodycCsntd0}|t|d|j|}Wdn1s@0Y||j| dt ddSNwb+rrb) tempfile TemporaryFilewriterFseekr3r@rrPsplitrrirrrrtest_add_binary_files   *z TestMailbox.test_add_binary_filecCsrtd2}||j|d|j|}Wdn1sB0Y||j| d|j ddSrk) rmrnrorcrpr3r@rrPrqrrrrrtest_add_binary_nonascii_files   * z)TestMailbox.test_add_binary_nonascii_filec CstdZ}|t|d|t|j|}Wdn1sL0YWdn1sj0Y| |j | dt ddS)Nw+rrb) rmrnrorBrprGrHr3r@rrPrqrFrrrrrtest_add_text_file_warnss    Hz$TestMailbox.test_add_text_file_warnscCs`|t(|jt|jd}Wdn1s80Y||j||jddS)N0) rGrHr3r@rDStringIOrArrJrQrrrtest_add_StringIO_warnss 6z#TestMailbox.test_add_StringIO_warnsc Cs|tP|td$|jt|jWdn1sB0YWdn1s`0Y| t |jd|j | dSrU) rGrHrVrWr3r@rDrxrNrrr6rYr4rrr!test_add_nonascii_StringIO_raisess  P z-TestMailbox.test_add_nonascii_StringIO_raisescCs||jjdSr)_test_remove_or_delitemr3remover4rrr test_removeszTestMailbox.test_removecCs||jjdSr)r{r3 __delitem__r4rrr test_delitemszTestMailbox.test_delitemcsdjjdjjdtjdtjdtfddtfddjjdjjdtjdtjdtfddtfddjjdtjdtfd dtfd ddS) Nrr8r9cs jSrr3rkey0rrrz5TestMailbox._test_remove_or_delitem..csSrrr)rmethodrrrrcs jSrrr)key2rrrrrcsSrrr)rrrrrrcs jSrrr)key1rrrrrcsSrrr)rrrrrr)r3r@rArrr`KeyErrorrJ)rrr)rrrrrrr{s&z#TestMailbox._test_remove_or_delitem csjjdjjd}tjdjtjdtfddjtjdtfdddS)Nrr8r9cs jSrrrrrrrrz*TestMailbox.test_discard..cs jSrrrrrrrr)r3r@rArrdiscardr`r)r repetitionsrrrr test_discards  zTestMailbox.test_discardcCs|j|jd}|j|}||dd||d||jd||jddd|j| |j |_|j|jd}|j|}||dd||ddS)Nrfromfoo0 Fr81 ) r3r@rAgetrr assertIsNoneassertIsr6r2r1)rrrrrrrtest_gets   zTestMailbox.test_getcsvjjdj}|dd|dtfddjtfdddS)Nrrrrcs jdSNrrrr4rrrrz*TestMailbox.test_getitem..cs jSrrrrrrrr)r3r@rArrr`rrrrrrr test_getitems  zTestMailbox.test_getitemcCsn|j|jd}|jt}|j|}||tj||dd|| d| |j|dS)Nrrrr) r3r@rArB get_messagerr rrrr)rrrmsg0rrrtest_get_messages  zTestMailbox.test_get_messagecCsV|j|jd}|jt}||j||jdd||j|tdS)Nrasciir3r@rArBrrPrOrFrrrrrrtest_get_bytess  zTestMailbox.test_get_bytescCs\|j|jd}|jt}||j||jd||j|dtddS)Nr r3r@rArBrrJrqrrrrtest_get_string s  zTestMailbox.test_get_stringcCs|j|jd}|jt}|j|}|}Wdn1sH0Y|j|}|}Wdn1s|0Y||dt j d|jd||dt j dtdS)Nrrr) r3r@rArBrdrerdecoderfrrg)rrrfileZdata0Zdata1rrr test_get_files &&zTestMailbox.test_get_filecCs,|jt}|j|}||dSr)r3r@rBrdr6rhrrr!test_get_file_can_be_closed_twice!s  z-TestMailbox.test_get_file_can_be_closed_twicecCs|j|jjddddSNTFdo_keys do_values)_check_iterationr3iterkeysr4rrr test_iterkeys(szTestMailbox.test_iterkeyscCs|j|jjddddSr)rr3rKr4rrr test_keys,szTestMailbox.test_keyscCs|j|jjddddSNFTr)rr3 itervaluesr4rrrtest_itervalues0s zTestMailbox.test_itervaluescCs|j|jjddddSr)rr3__iter__r4rrr test_iter5s zTestMailbox.test_itercCs|j|jjddddSr)rr3valuesr4rrr test_values:szTestMailbox.test_valuescCs|j|jjddddSNTr)rr3 iteritemsr4rrrtest_iteritems>s zTestMailbox.test_iteritemscCs|j|jjddddSr)rr3r r4rrr test_itemsCszTestMailbox.test_itemsc Cs,|D]}|dqgg}}t|D],}||j|j|||j|q(|rj|sjt|} nB|r~|s~t|} n.gg} } |D]\} }| | | |q|r|t|t| |t |t | |r(d} | D]0}||dd| t | || d7} q|t|| dS)Nz Not emptyrrrr8) Zfailranger?r3r@rAlistrrset assertLessintr) rrrrrrrKrrZ returned_keysZreturned_valuesrcountrrrrGs0          zTestMailbox._check_iterationcCs|d|j|j|jd}|||j|d|j|j|jd}|||j|||j|d|j|j||||j|||j|d|j|j||||j|||j|d|jdS)Nrrr8) assertNotInr3r@rAr r|rrrr test_containsbs   zTestMailbox.test_containscCsg}t|D]D}|t|j|||j|j||t|j|dq t|D]D}|t|j|||j|||t|j||dqZdS)Nr8)rrrr3r?r@rAr|)rrrKrrrrtest_lenus  zTestMailbox.test_lencs^jjd}j|jdjjd}j|jdjdj|<j|jdjdj|<j|jdtj|<j|j|j|<j|jdj|<j|jdj|tfddtfddt jddS) N original 0 original 1 changed 0 changed 1csjddS)Nrbar)r3 __setitem__rr4rrrrz+TestMailbox.test_set_item..cs jdSrrrr4rrrrr9) r3r@rArrJrBrr`rrrrr4r test_set_items<  zTestMailbox.test_set_itemcsg}t|D]}jj|q t|D]"\}jj|q,jtjdt|D]\} t fddqtdS)Nrcs jSr)r3rJrrrrrrrz(TestMailbox.test_clear..) rr3r@rArrrJclearrr`r)r iterationsrKrrrr test_clears  zTestMailbox.test_clearcCs|j|jd}|||j|j|jd}|||j||j|d|||j|||j|j|jd}|||j||j|d|||j|||j||j|d|||j|t|jddS)Nrr8rr9z2 r) r3r@rAr rpoprrrrrrrrrrtest_popszTestMailbox.test_popcsg}tdD]}|jj|q g}tdD]N}j\}|||t | | q6t jd|D] tfddqdS)Nrrcs jSrrrrrrrrz*TestMailbox.test_popitem..)rr?r3r@rApopitemr rrrrindexrr`r)rrrKrseenrrrr test_popitems     zTestMailbox.test_popitemcsjjdjjd}jjd}jjd|titjdjjdj|jdj|j|jdf|jdfjdfgtjdjjdj|jdj|jd t fdd tjdjjdj|jdj|jddS) Nrrz original 2rr:z changed 2rcsjddjdiS)Nrrr)r3updaterArrrrrs  z)TestMailbox.test_update..) r3r@rArrBrrrJrr`r)rrrrrr test_updatesR   zTestMailbox.test_updatecCs||jjddSNT)_test_flush_or_closer3rXr4rrr test_flushszTestMailbox.test_flushcCsZ|j|jd|j|jd|j|j|j|j|jdSNrr8)r3r@rArXrr4rrrtest_popitem_and_flush_twices    z(TestMailbox.test_popitem_and_flush_twicecCsZ|tj||j|tj||j|tj|dSr) assertFalserrr"_get_lock_pathr3lockr unlockr4rrrtest_lock_unlocks   zTestMailbox.test_lock_unlockcCs||jjddSNF)rr3r6r4rrr test_closeszTestMailbox.test_closecsfddtdD}j|dj|dj|dj}||r`jj_j}t|d|D]} j ||q|dS)Ncsg|]}j|qSrrA.0rr4rr rz4TestMailbox._test_flush_or_close..r:rr8r9) rr3r@r6r2r1rKrrr rJ)rrZshould_call_closecontentsZoldboxrKrrr4rrs  z TestMailbox._test_flush_or_closec srtttttfD]8}tj| t dt j qttfdddS)NrbcsjdSr)r3 _dump_messageroutputrrrr!rz/TestMailbox.test_dump_message..)rrCrBrDrErFr3rrgetvaluerfrrgrOr` TypeError)rinputrrrtest_dump_messages   zTestMailbox.test_dump_messagecCs |jdS)Nz.lock)r1r4rrrr#szTestMailbox._get_lock_path)r)r)r)r)r)9r&r'r(ZmaxDiffr2rAr5r7rLtextwrapdedentrNrRrTrZrarOrcrjrsrtrvryrzr}rr{rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr/.sj             "  r/c@seZdZddZdS)TestMailboxSuperclasscsRtd|tfdd|tfdd|tfdd|tfdd|tfdd|tfdd|tfd d|tfd d|tfd d|tfd d|tfd d|tfdd|tfdd|tfdd|tfdd|tfdd|tfdd|tfdd|tfdd|tfdd|tfdd|tfdd|tfdd|tfdd|tfdd|tfdd|tfdd|tfdd|tfdddS) Nrcs dSN)r@rboxrrr-rz;TestMailboxSuperclass.test_notimplemented..cs dSr)r|rrrrr.rcs dSr)r~rrrrr/rcs dSr)rrrrrr0rcs ddSr)rrrrrr1rcsSr)rrrrrr2rcsSr)rKrrrrr3rcs Sr)r__next__rrrrr4rcs Sr)rrrrrrr5rcsSr)rrrrrr6rcs Sr)rrrrrrr7rcsSr)r rrrrr8rcs dSr)rrrrrr9rcs dSr) __getitem__rrrrr:rcs dSr)rrrrrr;rcs dSr)rJrrrrr<rcs dSr)rPrrrrr=rcs dSr)rdrrrrr>rcsdvSrrrrrrr?rcs dSr) __contains__rrrrr@rcsSr)__len__rrrrrArcsSr)rrrrrrBrcs dSr)rrrrrrCrcsSr)rrrrrrDrcs dS)N))rr)rrrrrrErcsSr)rXrrrrrFrcsSr)rrrrrrGrcsSr)rrrrrrHrcsSr)r6rrrrrIr)r Mailboxr`NotImplementedErrorr4rrrtest_notimplemented*s< z)TestMailboxSuperclass.test_notimplementedN)r&r'r(rrrrrr(src@seZdZd5ddZddZddZdd Zd d Zd d ZddZ ddZ ddZ d6ddZ ddZ ddZddZddZd7dd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zeeed-d.d/d0Zeeed-d.d1d2Zd3d4ZdS)8 TestMaildirNcCs t||Sr)r MaildirrrfactoryrrrrNrzTestMaildir.cCs*t|tjdkstjdkr&d|j_dS)Nntcygwin!)r/r5rnamesysplatformr3colonr4rrrr5Ps zTestMaildir.setUpcCs"|ttj|jdgdSNtmp)rrlistdirrjoinr1r4rrrrYUszTestMaildir.assertMailboxEmptyc Cs`t|jd}|d|d|j|}|tj tj |j dd||jj fdS)Nrcurrz%s%sfoo)r r)rA set_subdirset_infor3r@r rrr"r r1r)rrrrrr test_add_MMXs    zTestMaildir.test_add_MMcCsnt|jd}|d|d|j|}|j|}||tj| | d| | ddS)Nrr RFFR) r r)rAr  set_flagsr3r@rrr get_subdir get_flags)rrr msg_returnedrrr test_get_MMas    zTestMaildir.test_get_MMcCst|jd}|d|j|}|j|}||d|| dt|jd}||j|<|j|}||d|| d|| dt|jd}| d ||j|<|jd |j|<|j|}||d|| d || d dS) NrZTPnewZPTr8rrr9z2,Sr:Sz3 ) r r)rArr3r@rrrrrr )rrrrmsg1msg2rrr test_set_MMls(        zTestMaildir.test_set_MMcCsvt|jd}|d|d|j|}Gdddtj}tj|j|d}|jj |_ | |}| ||dS)Nrr rc@s eZdZdS)z8TestMaildir.test_consistent_factory..FakeMessageN)r&r'r(rrrr FakeMessagesrr) r r)rAr rr3r@rr1rrr)rrrrrrrrrtest_consistent_factorys     z#TestMaildir.test_consistent_factorycCsH|t|j|_|||j|j|jdd|_|dS)Nr)r7r rr1r3 _check_basicsr%r2r4rrrtest_initialize_news  zTestMaildir.test_initialize_newc CsJ|dD]"}ttjtj|j|q t|j|_ | dS)Nrrrr ) r7rmkdirrnormpathr r1r rr3r)rsubdirrrrtest_initialize_existings  z$TestMaildir.test_initialize_existingcCsn||jjtj|j||jj|dD]:}tj|j|}t|tj }| t |d|q.dS)Nr zNot a directory: '%s') rr3r1rrabspathr2r statST_MODEr S_ISDIR)rrr#rmoderrrrs zTestMaildir._check_basicscCsX|jd|jd|jd|t|jd|t|jtddSNonetwothreer:)r+r,r-r3 add_folderrr list_foldersrr4rrrtest_list_folderss   zTestMaildir.test_list_folderscCsv|jd|jd}||jd|tjtj |j d|jd}| | | d|jddS)Nfoo.barrz.foo.barr)r3r/ get_folderr@rAr rrr r r1rrJrK)rfolder0folder1rrrtest_get_folders   zTestMaildir.test_get_foldercCs4|jd|jd|t|jd|t|jtd|jd|t|jd|t|jtd|jd|t|jd|t|jtd|jd|t|jd|t|jtd|jd|t|jd ||jgdS Nr+r,r9)r+r,r8)r,r-)r,r-rr3r/rrr0rZ remove_folderr4rrrtest_add_and_remove_folderss       z'TestMaildir.test_add_and_remove_folderscCstj|jdd}tj|jdd}t|d}|dWdn1sN0Yt|d}|dWdn1s0Y|j|tj ||tj |t |}t |t dd|j f|j|tj ||tj |dS)Nrrrw@i@r9)rrr r1openror3Zcleanr r"r&utimetimest_mtimer)rZfoo_pathZbar_pathriZfoo_statrrr test_cleans  ( (   zTestMaildir.test_cleanrc Cst}d|vr|dd}d|vr0|dd}t}td}d}t|D]}|j }tj |j \}} | |tj tj |jdd||| } || d| | } |dur|t| d t|d d |d | d ft| d t|d kr8|t| d t|d d |d | d f| t| d |d| d |f| t| dt|dd d|d| df| | d|d| d|f| }|t|d | |t|qNtttj |jd} | | |d| |fdS)N/z\057:z\072zF(?P