a 8êdgm‡ã@s„ddlZddlmZmZddlZddlmZddlmZddl m Z m Z eGdd„deƒƒZ eGdd „d eƒƒZ ed kr€e ¡dS) éN)Ú TestEmailBaseÚ parameterize)Úpolicy)Ú EmailMessage)ÚContentManagerÚraw_data_managerc @sÌeZdZejZeZddddœZdd„Zdd„Z d d „Z Gd d „d e ƒZ ed dZ Gdd„de ƒZed dZdefdefddde fde fddde fddddœ Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)S)*ÚTestContentManager)éú text/plain)éÚtext)éÚ)Z full_typeZ maintype_onlyÚnull_keycCsNd dd„}tƒ}| ||¡| ¡}d|d<d|d<| |j|ddd ¡dS) NcSs|d}||fS©Nú X-Bar-Header©)ÚmsgÚfooÚbarrrú?/usr/local/lib/python3.9/test/test_email/test_contentmanager.pyÚ foo_getterszATestContentManager.get_key_as_get_content_key..foo_getterr ú Content-Typerrr©r)rr)N)rÚadd_get_handlerÚ _make_messageÚ assertEqualÚ get_content)ÚselfÚorderÚkeyrÚcmÚmrrrÚget_key_as_get_content_keys  z-TestContentManager.get_key_as_get_content_keycCs€dd„}dd„}tƒ}| ||¡|j ¡D]\}}||kr,| ||¡q,| ¡}d|d<d|d<d |d <| | |¡d ¡dS) NcSs|dSrr©rrrrÚ bar_getter!szGTestContentManager.get_key_as_get_content_key_order..bar_gettercSs|dS©Nú X-Foo-Headerrr$rrrr#szGTestContentManager.get_key_as_get_content_key_order..foo_getterr rrrrr')rrÚget_key_paramsÚvaluesrrr)rrr r%rr!Ú precedencer"rrrÚ get_key_as_get_content_key_order s z3TestContentManager.get_key_as_get_content_key_ordercCsPtƒ}| ¡}d|d<| td¡| |¡Wdƒn1sB0YdS)Nr r)rrÚassertRaisesRegexÚKeyErrorr©rr!r"rrrÚ:test_get_content_raises_if_unknown_mimetype_and_no_default0s zMTestContentManager.test_get_content_raises_if_unknown_mimetype_and_no_defaultc@s eZdZdS)úTestContentManager.BaseThingN©Ú__name__Ú __module__Ú __qualname__rrrrÚ BaseThing7sr5Ú.r0c@s eZdZdS)úTestContentManager.ThingNr1rrrrÚThing:sr8r7rr )r r7)r r8éé)ér0)ér5é)é z builtins.str)é Ústr)é N) ÚtypeÚ full_pathÚqualnameÚnameZ base_typeZbase_full_pathZ base_qualnameÚ base_nameZstr_typeZ str_full_pathZstr_namercCs`ddd„}tƒ}| ||¡| ¡}| ¡}|j||dd| |dd¡| | ¡|¡dS)NcSs||d<| |¡dSr&©Ú set_payload)rÚobjrrrrÚ foo_setterNszATestContentManager.set_key_as_set_content_key..foo_setterrrr')N)rÚadd_set_handlerrr8Ú set_contentrÚ get_payload)rrr rJr!r"Úmsg_objrrrÚset_key_as_set_content_keyMs  z-TestContentManager.set_key_as_set_content_keyc CsŠdd„}dd„}tƒ}| ||¡|j ¡D]\}}||kr,| ||¡q,| ¡}| ¡}| ||¡| |dd¡| | ¡|¡dS)NcSsd|d<| |¡dS)NrúX-FooBar-HeaderrG©rrIrrrrJZszGTestContentManager.set_key_as_set_content_key_order..foo_settercSs d|d<dS)NrrPrrQrrrÚ bar_setter]szGTestContentManager.set_key_as_set_content_key_order..bar_setterrPr) rrKr(r)rr8rLrrM) rrr rJrRr!r*r"rNrrrÚ set_key_as_set_content_key_orderYs  z3TestContentManager.set_key_as_set_content_key_ordercCsTtƒ}| ¡}| ¡}| t|j¡| ||¡Wdƒn1sF0YdS©N)rrr8r,r-Útestobject_full_pathrL)rr!r"rNrrrÚ6test_set_content_raises_if_unknown_type_and_no_defaultjs zITestContentManager.test_set_content_raises_if_unknown_type_and_no_defaultcCsPtƒ}| ¡}d|d<| t¡| |d¡Wdƒn1sB0YdS)Nz multipart/foorÚtest)rrÚ assertRaisesÚ TypeErrorrLr.rrrÚ.test_set_content_raises_if_called_on_multipartqs  zATestContentManager.test_set_content_raises_if_called_on_multipartcCsŒ| ¡}d|d<d|d<d|d<| d¡tƒ}| tdd „¡|jd |d | |d¡| |d¡| |dd¡| | ¡¡dS) Nrz Content-Fooz text/htmlrrWÚToÚabcc_sdSrTr)ÚargsÚkwrrrÚózITestContentManager.test_set_content_calls_clear_content..Úxyz)Úcontent_manager) rrHrrKr@rLZ assertIsNonerrM)rr"r!rrrÚ$test_set_content_calls_clear_contentxs z7TestContentManager.test_set_content_calls_clear_contentN)r2r3r4rÚdefaultrÚmessager(r#r+r/r@r5Zbaseobject_full_pathr8rUZset_key_paramsrOrSrVrZrcrrrrr s>ý   ô rc@sæeZdZejjdedZeZdd„Z dd„Z dd„Z d d „Z d d „Z d d„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Z d3d4„Z!d5d6„Z"d7d8„Z#d9d:„Z$d;d<„Z%d=d>„Z&d?d@„Z'dAdB„Z(dCdD„Z)dEdF„Z*dGdH„Z+dIdJ„Z,dKdL„Z-dMdN„Z.dOdP„Z/dQdR„Z0dSdT„Z1dUdV„Z2dWdX„Z3dYdZ„Z4d[d\„Z5d]d^„Z6d_d`„Z7dadb„Z8dcdddedfeƒdgfeƒdhfdiœZ9djdk„Z:dldm„Z;dndo„ZdtS)uÚTestRawDataManageré<)Úmax_line_lengthrbcCs&| t d¡¡}| t |¡d¡dS)NúJ Content-Type: text/plain Basic text. z Basic text. ©Ú_str_msgÚtextwrapÚdedentrrr©rr"rrrÚtest_get_text_plain”sz&TestRawDataManager.test_get_text_plaincCs&| t d¡¡}| t |¡d¡dS)NzP Content-Type: text/html

