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.7/test/test_email/__pycache__/test_contentmanager.cpython-37.pyc
B

��g��@s�ddlZddlmZmZddlZddlmZddlmZddl	m
Z
mZeGdd�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
Gdd�de�Zed
dZ
Gdd�de�Zed
dZdefdefdddefde
fdddefdddd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)S)*�TestContentManager)�z
text/plain)��text)��)Z	full_typeZ
maintype_only�null_keycCsNd
dd�}t�}|�||�|��}d|d<d|d<|�|j|dd�d	�dS)NcSs|d}||fS)NzX-Bar-Header�)�msg�foo�barrr�?/usr/local/lib/python3.7/test/test_email/test_contentmanager.py�
foo_getterszATestContentManager.get_key_as_get_content_key.<locals>.foo_getterz
text/plainzContent-TyperzX-Bar-Headerr)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�}|�||�x*|j��D]\}}||kr.|�||�q.W|��}d|d<d|d<d	|d
<|�|�|�d	�dS)NcSs|dS)NzX-Bar-Headerr)rrrr�
bar_getter!szGTestContentManager.get_key_as_get_content_key_order.<locals>.bar_gettercSs|dS)NzX-Foo-Headerr)rrrrr#szGTestContentManager.get_key_as_get_content_key_order.<locals>.foo_getterz
text/plainzContent-TyperzX-Bar-HeaderrzX-Foo-Header)rr�get_key_params�valuesrrr)rrrrrr�
precedencerrrr� get_key_as_get_content_key_order sz3TestContentManager.get_key_as_get_content_key_orderc	Cs<t�}|��}d|d<|�td��|�|�WdQRXdS)Nz
text/plainzContent-Type)rr�assertRaisesRegex�KeyErrorr)rrrrrr�:test_get_content_raises_if_unknown_mimetype_and_no_default0s
zMTestContentManager.test_get_content_raises_if_unknown_mimetype_and_no_defaultc@seZdZdS)zTestContentManager.BaseThingN)�__name__�
__module__�__qualname__rrrr�	BaseThing7sr*�.zTestContentManager.BaseThingc@seZdZdS)zTestContentManager.ThingN)r'r(r)rrrr�Thing:sr,zTestContentManager.Thingrr	)r
zTestContentManager.Thing)rr,��)�zTestContentManager.BaseThing)�r*�)�	zbuiltins.str)�
�str)�N)�type�	full_path�qualname�nameZ	base_typeZbase_full_pathZ
base_qualnameZ	base_nameZstr_typeZ
str_full_pathZstr_namercCs`ddd�}t�}|�||�|��}|��}|j||dd�|�|dd�|�|��|�dS)NcSs||d<|�|�dS)NzX-Foo-Header)�set_payload)r�objrrrr�
foo_setterNszATestContentManager.set_key_as_set_content_key.<locals>.foo_setterr)rzX-Foo-Header)N)r�add_set_handlerrr,�set_contentr�get_payload)rrrr<rr�msg_objrrr�set_key_as_set_content_keyMs
z-TestContentManager.set_key_as_set_content_keyc	Cs�dd�}dd�}t�}|�||�x*|j��D]\}}||kr.|�||�q.W|��}|��}|�||�|�|dd�|�|��|�dS)NcSsd|d<|�|�dS)NrzX-FooBar-Header)r:)rr;rrrr<ZszGTestContentManager.set_key_as_set_content_key_order.<locals>.foo_settercSsd|d<dS)NrzX-FooBar-Headerr)rr;rrr�
bar_setter]szGTestContentManager.set_key_as_set_content_key_order.<locals>.bar_setterzX-FooBar-Headerr)	rr=r r!rr,r>rr?)	rrrr<rBrr"rr@rrr� set_key_as_set_content_key_orderYsz3TestContentManager.set_key_as_set_content_key_orderc	Cs@t�}|��}|��}|�t|j��|�||�WdQRXdS)N)rrr,r$r%�testobject_full_pathr>)rrrr@rrr�6test_set_content_raises_if_unknown_type_and_no_defaultjs
zITestContentManager.test_set_content_raises_if_unknown_type_and_no_defaultc	Cs<t�}|��}d|d<|�t��|�|d�WdQRXdS)Nz
multipart/foozContent-Type�test)rr�assertRaises�	TypeErrorr>)rrrrrr�.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/htmlzContent-TyperF�To�abcc_sdS)Nr)�args�kwrrr�<lambda>�zITestContentManager.test_set_content_calls_clear_content.<locals>.<lambda>�xyz)�content_manager)	rr:rr=r4r>ZassertIsNonerr?)rrrrrr�$test_set_content_calls_clear_contentxs
z7TestContentManager.test_set_content_calls_clear_contentN)r'r(r)r�defaultr�messager rr#r&r4r*Zbaseobject_full_pathr,rDZset_key_paramsrArCrErIrRrrrrr	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`dadbe�dcfe�ddfde�Z7dfdg�Z8dhdi�Z9djdk�Z:dldm�Z;dndo�Z<dpS)q�TestRawDataManager�<)�max_line_lengthrQcCs&|�t�d��}|�t�|�d�dS)NzJ            Content-Type: text/plain

            Basic text.
            zBasic text.
)�_str_msg�textwrap�dedentrrr)rrrrr�test_get_text_plain�sz&TestRawDataManager.test_get_text_plaincCs&|�t�d��}|�t�|�d�dS)NzP            Content-Type: text/html

            <p>Basic text.</p>
            z<p>Basic text.</p>
)rXrYrZrrr)rrrrr�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.
            �latin1uBasìc tëxt.
)Z
_bytes_msgrYrZ�encoderrr)rrrrr�test_get_text_plain_latin1�sz-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.
            uBasìc tëxt.
)rXrYrZrrr)rrrrr�+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=
            uBasìc tëxt.
)rXrYrZrrr)rrrrr�test_get_text_plain_utf8_base64�sz2TestRawDataManager.test_get_text_plain_utf8_base64cCs&|�t�d��}|�t�|�d�dS)Nz�            Content-Type: text/plain; charset="utf8"
            Content-Transfer-Encoding: quoted-printable

            Bas=c3=acc t=c3=abxt=fd.
            uBasìc tëxt�.
)rXrYrZrrr)rrrrr�-test_get_text_plain_bad_utf8_quoted_printable�sz@TestRawDataManager.test_get_text_plain_bad_utf8_quoted_printablecCs*|�t�d��}|�tj|dd�d�dS)Nz�            Content-Type: text/plain; charset="utf8"
            Content-Transfer-Encoding: quoted-printable

            Bas=c3=acc t=c3=abxt=fd.
            �ignore)�errorsuBasìc tëxt.
)rXrYrZrrr)rrrrr�;test_get_text_plain_bad_utf8_quoted_printable_ignore_errors�szNTestRawDataManager.test_get_text_plain_bad_utf8_quoted_printable_ignore_errorscCs*|�t�d��}|�tj|dd�d�dS)Nu�            Content-Type: text/plain; charset="utf8"
            Content-Transfer-Encoding: base64

            QmFzw6xjIHTDq3h0Lgoÿ=
            rc)rduBasìc tëxt.
)rXrYrZrrr)rrrrr�8test_get_text_plain_utf8_base64_recoverable_bad_CTE_data�szKTestRawDataManager.test_get_text_plain_utf8_base64_recoverable_bad_CTE_datac	Cs8|�t�d��}|�t��tj|dd�WdQRXdS)NzJ            Content-Type: text/plain

            Basic text.
            rc)r)rXrYrZrGrHrr)rrrrr�test_get_text_invalid_keyword�sz0TestRawDataManager.test_get_text_invalid_keywordc
