HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/test_email/__pycache__/test_contentmanager.cpython-310.pyc
o

�i��@s�ddlZddlmZmZddlZddlmZddlmZddl	m
Z
mZeGdd�de��ZeGdd	�d	e��Z
ed
krBe��dSdS)�N)�
TestEmailBase�parameterize)�policy)�EmailMessage)�ContentManager�raw_data_managerc
@s�eZdZejZeZdddd�Zdd�Zdd�Z	d	d
�Z
Gdd�de�Zed
dZ
Gdd�de�Zed
dZdefdefdddefde
fdddefdddd�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|dd�d	�dS)NcSs|d}||fS�N�X-Bar-Header�)�msg�foo�barrr�@/usr/local/lib/python3.10/test/test_email/test_contentmanager.py�
foo_getterszATestContentManager.get_key_as_get_content_key.<locals>.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)NcS�|dSrr�rrrr�
bar_getter!�zGTestContentManager.get_key_as_get_content_key_order.<locals>.bar_gettercSr%�N�X-Foo-Headerrr&rrrr#r(zGTestContentManager.get_key_as_get_content_key_order.<locals>.foo_getterr
rrrrr*)rr�get_key_params�valuesrrr)rr r!r'rr"�
precedencer#rrr� get_key_as_get_content_key_order s�z3TestContentManager.get_key_as_get_content_key_ordercCsRt�}|��}d|d<|�td��|�|�Wd�dS1s"wYdS)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@�eZdZdS)�TestContentManager.BaseThingN��__name__�
__module__�__qualname__rrrr�	BaseThing7�r9�.r4c@r3)�TestContentManager.ThingNr5rrrr�Thing:r:r=r<rr	)rr<)r
r=��)�r4)�r9�)�	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_setterN�zATestContentManager.set_key_as_set_content_key.<locals>.foo_setterrrr*r)r�add_set_handlerrr=�set_contentr�get_payload)rr r!rOr"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-HeaderrL�rrNrrrrOZrPzGTestContentManager.set_key_as_set_content_key_order.<locals>.foo_settercSsd|d<dS)NrrVrrWrrr�
bar_setter]szGTestContentManager.set_key_as_set_content_key_order.<locals>.bar_setterrVr)	rrQr+r,rr=rRrrS)	rr r!rOrXr"r-r#rTrrr� set_key_as_set_content_key_orderYs�z3TestContentManager.set_key_as_set_content_key_ordercCsVt�}|��}|��}|�t|j��|�||�Wd�dS1s$wYdSr)rrr=r/r0�testobject_full_pathrR)rr"r#rTrrr�6test_set_content_raises_if_unknown_type_and_no_defaultjs"�zITestContentManager.test_set_content_raises_if_unknown_type_and_no_defaultcCsRt�}|��}d|d<|�t��|�|d�Wd�dS1s"wYdS)Nz
multipart/foor�test)rr�assertRaises�	TypeErrorrRr1rrr�.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)NrzContent-Fooz	text/htmlrr\�To�abcc_sdSrr)�args�kwrrr�<lambda>szITestContentManager.test_set_content_calls_clear_content.<locals>.<lambda>�xyz)�content_manager)	rrMrrQrErRZassertIsNonerrS)rr#r"rrr�$test_set_content_calls_clear_contentxs
z7TestContentManager.test_set_content_calls_clear_contentN)r6r7r8r�defaultr�messager+r$r.r2rEr9Zbaseobject_full_pathr=rZZset_key_paramsrUrYr[r_rgrrrrr	s@��rc@s�eZdZejjded�ZeZdd�Z	dd�Z
dd�Zd	d
�Zdd�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�Z8dcdd�Z9dedfdgdhe�dife�djfdk�Z:dldm�Z;dndo�Z<dpdq�Z=drds�Z>dtdu�Z?dvS)w�TestRawDataManager�<)�max_line_lengthrfcC�&|�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_plaincCrm)NzP            Content-Type: text/html

            <p>Basic text.</p>
            z<p>Basic text.</p>