Basic text.

z

Basic text.

rjrnrrrÚtest_get_text_htmlœs ÿz%TestRawDataManager.test_get_text_htmlcCs,| t d¡ d¡¡}| t |¡d¡dS)Nu\ Content-Type: text/plain; charset=latin1 Basìc tëxt. Úlatin1õBasìc tëxt. )Z _bytes_msgrlrmÚencoderrrrnrrrÚtest_get_text_plain_latin1¥süz-TestRawDataManager.test_get_text_plain_latin1cCs&| t d¡¡}| t |¡d¡dS)Nz™ Content-Type: text/plain; charset="latin-1" Content-Transfer-Encoding: quoted-printable Bas=ECc t=EBxt. rrrjrnrrrÚ+test_get_text_plain_latin1_quoted_printable­sz>TestRawDataManager.test_get_text_plain_latin1_quoted_printablecCs&| t d¡¡}| t |¡d¡dS)Nz‘ Content-Type: text/plain; charset="utf8" Content-Transfer-Encoding: base64 QmFzw6xjIHTDq3h0Lgo= rrrjrnrrrÚtest_get_text_plain_utf8_base64¶sz2TestRawDataManager.test_get_text_plain_utf8_base64cCs&| t d¡¡}| t |¡d¡dS)NúŸ Content-Type: text/plain; charset="utf8" Content-Transfer-Encoding: quoted-printable Bas=c3=acc t=c3=abxt=fd. uBasìc tëxt�. rjrnrrrÚ-test_get_text_plain_bad_utf8_quoted_printable¿sz@TestRawDataManager.test_get_text_plain_bad_utf8_quoted_printablecCs*| t d¡¡}| tj|ddd¡dS)NrwÚignore©ÚerrorsrrrjrnrrrÚ;test_get_text_plain_bad_utf8_quoted_printable_ignore_errorsÈsÿzNTestRawDataManager.test_get_text_plain_bad_utf8_quoted_printable_ignore_errorscCs*| t d¡¡}| tj|ddd¡dS)Nu“ Content-Type: text/plain; charset="utf8" Content-Transfer-Encoding: base64 QmFzw6xjIHTDq3h0Lgoÿ= ryrzrrrjrnrrrÚ8test_get_text_plain_utf8_base64_recoverable_bad_CTE_dataÒsÿzKTestRawDataManager.test_get_text_plain_utf8_base64_recoverable_bad_CTE_datacCsL| t d¡¡}| t¡tj|ddWdƒn1s>0YdS)Nriryr©rkrlrmrXrYrrrnrrrÚtest_get_text_invalid_keywordÜs z0TestRawDataManager.test_get_text_invalid_keywordc Csnt d¡}d ¡D]V}|j|d6| | |d¡¡}| t |¡d¡Wdƒq1s^0YqdS)Nzu Content-Type: {} Content-Transfer-Encoding: base64 Ym9ndXMgZGF0YQ== zaudio image video application)Úmaintypez/foos bogus data) rlrmÚsplitÚsubTestrkÚformatrrr)rÚtemplater€r"rrrÚtest_get_non_textås   z$TestRawDataManager.test_get_non_textcCsL| t d¡¡}| t¡tj|ddWdƒn1s>0YdS)Nz| Content-Type: image/jpg Content-Transfer-Encoding: base64 Ym9ndXMgZGF0YQ== ryrzr~rnrrrÚ!test_get_non_text_invalid_keywordñs z4TestRawDataManager.test_get_non_text_invalid_keywordcCsH| t d¡¡}| t¡t |¡Wdƒn1s:0YdS)Nzm Content-Type: multipart/mixed; boundary="===" --=== --===-- )rkrlrmrXr-rrrnrrrÚtest_get_raises_on_multipartûs z/TestRawDataManager.test_get_raises_on_multipartc Csªt d¡}d ¡D]’}|j|dr| | |¡¡}t |¡}| ||j ¡|  t |¡d¡|  |dd¡|  |dj dj d ¡Wdƒq1sš0YqdS) Nz± Content-Type: message/{} To: foo@example.com From: bar@example.com Subject: example an example message úrfc822 external-body©Úsubtypezan example message Útoúfoo@example.comÚfromrr) rlrmrr‚rkrƒrrÚassertIsInstancererZ addressesÚusername)rr„rŠr"Zsub_msgrrrÚ)test_get_message_rfc822_and_external_bodys   ÿzSimple message.