Cs^t�d�}xNd��D]B}|j|d��,|�|�|d��}|�t�|�d�WdQRXqWdS)Nzu            Content-Type: {}
            Content-Transfer-Encoding: base64

            Ym9ndXMgZGF0YQ==
            zaudio image video application)�maintypez/foos
bogus data)	rYrZ�split�subTestrX�formatrrr)r�templaterhrrrr�test_get_non_text�sz$TestRawDataManager.test_get_non_textc	Cs8|�t�d��}|�t��tj|dd�WdQRXdS)Nz|            Content-Type: image/jpg
            Content-Transfer-Encoding: base64

            Ym9ndXMgZGF0YQ==
            rc)rd)rXrYrZrGrHrr)rrrrr�!test_get_non_text_invalid_keyword�sz4TestRawDataManager.test_get_non_text_invalid_keywordc	Cs4|�t�d��}|�t��t�|�WdQRXdS)Nzm            Content-Type: multipart/mixed; boundary="==="

            --===
            --===--
            )rXrYrZrGr%rr)rrrrr�test_get_raises_on_multipart�sz/TestRawDataManager.test_get_raises_on_multipartc
Cs�t�d�}x�d��D]~}|j|d��h|�|�|��}t�|�}|�||j	�|�
t�|�d�|�
|dd�|�
|djdjd	�WdQRXqWdS)
Nz�            Content-Type: message/{}

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

            an example message
            zrfc822 external-body)�subtypezan example message