rorsrrr�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_msgrqrr�encoderrrrsrrr�test_get_text_plain_latin1�s�z-TestRawDataManager.test_get_text_plain_latin1cCrm)Nz�            Content-Type: text/plain; charset="latin-1"
            Content-Transfer-Encoding: quoted-printable

            Bas=ECc t=EBxt.
            rwrorsrrr�+test_get_text_plain_latin1_quoted_printable��z>TestRawDataManager.test_get_text_plain_latin1_quoted_printablecCrm)Nz�            Content-Type: text/plain; charset="utf8"
            Content-Transfer-Encoding: base64

            QmFzw6xjIHTDq3h0Lgo=
            rwrorsrrr�test_get_text_plain_utf8_base64�r{z2TestRawDataManager.test_get_text_plain_utf8_base64cCrm)N��            Content-Type: text/plain; charset="utf8"
            Content-Transfer-Encoding: quoted-printable

            Bas=c3=acc t=c3=abxt=fd.
            uBasìc tëxt�.
rorsrrr�-test_get_text_plain_bad_utf8_quoted_printable�r{z@TestRawDataManager.test_get_text_plain_bad_utf8_quoted_printablecC�*|�t�d��}|�tj|dd�d�dS)Nr}�ignore��errorsrwrorsrrr�;test_get_text_plain_bad_utf8_quoted_printable_ignore_errors���zNTestRawDataManager.test_get_text_plain_bad_utf8_quoted_printable_ignore_errorscCr)Nu�            Content-Type: text/plain; charset="utf8"
            Content-Transfer-Encoding: base64

            QmFzw6xjIHTDq3h0Lgoÿ=
            r�r�rwrorsrrr�8test_get_text_plain_utf8_base64_recoverable_bad_CTE_data�r�zKTestRawDataManager.test_get_text_plain_utf8_base64_recoverable_bad_CTE_datacC�N|�t�d��}|�t��tj|dd�Wd�dS1s wYdS)Nrnr�r�rprqrrr]r^rrrsrrr�test_get_text_invalid_keyword�s"�z0TestRawDataManager.test_get_text_invalid_keywordc	Csnt�d�}d��D]+}|j|d��|�|�|d��}|�t�|�d�Wd�n1s/wYq	dS)Nzu            Content-Type: {}
            Content-Transfer-Encoding: base64

            Ym9ndXMgZGF0YQ==
            zaudio image video application)�maintypez/foos
bogus data)	rqrr�split�subTestrp�formatrrr)r�templater�r#rrr�test_get_non_text�s
���z$TestRawDataManager.test_get_non_textcCr�)Nz|            Content-Type: image/jpg
            Content-Transfer-Encoding: base64

            Ym9ndXMgZGF0YQ==
            r�r�r�rsrrr�!test_get_non_text_invalid_keyword�s"�z4TestRawDataManager.test_get_non_text_invalid_keywordcCsJ|�t�d��}|�t��t�|�Wd�dS1swYdS)Nzm            Content-Type: multipart/mixed; boundary="==="

            --===
            --===--
            )rprqrrr]r0rrrsrrr�test_get_raises_on_multipart�s"�z/TestRawDataManager.test_get_raises_on_multipartc	Cs�t�d�}d��D]I}|j|d��9|�|�|��}t�|�}|�||j	�|�
t�|�d�|�
|dd�|�
|djdjd	�Wd�n1sMwYq	dS)
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)
rqrrr�r�rpr�rr�assertIsInstancerirZ	addresses�username)rr�r�r#Zsub_msgrrr�)test_get_message_rfc822_and_external_bodys
	
����z<TestRawDataManager.test_get_message_rfc822_and_external_bodycCs.|�t�d��}|�t�|�dd�d�dS)Nz�            Content-Type: message/partial

            To: foo@example.com
            From: bar@example.com
            Subject: example

            The real body is in another message.
            rDs
To: foo@exrorsrrr�9test_get_message_non_rfc822_or_external_body_yields_bytess	zLTestRawDataManager.test_get_message_non_rfc822_or_external_body_yields_bytescC�\|��}d}t�||�|�t|�t�d��|�|jdd��d�|�|�|�	�|�dS)N�Simple message.
z�            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 7bit

            Simple message.
            T��decode�utf-8�
rrrRrrErqrrrSr�r�rr#�contentrrr�test_set_text_plain%�z&TestRawDataManager.test_set_text_plaincCs\|��}d}t�||�|�t|�t�d��|�|jdd��d�d�|�|�	�d�dS)Nrzp            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 7bit


            Tr�r��
r�r�rrr�test_set_text_plain_null2r�z+TestRawDataManager.test_set_text_plain_nullcC�`|��}d}tj||dd�|�t|�t�d��|�|jdd��d�|�|�|�	�|�dS)Nz<p>Simple message.</p>
�htmlr�z�            Content-Type: text/html; charset="utf-8"
            Content-Transfer-Encoding: 7bit

            <p>Simple message.</p>
            Tr�r�r�r�rrr�test_set_text_html?�z%TestRawDataManager.test_set_text_htmlcCr�)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_1Lr�z0TestRawDataManager.test_set_text_charset_latin_1cCr�)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_heuristicscC�b|��}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��rrrRr�bytesrqrrrxrSr�rr�rrr�5test_set_text_short_line_minimal_non_ascii_heuristicsh��zHTestRawDataManager.test_set_text_short_line_minimal_non_ascii_heuristicscCr�)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_heuristicscCr�)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_heuristicscCr�)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�r�z=TestRawDataManager.test_set_text_maximal_non_ascii_heuristicscCr�)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�r�zFTestRawDataManager.test_set_text_11_lines_maximal_non_ascii_heuristicscCr�)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_heuristicscC�H|��}|�t��tj|ddd�Wd�dS1swYdS)Nr��7bit��cte�rr]�UnicodeErrorrrRrsrrr�,test_set_text_non_ascii_with_cte_7bit_raises��"�z?TestRawDataManager.test_set_text_non_ascii_with_cte_7bit_raisescCr�)Nr��asciir�r�rsrrr�1test_set_text_non_ascii_with_charset_ascii_raises�r�zDTestRawDataManager.test_set_text_non_ascii_with_charset_ascii_raisescCsJ|��}|�t��tj|dddd�Wd�dS1swYdS)Nr�r�r�)r�r�r�rsrrr�>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)rrRrrrErqrrrSr�rir)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=
            )rrRrrr�rqrrrxZ	as_stringrrlr�rrirEr�rrr�4test_set_message_with_non_ascii_and_coercion_to_7bits 

��zGTestRawDataManager.test_set_message_with_non_ascii_and_coercion_to_7bitcCsV|��}|��}d��D]N}d��D]G}|j||d��6|�t��}|j|||d�Wd�n1s4wYt|j�}|�||�|�||�Wd�n1sTwYqqd}d��D]G}|j||d��6|�t��}|j|||d�Wd�n1s�wYt|j�}|�||�|�||�Wd�n1s�wYqadS)Nzquoted-printable base64r�)r�r�r��
external-bodyz8bit binary)	rr�r�r]�
ValueErrorrRrE�	exceptionZassertIn)rr#r�r�r��ar�excrrr�#test_set_message_invalid_cte_raises@s4�
����
���z6TestRawDataManager.test_set_message_invalid_cte_raisesc	Cs�dtd�td�fD]A}|j|d��1|��}t�||dd�|�t|�t�	d��|�|j
dd�|�|�|��|�Wd�n1sEwYq	dS)Ns
bogus content)r��image�jpegz�                    Content-Type: image/jpeg
                    Content-Transfer-Encoding: base64

                    Ym9ndXMgY29udGVudA==
                    Tr�)�	bytearray�
memoryviewr�rrrRrrErqrrrSr)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��	rrRrr�rqrrrxrSrr�rrr�,test_set_audio_aif_with_quoted_printable_cteds	�z?TestRawDataManager.test_set_audio_aif_with_quoted_printable_ctecC�j|��}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_ctecCr�)NsMb�gus	con
t
ent
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
�application�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_factoryrrRrrErqrr�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.
            )rrrRrrErqrrr�rrr�test_set_headers_from_strings�sz0TestRawDataManager.test_set_headers_from_stringscCsN|��}d}|�td��tj||dd�Wd�dS1s wYdS)Nr�r)zContent-Type: foo/barr�)rr/r�rrRr�rrr�<test_set_headers_with_invalid_duplicate_string_header_raises�s
"�zOTestRawDataManager.test_set_headers_with_invalid_duplicate_string_header_raisescCs^|��}d}|jj}|�td��tj|||dd�fd�Wd�dS1s(wYdS)Nr�rz foo/barr�)rrr�r/r�rrRr�rrr�<test_set_headers_with_invalid_duplicate_header_header_raises�s
�"�zOTestRawDataManager.test_set_headers_with_invalid_duplicate_header_header_raisescCs\|��}d}|�td��tj||dd�t|dj�Wd�dS1s'wYdS)Nr��a@fairly@@invalid@address)zTo: a@fairly@@invalid@addressr�r`)rr/r�rrR�print�defectsr�rrr�4test_set_headers_with_defective_string_header_raises�s"�zGTestRawDataManager.test_set_headers_with_defective_string_header_raisescCsl|��}d}|jj}|�td��tj|||dd�fd�t|dj�Wd�dS1s/wYdS)Nr�r�r`r�)	rrr�r/r�rrRr�r�r�rrr�4test_set_headers_with_defective_header_header_raises�s�"�zGTestRawDataManager.test_set_headers_with_defective_header_header_raisescC�*|��}|jddd�|�|dd�dS)Nr�inline��disposition�Content-Disposition�rrRrrsrrr�test_set_disposition_inline��z.TestRawDataManager.test_set_disposition_inlinecCr�)NrZ
attachmentr�r�r�rsrrr�test_set_disposition_attachment�r�z2TestRawDataManager.test_set_disposition_attachmentcCs*|��}|jddd�|�|dd�dS)Nrr�r�r�rsrrr�test_set_disposition_foo�r�z+TestRawDataManager.test_set_disposition_foocCs*|��}|jddd�|�|dd�dS)Nr�bar.txt��filenamer�zattachment; filename="bar.txt"r�rsrrr�test_set_filename�s