Úhtmlr‰z‘ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: 7bit

Simple message.

Tr“r•r–r—rrrÚtest_set_text_html?s z%TestRawDataManager.test_set_text_htmlcCs`| ¡}d}tj||dd| t|ƒt d¡¡| |jdd d¡|¡| |  ¡|¡dS)Nr’úlatin-1©Úcharsetz Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Simple message. Tr“r•r–r—rrrÚtest_set_text_charset_latin_1Ls z0TestRawDataManager.test_set_text_charset_latin_1cCs\| ¡}d}t ||¡| t|ƒt d¡¡| |jdd d¡|¡| |  ¡|¡dS)NzTSimple but long message that is over 78 characters long to force transfer encoding. zé Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Simple but long message that is over 78 characters long to = force transfer encoding. Tr“r•r–r—rrrÚ(test_set_text_plain_long_line_heuristicsYs  z;TestRawDataManager.test_set_text_plain_long_line_heuristicscCsb| ¡}d}t ||¡| t|ƒt d¡ d¡¡| |jdd  d¡|¡| |  ¡|¡dS)Nu7et là il est monté sur moi et il commence à m'éto. u² Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit et là il est monté sur moi et il commence à m'éto. r•Tr“© rrrLrÚbytesrlrmrsrMr”rr—rrrÚ5test_set_text_short_line_minimal_non_ascii_heuristicshs ûzHTestRawDataManager.test_set_text_short_line_minimal_non_ascii_heuristicscCsb| ¡}d}t ||¡| t|ƒt d¡ d¡¡| |jdd  d¡|¡| |  ¡|¡dS)Nusj'ai un problème de python. il est sorti de son vivarium. et là il est monté sur moi et il commence à m'éto. a* Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable j'ai un probl=C3=A8me de python. il est sorti de son vivari= um. et l=C3=A0 il est mont=C3=A9 sur moi et il commence = =C3=A0 m'=C3=A9to. r•Tr“r£r—rrrÚ4test_set_text_long_line_minimal_non_ascii_heuristicsus ùzGTestRawDataManager.test_set_text_long_line_minimal_non_ascii_heuristicscCsb| ¡}d}t ||¡| t|ƒt d¡ d¡¡| |jdd  d¡|¡| |  ¡|¡dS)Nu} j'ai un problème de python. il est sorti de son vivarium. et là il est monté sur moi et il commence à m'éto. a@ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable j'ai un probl=C3=A8me de python. il est sorti de son vivari= um. et l=C3=A0 il est mont=C3=A9 sur moi et il commence = =C3=A0 m'=C3=A9to. r•Tr“r£r—rrrÚ=test_set_text_11_lines_long_line_minimal_non_ascii_heuristics†s ùzPTestRawDataManager.test_set_text_11_lines_long_line_minimal_non_ascii_heuristicscCsb| ¡}d}t ||¡| t|ƒt d¡ d¡¡| |jdd  d¡|¡| |  ¡|¡dS)Nõáàäéèęöő. u Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit áàäéèęöő. r•Tr“r£r—rrrÚ*test_set_text_maximal_non_ascii_heuristics˜s ûz=TestRawDataManager.test_set_text_maximal_non_ascii_heuristicscCsb| ¡}d}t ||¡| t|ƒt d¡ d¡¡| |jdd  d¡|¡| |  ¡|¡dS)Nu áàäéèęöő. u£ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit áàäéèęöő. r•Tr“r£r—rrrÚ3test_set_text_11_lines_maximal_non_ascii_heuristics¥s ûzFTestRawDataManager.test_set_text_11_lines_maximal_non_ascii_heuristicscCsb| ¡}d}t ||¡| t|ƒt d¡ d¡¡| |jdd  d¡|¡| |  ¡|¡dS)NuÂáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöő. a¶ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 w6HDoMOkw6nDqMSZw7bFkcOhw6DDpMOpw6jEmcO2xZHDocOgw6TDqcOoxJnD tsWRw6HDoMOkw6nDqMSZw7bFkcOhw6DDpMOpw6jEmcO2xZHDocOgw6TDqcOo xJnDtsWRw6HDoMOkw6nDqMSZw7bFkcOhw6DDpMOpw6jEmcO2xZHDocOgw6TD qcOoxJnDtsWRw6HDoMOkw6nDqMSZw7bFkcOhw6DDpMOpw6jEmcO2xZHDocOg w6TDqcOoxJnDtsWRLgo= r•Tr“r£r—rrrÚ4test_set_text_long_line_maximal_non_ascii_heuristics²s  ÷ zGTestRawDataManager.test_set_text_long_line_maximal_non_ascii_heuristicscCsb| ¡}d}t |d¡| t|ƒt d¡ d¡¡| |jdd  d¡|¡| |  ¡|¡dS)NuÌ Ã¡Ã Ã¤Ã©Ã¨Ä™Ã¶Å‘Ã¡Ã Ã¤Ã©Ã¨Ä™Ã¶Å‘Ã¡Ã Ã¤Ã©Ã¨Ä™Ã¶Å‘Ã¡Ã Ã¤Ã©Ã¨Ä™Ã¶Å‘Ã¡Ã Ã¤Ã©Ã¨Ä™Ã¶Å‘Ã¡Ã Ã¤Ã©Ã¨Ä™Ã¶Å‘Ã¡Ã Ã¤Ã©Ã¨Ä™Ã¶Å‘Ã¡Ã Ã¤Ã©Ã¨Ä™Ã¶Å‘Ã¡Ã Ã¤Ã©Ã¨Ä™Ã¶Å‘Ã¡Ã Ã¤Ã©Ã¨Ä™Ã¶Å‘Ã¡Ã Ã¤Ã©Ã¨Ä™Ã¶Å‘Ã¡Ã Ã¤Ã©Ã¨Ä™Ã¶Å‘. ak Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable =C3=A1=C3=A0=C3=A4=C3=A9=C3=A8=C4=99=C3=B6=C5=91=C3=A1=C3= =A0=C3=A4=C3=A9=C3=A8=C4=99=C3=B6=C5=91=C3=A1=C3=A0=C3=A4= =C3=A9=C3=A8=C4=99=C3=B6=C5=91=C3=A1=C3=A0=C3=A4=C3=A9=C3= =A8=C4=99=C3=B6=C5=91=C3=A1=C3=A0=C3=A4=C3=A9=C3=A8=C4=99= =C3=B6=C5=91=C3=A1=C3=A0=C3=A4=C3=A9=C3=A8=C4=99=C3=B6=C5= =91=C3=A1=C3=A0=C3=A4=C3=A9=C3=A8=C4=99=C3=B6=C5=91=C3=A1= =C3=A0=C3=A4=C3=A9=C3=A8=C4=99=C3=B6=C5=91=C3=A1=C3=A0=C3= =A4=C3=A9=C3=A8=C4=99=C3=B6=C5=91=C3=A1=C3=A0=C3=A4=C3=A9= =C3=A8=C4=99=C3=B6=C5=91=C3=A1=C3=A0=C3=A4=C3=A9=C3=A8=C4= =99=C3=B6=C5=91=C3=A1=C3=A0=C3=A4=C3=A9=C3=A8=C4=99=C3=B6= =C5=91. r•Tr“r£r—rrrÚ=test_set_text_11_lines_long_line_maximal_non_ascii_heuristicsÅs ñzPTestRawDataManager.test_set_text_11_lines_long_line_maximal_non_ascii_heuristicscCsF| ¡}| t¡ tj|dddWdƒn1s80YdS)Nr¨Ú7bit©Úcte©rrXÚ UnicodeErrorrrLrnrrrÚ,test_set_text_non_ascii_with_cte_7bit_raisesäs z?TestRawDataManager.test_set_text_non_ascii_with_cte_7bit_raisescCsF| ¡}| t¡ tj|dddWdƒn1s80YdS)Nr¨ÚasciirŸr°rnrrrÚ1test_set_text_non_ascii_with_charset_ascii_raisesés zDTestRawDataManager.test_set_text_non_ascii_with_charset_ascii_raisescCsH| ¡}| t¡"tj|ddddWdƒn1s:0YdS)Nr¨r­r³)r¯r r°rnrrrÚ>test_set_text_non_ascii_with_cte_7bit_and_charset_ascii_raisesîs zQTestRawDataManager.test_set_text_non_ascii_with_cte_7bit_and_charset_ascii_raisescCs¶| ¡}d|d<| ¡}d|d<d|d<d|d<| d¡t ||¡| t|ƒt d ¡¡| d ¡}| ||j ¡| t|ƒt|ƒ¡| |  ¡|j ¡| t|  ¡ƒt|ƒ¡dS) NzForwarded messageÚSubjectzpython@vivarium.orgr[úpolice@monty.orgÚFromzget back in your boxzOr face the comfy chair.a  Subject: Forwarded message Content-Type: message/rfc822 Content-Transfer-Encoding: 8bit To: python@vivarium.org From: police@monty.org Subject: get back in your box Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit MIME-Version: 1.0 Or face the comfy chair. r) rrLrrr@rlrmrMrŽrer)rr"r˜ÚpayloadrrrÚtest_set_messageós   z#TestRawDataManager.test_set_messagecCs®| ¡}d|d<| ¡}d|d<d|d<d|d<| d¡t ||¡| t|ƒt d ¡ d ¡¡| |j|j j d t d ¡¡|  |  ¡|j ¡| t|  ¡ƒt|ƒ¡dS) Nz Escape reportr¶r·r[zvictim@monty.orgr¸ZHelpu:j'ai un problème de python. il est sorti de son vivarium.u« Subject: Escape report Content-Type: message/rfc822 Content-Transfer-Encoding: 8bit To: police@monty.org From: victim@monty.org Subject: Help Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit MIME-Version: 1.0 j'ai un problème de python. il est sorti de son vivarium. r•)Z maxheaderlenaÐ Subject: Escape report Content-Type: message/rfc822 Content-Transfer-Encoding: 8bit To: police@monty.org From: victim@monty.org Subject: Help Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 aidhaSB1biBwcm9ibMOobWUgZGUgcHl0aG9uLiBpbCBlc3Qgc29ydGkgZGUgc29uIHZpdmFyaXVt Lgo= )rrLrrr¤rlrmrsZ as_stringrrhrŽrrer@r—rrrÚ4test_set_message_with_non_ascii_and_coercion_to_7bits    óÿzGTestRawDataManager.test_set_message_with_non_ascii_and_coercion_to_7bitc CsZ| ¡}| ¡}d ¡D]œ}d ¡D]Ž}|j||dl| t¡ }|j|||dWdƒn1sh0Yt|jƒ}| ||¡| ||¡Wdƒq$1s¨0Yq$qd}d ¡D]’}|j||dn| t¡ }|j|||dWdƒn1s0Yt|jƒ}| ||¡| ||¡WdƒqÂ1sJ0YqÂdS)Nzquoted-printable base64rˆ)r¯rŠr®ú external-bodyz 8bit binary) rrr‚rXÚ ValueErrorrLr@Ú exceptionZassertIn)rr"r˜r¯rŠÚarÚexcrrrÚ#test_set_message_invalid_cte_raises@s$   .  .  0  z6TestRawDataManager.test_set_message_invalid_cte_raisesc CsšdtdƒtdƒfD]‚}|j|db| ¡}t ||dd¡| t|ƒt  d¡¡| |j dd|¡| |  ¡|¡Wdƒq1sŠ0YqdS)Ns bogus content)r˜ÚimageÚjpegz¡ Content-Type: image/jpeg Content-Transfer-Encoding: base64 Ym9ndXMgY29udGVudA== Tr“) Ú bytearrayÚ memoryviewr‚rrrLrr@rlrmrMr)rr˜r"rrrÚtest_set_image_jpgTsþz%TestRawDataManager.test_set_image_jpgcCsb| ¡}d}|j|dddd| t|ƒt d¡ d¡¡| |jdd |¡| | ¡|¡dS) Nótbÿgus con t ent zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzZaudioZaifzquoted-printabler®a Content-Type: audio/aif Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 b=FFgus=09con=0At=0Dent=20zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz= zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzržTr“© rrLrr¤rlrmrsrMrr—rrrÚ,test_set_audio_aif_with_quoted_printable_cteds úz?TestRawDataManager.test_set_audio_aif_with_quoted_printable_ctecCsj| ¡}d}|j|dddd| t|ƒt d¡ d¡dd ¡| |jd d |¡| | ¡|¡dS) NrÇZvideoZmpegÚbinaryr®z~ Content-Type: video/mpeg Content-Transfer-Encoding: binary MIME-Version: 1.0 r³s7bÿgus con t ent zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzs=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzTr“rÈr—rrrÚ#test_set_video_mpeg_with_binary_ctezsûø ÷ z6TestRawDataManager.test_set_video_mpeg_with_binary_ctecCsj| ¡}d}|j|dddd| t|ƒt d¡ d¡dd ¡| |jd d |¡| | ¡|¡dS) NsMbÿgus con t ent zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz Ú applicationz octet-streamZ8bitr®zŠ Content-Type: application/octet-stream Content-Transfer-Encoding: 8bit MIME-Version: 1.0 r³sbÿgus con t ent s=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz Tr“rÈr—rrrÚ/test_set_application_octet_stream_with_8bit_cte‹sûúùzBTestRawDataManager.test_set_application_octet_stream_with_8bit_ctecCsV| ¡}d}|jj}tj|||ddƒ|ddƒ|ddƒfd| t|ƒt d¡¡dS) Nr’r[rŒr¸r¶zI'm talking to myself.©Úheaderszù Content-Type: text/plain; charset="utf-8" To: foo@example.com From: foo@example.com Subject: I'm talking to myself. Content-Transfer-Encoding: 7bit Simple message. ) rrÚheader_factoryrrLrr@rlrm©rr"r˜rÐrrrÚ$test_set_headers_from_header_objectsœsýz7TestRawDataManager.test_set_headers_from_header_objectscCs6| ¡}d}tj||dd| t|ƒt d¡¡dS)Nr’)zX-Foo-Header: foozX-Bar-Header: barrÎzÇ Content-Type: text/plain; charset="utf-8" X-Foo-Header: foo X-Bar-Header: bar Content-Transfer-Encoding: 7bit Simple message. )rrrLrr@rlrmr—rrrÚtest_set_headers_from_strings®sz0TestRawDataManager.test_set_headers_from_stringscCsL| ¡}d}| td¡ tj||ddWdƒn1s>0YdS)Nr’r)zContent-Type: foo/barrÎ)rr,r½rrLr—rrrÚs   }4