�tozfoo@example.com�fromrr)
rYrZrirjrXrkrr�assertIsInstancerTrZ	addressesZusername)rrlrprZsub_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.
            r3s
To: foo@ex)rXrYrZrrr)rrrrr�9test_get_message_non_rfc822_or_external_body_yields_bytesszLTestRawDataManager.test_get_message_non_rfc822_or_external_body_yields_bytescCs\|��}d}t�||�|�t|�t�d��|�|jdd��d�|�|�|�	�|�dS)NzSimple message.
z�            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 7bit

            Simple message.
            T)�decodezutf-8)
rrr>rr4rYrZr?rvr)rr�contentrrr�test_set_text_plain%sz&TestRawDataManager.test_set_text_plaincCs`|��}d}tj||dd�|�t|�t�d��|�|jdd��d�|�|�|�	�|�dS)Nz<p>Simple message.</p>
�html)rpz�            Content-Type: text/html; charset="utf-8"
            Content-Transfer-Encoding: 7bit

            <p>Simple message.</p>
            T)rvzutf-8)
rrr>rr4rYrZr?rvr)rrrwrrr�test_set_text_html2sz%TestRawDataManager.test_set_text_htmlcCs`|��}d}tj||dd�|�t|�t�d��|�|jdd��d�|�|�|�	�|�dS)NzSimple message.
zlatin-1)�charsetz�            Content-Type: text/plain; charset="iso-8859-1"
            Content-Transfer-Encoding: 7bit

            Simple message.
            T)rvzutf-8)
rrr>rr4rYrZr?rvr)rrrwrrr�test_set_text_charset_latin_1?sz0TestRawDataManager.test_set_text_charset_latin_1cCsb|��}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.
            zutf-8T)rv)rrr>r�bytesrYrZr^r?rvr)rrrwrrr�5test_set_text_short_line_minimal_non_ascii_heuristicsLs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.
            zutf-8T)rv)rrr>rr}rYrZr^r?rvr)rrrwrrr�4test_set_text_long_line_minimal_non_ascii_heuristicsYs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.
            zutf-8T)rv)rrr>rr}rYrZr^r?rvr)rrrwrrr�=test_set_text_11_lines_long_line_minimal_non_ascii_heuristicsjszPTestRawDataManager.test_set_text_11_lines_long_line_minimal_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

            áàäéèęöő.
            zutf-8T)rv)rrr>rr}rYrZr^r?rvr)rrrwrrr�*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
            










            áàäéèęöő.
            zutf-8T)rv)rrr>rr}rYrZr^r?rvr)rrrwrrr�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=
            zutf-8T)rv)rrr>rr}rYrZr^r?rvr)rrrwrrr�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.
            zutf-8T)rv)rrr>rr}rYrZr^r?rvr)rrrwrrr�=test_set_text_11_lines_long_line_maximal_non_ascii_heuristics�szPTestRawDataManager.test_set_text_11_lines_long_line_maximal_non_ascii_heuristicsc	Cs2|��}|�t��tj|ddd�WdQRXdS)Nuáàäéèęöő.
�7bit)�cte)rrG�UnicodeErrorrr>)rrrrr�,test_set_text_non_ascii_with_cte_7bit_raises�sz?TestRawDataManager.test_set_text_non_ascii_with_cte_7bit_raisesc	Cs2|��}|�t��tj|ddd�WdQRXdS)Nuáàäéèęöő.
�ascii)r{)rrGr�rr>)rrrrr�1test_set_text_non_ascii_with_charset_ascii_raises�szDTestRawDataManager.test_set_text_non_ascii_with_charset_ascii_raisesc	Cs4|��}|�t��tj|dddd�WdQRXdS)Nuáàäéèęöő.
r�r�)r�r{)rrGr�rr>)rrrrr�>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.orgrJzpolice@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)rr>rrr4rYrZr?rsrTr)rrrwZpayloadrrr�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�zpolice@monty.orgrJzvictim@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.
            zutf-8)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=
            )rr>rrr}rYrZr^Z	as_stringrrWrsrrTr4)rrrwrrr�4test_set_message_with_non_ascii_and_coercion_to_7bit�s