�z$TestRawDataManager.test_set_filenamecCs,|��}|jdddd�|�|dd�dS)Nrr�r��r�r�r�zinline; filename="bar.txt"r�rsrrr�(test_set_filename_and_disposition_inline�sz;TestRawDataManager.test_set_filename_and_disposition_inlinecCs6|��}|jddd�|�t|�t�d��d��dS)Nruábárî.txtr�a            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 7bit
            Content-Disposition: attachment;
             filename*=utf-8''%C3%A1b%C3%A1r%C3%AE.txt
            MIME-Version: 1.0

            foo
            r�)rrRrr�rqrrrxrsrrr�test_set_non_ascii_filename�s
�z.TestRawDataManager.test_set_non_ascii_filenamecCs4|��}|jddddd�|�t|�t�d��dS)NsASCII-only message.
r�r�r�)r�r�r�z�            Content-Type: application/octet-stream
            Content-Transfer-Encoding: 7bit
            MIME-Version: 1.0

            ASCII-only message.
            )rrRrrErqrrrsrrr�test_set_content_bytes_cte_7bits
�z2TestRawDataManager.test_set_content_bytes_cte_7bit)r�r)r�)r�)�content)r�Zoctet_stream)r)r�r�r)r�)Z
text_plainZ	text_htmlZapplication_octet_streamZ
image_jpegZmessage_rfc822Zmessage_external_bodycCsD|��}|j|g|�Rddi�|�|dd�|�|dd�dS)Nr�)zTo: foo@example.comzFrom: bar@simple.netr�r�r�zbar@simple.netr��rrN�mimetyper#rrr�!content_object_as_header_receiver!sz4TestRawDataManager.content_object_as_header_receivercC�4|��}|j|g|�Rddi�|�|dd�dS)Nr�r�r�r�rrrr�-content_object_as_disposition_inline_receiver)�z@TestRawDataManager.content_object_as_disposition_inline_receivercCs\|��}|j|g|�Rddd��|�|dd�|�|��d�|�|djdd�dS)Nr�ubár.txtr�r�uinline; filename="bár.txt"r�)rrRr�get_filename�paramsrrrr�-content_object_as_non_ascii_filename_receiver.s
z@TestRawDataManager.content_object_as_non_ascii_filename_receivercCr)NZcidZsome_random_stuffz
Content-IDr�rrrr�content_object_as_cid_receiver5rz1TestRawDataManager.content_object_as_cid_receivercCsR|��}ddd�}|j|g|�Rd|i�t|t�rd|d<|�|dj|�dS)Nubárre)rrarr�r�r)rrR�
isinstancerErr)rrNrr#rrrr�!content_object_as_params_receiver:s

z4TestRawDataManager.content_object_as_params_receiverN)@r6r7r8rrhZclonerrrirtruryrzr|r~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�Zcontent_object_paramsrrr	r
rrrrrrj�s�	�				

	








0		


�
rj�__main__)ZunittestZtest.test_emailrrrqZemailrZ
email.messagerZemail.contentmanagerrrrrjr6�mainrrrr�<module>s$}@