zGTestRawDataManager.test_set_message_with_non_ascii_and_coercion_to_7bitcCs|��}|��}x�d��D]x}xrd��D]f}|j||d��N|�t��}|j|||d�WdQRXt|j�}|�||�|�||�WdQRXq(WqWd}xrd��D]f}|j||d��N|�t��}|j|||d�WdQRXt|j�}|�||�|�||�WdQRXq�WdS)Nzquoted-printable base64zrfc822 external-body)r�rp)r�z
external-bodyz8bit binary)	rrirjrG�
ValueErrorr>r4Z	exceptionZassertIn)rrrwr�rp�ar�excrrr�#test_set_message_invalid_cte_raises$s$

z6TestRawDataManager.test_set_message_invalid_cte_raisesc
Cs�x�dtd�td�fD]n}|j|d��X|��}t�||dd�|�t|�t�	d��|�|j
dd�|�|�|��|�WdQRXqWdS)Ns
bogus content)rw�image�jpegz�                    Content-Type: image/jpeg
                    Content-Transfer-Encoding: base64

                    Ym9ndXMgY29udGVudA==
                    T)rv)�	bytearray�
memoryviewrjrrr>rr4rYrZr?r)rrwrrrr�test_set_image_jpg8sz%TestRawDataManager.test_set_image_jpgcCsb|��}d}|j|dddd�|�t|�t�d��d��|�|jdd	�|�|�|��|�dS)
Nstb�gus	con
t
ent zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzZaudioZaifzquoted-printable)r�a            Content-Type: audio/aif
            Content-Transfer-Encoding: quoted-printable
            MIME-Version: 1.0

            b=FFgus=09con=0At=0Dent=20zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz=
            zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzlatin-1T)rv)	rr>rr}rYrZr^r?r)rrrwrrr�,test_set_audio_aif_with_quoted_printable_cteHs	z?TestRawDataManager.test_set_audio_aif_with_quoted_printable_ctecCsj|��}d}|j|dddd�|�t|�t�d��d�dd	�|�|jd
d�|�|�|��|�dS)Nstb�gus	con
t
ent zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzZvideoZmpegZbinary)r�z~            Content-Type: video/mpeg
            Content-Transfer-Encoding: binary
            MIME-Version: 1.0

            r�s7b�gus	con
t
ent zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzs=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzT)rv)	rr>rr}rYrZr^r?r)rrrwrrr�#test_set_video_mpeg_with_binary_cte^s
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-streamZ8bit)r�z�            Content-Type: application/octet-stream
            Content-Transfer-Encoding: 8bit
            MIME-Version: 1.0

            r�sb�gus	con
t
ent
s=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
T)rv)	rr>rr}rYrZr^r?r)rrrwrrr�/test_set_application_octet_stream_with_8bit_cteos
zBTestRawDataManager.test_set_application_octet_stream_with_8bit_ctecCsV|��}d}|jj}tj|||dd�|dd�|dd�fd�|�t|�t�d��dS)	NzSimple message.
rJzfoo@example.comr�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_factoryrr>rr4rYrZ)rrrwr�rrr�$test_set_headers_from_header_objects�sz7TestRawDataManager.test_set_headers_from_header_objectscCs6|��}d}tj||dd�|�t|�t�d��dS)NzSimple message.
)zX-Foo-Header: foozX-Bar-Header: bar)r�z�            Content-Type: text/plain; charset="utf-8"
            X-Foo-Header: foo
            X-Bar-Header: bar
            Content-Transfer-Encoding: 7bit

            Simple message.
            )rrr>rr4rYrZ)rrrwrrr�test_set_headers_from_strings�sz0TestRawDataManager.test_set_headers_from_stringsc	Cs8|��}d}|�td��tj||dd�WdQRXdS)NzSimple message.
zContent-Type)zContent-Type: foo/bar)r�)rr$r�rr>)rrrwrrr�<test_set_headers_with_invalid_duplicate_string_header_raises�s
zOTestRawDataManager.test_set_headers_with_invalid_duplicate_string_header_raisesc	CsH|��}d}|jj}|�td��tj|||dd�fd�WdQRXdS)NzSimple message.
zContent-Typez foo/bar)r�)rrr�r$r�rr>)rrrwr�rrr�<test_set_headers_with_invalid_duplicate_header_header_raises�szOTestRawDataManager.test_set_headers_with_invalid_duplicate_header_header_raisesc	CsF|��}d}|�td��$tj||dd�t|dj�WdQRXdS)NzSimple message.
za@fairly@@invalid@address)zTo: a@fairly@@invalid@address)r�rJ)rr$r�rr>�print�defects)rrrwrrr�4test_set_headers_with_defective_string_header_raises�szGTestRawDataManager.test_set_headers_with_defective_string_header_raisesc	CsV|��}d}|jj}|�td��,tj|||dd�fd�t|dj�WdQRXdS)NzSimple message.
za@fairly@@invalid@addressrJ)r�)	rrr�r$r�rr>r�r�)rrrwr�rrr�4test_set_headers_with_defective_header_header_raises�szGTestRawDataManager.test_set_headers_with_defective_header_header_raisescCs*|��}|jddd�|�|dd�dS)Nr�inline)�dispositionzContent-Disposition)rr>r)rrrrr�test_set_disposition_inline�sz.TestRawDataManager.test_set_disposition_inlinecCs*|��}|jddd�|�|dd�dS)NrZ
attachment)r�zContent-Disposition)rr>r)rrrrr�test_set_disposition_attachment�sz2TestRawDataManager.test_set_disposition_attachmentcCs*|��}|jddd�|�|dd�dS)Nr)r�zContent-Disposition)rr>r)rrrrr�test_set_disposition_foo�sz+TestRawDataManager.test_set_disposition_foocCs*|��}|jddd�|�|dd�dS)Nrzbar.txt)�filenamezContent-Dispositionzattachment; filename="bar.txt")rr>r)rrrrr�test_set_filename�s
z$TestRawDataManager.test_set_filenamecCs,|��}|jdddd�|�|dd�dS)Nrr�zbar.txt)r�r�zContent-Dispositionzinline; filename="bar.txt")rr>r)rrrrr�(test_set_filename_and_disposition_inline�sz;TestRawDataManager.test_set_filename_and_disposition_inlinecCs6|��}|jddd�|�t|�t�d��d��dS)Nruábárî.txt)r�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�)rr>rr}rYrZr^)rrrrr�test_set_non_ascii_filename�sz.TestRawDataManager.test_set_non_ascii_filename)rwr)rw)ry)scontent)r�Zoctet_stream)scontent)r�r�r)z
external-body)Z
text_plainZ	text_htmlZapplication_octet_streamZ
image_jpegZmessage_rfc822Zmessage_external_bodycCsB|��}|j|f|�ddi�|�|dd�|�|dd�dS)Nr�)zTo: foo@example.comzFrom: bar@simple.netrqzfoo@example.comrrzbar@simple.net)rr>r)rr;�mimetyperrrr�!content_object_as_header_receiver�s
z4TestRawDataManager.content_object_as_header_receivercCs2|��}|j|f|�ddi�|�|dd�dS)Nr�r�zContent-Disposition)rr>r)rr;r�rrrr�-content_object_as_disposition_inline_receiversz@TestRawDataManager.content_object_as_disposition_inline_receivercCsZ|��}|j|f|�ddd��|�|dd�|�|��d�|�|djdd�dS)Nr�ubár.txt)r�r�zContent-Dispositionuinline; filename="bár.txt"r�)rr>r�get_filename�params)rr;r�rrrr�-content_object_as_non_ascii_filename_receivers
z@TestRawDataManager.content_object_as_non_ascii_filename_receivercCs2|��}|j|f|�ddi�|�|dd�dS)NZcidZsome_random_stuffz
Content-ID)rr>r)rr;r�rrrr�content_object_as_cid_receiver
sz1TestRawDataManager.content_object_as_cid_receivercCsP|��}ddd�}|j|f|�d|i�t|t�r:d|d<|�|dj|�dS)NubárrP)rrKr�zutf-8r{zContent-Type)rr>�
isinstancer4rr�)rr;r�rr�rrr�!content_object_as_params_receivers

z4TestRawDataManager.content_object_as_params_receiverN)=r'r(r)rrSZclonerrrTr[r\r_r`rarbrerfrgrmrnrortrurxrzr|r~rr�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_paramsr�r�r�r�r�rrrrrU�sx					

	







0		
rU�__main__)ZunittestZtest.test_emailrrrYZemailrZ
email.messagerZemail.contentmanagerrrrrUr'�mainrrrr�<module>s }