Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/test/test_email/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/test_email/__pycache__/test_contentmanager.cpython-35.pyc



��Yf��@s�ddlZddlmZmZddlZddlmZddlmZddl	m
Z
mZeGdd�de��ZeGdd	�d	e��Z
ed
kr�ej�dS)�N)�
TestEmailBase�parameterize)�policy)�EmailMessage)�ContentManager�raw_data_managerc@sKeZdZejZeZdd8dd9dd:iZd
d�Zdd
�Z	dd�Z
Gdd�de�ZeddZ
Gdd�de�ZeddZddefddefdd;dd<ddefdde
fd d=d"d>d$d%efd&d?d)d@ddAiZd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd-S)B�TestContentManagerZ	full_type��
text/plainZ
maintype_only��textZnull_key��cCskddd�}t�}|j||�|j�}d|d<d|d<|j|j|dd�d�dS)	NcSs|d}||fS)NzX-Bar-Header�)�msg�foo�barrr�H/opt/alt/python35/lib64/python3.5/test/test_email/test_contentmanager.py�
foo_getters
zATestContentManager.get_key_as_get_content_key.<locals>.foo_getterz
text/plainzContent-TyperzX-Bar-Headerr)rr)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||�x9|jj�D](\}}||krA|j||�qAW|j�}d|d<d|d<d	|d
<|j|j|�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	CsJt�}|j�}d|d<|jtd��|j|�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@seZdZdS)zTestContentManager.BaseThingN)�__name__�
__module__�__qualname__rrrr�	BaseThing7sr*�.�TestContentManager.BaseThingc@seZdZdS)zTestContentManager.ThingN)r'r(r)rrrr�Thing:sr-�TestContentManager.Thing�typer�	full_pathZqualname�nameZ	base_type�Zbase_full_path�Z
base_qualname�Z	base_name�Zstr_type�Z
str_full_path�	�builtins.strZstr_name�
�str�NcCs�ddd�}t�}|j||�|j�}|j�}|j||dd�|j|dd�|j|j�|�dS)NcSs||d<|j|�dS)NzX-Foo-Header)�set_payload)r�objrrrr�
foo_setterNs
zATestContentManager.set_key_as_set_content_key.<locals>.foo_setterrrzX-Foo-Header)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�}|j||�x9|jj�D](\}}||krA|j||�qAW|j�}|j�}|j||�|j|dd�|j|j�|�dS)NcSsd|d<|j|�dS)NrzX-FooBar-Header)r<)rr=rrrr>Zs
zGTestContentManager.set_key_as_set_content_key_order.<locals>.foo_settercSsd|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@rrA)	rrrr>rDrr"rrBrrr� set_key_as_set_content_key_orderYs	z3TestContentManager.set_key_as_set_content_key_orderc
CsRt�}|j�}|j�}|jt|j��|j||�WdQRXdS)N)rrr-r$r%�testobject_full_pathr@)rrrrBrrr�6test_set_content_raises_if_unknown_type_and_no_defaultjs
	zITestContentManager.test_set_content_raises_if_unknown_type_and_no_defaultc
CsJt�}|j�}d|d<|jt��|j|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�|j�}d|d<d|d<d|d<|jd�t�}|jtdd	��|jd
d|�|j|d�|j|d�|j|dd�|j|j��dS)NrzContent-Fooz	text/htmlzContent-TyperH�To�abcc_sdS)Nr)�args�kwrrr�<lambda>szITestContentManager.test_set_content_calls_clear_content.<locals>.<lambda>�xyz�content_manager)	rr<rr?r:r@ZassertIsNonerrA)rrrrrr�$test_set_content_calls_clear_contentxs



	z7TestContentManager.test_set_content_calls_clear_content)r	r
)rr)r
r)rr.)r
r-)r4r,)r5r*)r7r8)r9r:)r;N)r'r(r)r�defaultr�messager rr#r&r:r*Zbaseobject_full_pathr-rFZset_key_paramsrCrErGrKrSrrrrr	s:	rc
@s�eZdZejjddde�ZeZdd�Z	dd�Z
dd	�Zd
d�Zdd
�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Z d4d5�Z!d6d7�Z"d8d9�Z#d:d;�Z$d<d=�Z%d>d?�Z&d@dA�Z'dBdC�Z(dDdE�Z)dFdG�Z*dHdI�Z+dJdK�Z,dLdM�Z-dNdO�Z.dPdQ�Z/dRdS�Z0dTdU�Z1dVdW�Z2dXdY�Z3dZd[�Z4d\d]�Z5d^d_�Z6d`daffdbdzddd|dhd~dke�ffdle�dfiZ7dndo�Z8dpdq�Z9drds�Z:dtdu�Z;dvdw�Z<dxS)��TestRawDataManager�max_line_length�<rRcCs5|jtjd��}|jtj|�d�dS)NzJ            Content-Type: text/plain

            Basic text.
            zBasic text.
)�_str_msg�textwrap�dedentrrr)rrrrr�test_get_text_plain�sz&TestRawDataManager.test_get_text_plaincCs5|jtjd��}|jtj|�d�dS)NzP            Content-Type: text/html

            <p>Basic text.</p>
            z<p>Basic text.</p>
)rYrZr[rrr)rrrrr�test_get_text_html�sz%TestRawDataManager.test_get_text_htmlcCs>|jtjd�jd��}|jtj|�d�dS)Nu\            Content-Type: text/plain; charset=latin1

            Basìc tëxt.
            �latin1uBasìc tëxt.
)Z
_bytes_msgrZr[�encoderrr)rrrrr�test_get_text_plain_latin1�sz-TestRawDataManager.test_get_text_plain_latin1cCs5|jtjd��}|jtj|�d�dS)Nz�            Content-Type: text/plain; charset="latin-1"
            Content-Transfer-Encoding: quoted-printable

            Bas=ECc t=EBxt.
            uBasìc tëxt.
)rYrZr[rrr)rrrrr�+test_get_text_plain_latin1_quoted_printable�sz>TestRawDataManager.test_get_text_plain_latin1_quoted_printablecCs5|jtjd��}|jtj|�d�dS)Nz�            Content-Type: text/plain; charset="utf8"
            Content-Transfer-Encoding: base64

            QmFzw6xjIHTDq3h0Lgo=
            uBasìc tëxt.
)rYrZr[rrr)rrrrr�test_get_text_plain_utf8_base64�sz2TestRawDataManager.test_get_text_plain_utf8_base64cCs5|jtjd��}|jtj|�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�.
)rYrZr[rrr)rrrrr�-test_get_text_plain_bad_utf8_quoted_printable�sz@TestRawDataManager.test_get_text_plain_bad_utf8_quoted_printablecCs;|jtjd��}|jtj|dd�d�dS)Nz�            Content-Type: text/plain; charset="utf8"
            Content-Transfer-Encoding: quoted-printable

            Bas=c3=acc t=c3=abxt=fd.
            �errors�ignoreuBasìc tëxt.
)rYrZr[rrr)rrrrr�;test_get_text_plain_bad_utf8_quoted_printable_ignore_errors�szNTestRawDataManager.test_get_text_plain_bad_utf8_quoted_printable_ignore_errorscCs;|jtjd��}|jtj|dd�d�dS)Nu�            Content-Type: text/plain; charset="utf8"
            Content-Transfer-Encoding: base64

            QmFzw6xjIHTDq3h0Lgoÿ=
            rdreuBasìc tëxt.
)rYrZr[rrr)rrrrr�8test_get_text_plain_utf8_base64_recoverable_bad_CTE_data�szKTestRawDataManager.test_get_text_plain_utf8_base64_recoverable_bad_CTE_datacCsF|jtjd��}|jt��tj|dd�WdQRXdS)NzJ            Content-Type: text/plain

            Basic text.
            rre)rYrZr[rIrJrr)rrrrr�test_get_text_invalid_keyword�sz0TestRawDataManager.test_get_text_invalid_keywordcCsytjd�}xcdj�D]U}|jd|��:|j|j|d��}|jtj|�d�WdQRXqWdS)Nzu            Content-Type: {}
            Content-Transfer-Encoding: base64

            Ym9ndXMgZGF0YQ==
            zaudio image video application�maintypez/foos
bogus data)	rZr[�split�subTestrY�formatrrr)r�templaterirrrr�test_get_non_text�s	z$TestRawDataManager.test_get_non_textcCsF|jtjd��}|jt��tj|dd�WdQRXdS)Nz|            Content-Type: image/jpg
            Content-Transfer-Encoding: base64

            Ym9ndXMgZGF0YQ==
            rdre)rYrZr[rIrJrr)rrrrr�!test_get_non_text_invalid_keyword�sz4TestRawDataManager.test_get_non_text_invalid_keywordc	Cs@|jtjd��}|jt��tj|�WdQRXdS)Nzm            Content-Type: multipart/mixed; boundary="==="

            --===
            --===--
            )rYrZr[rIr%rr)rrrrr�test_get_raises_on_multipart�sz/TestRawDataManager.test_get_raises_on_multipartcCs�tjd�}x�dj�D]�}|jd|���|j|j|��}tj|�}|j||j	�|j
tj|�d�|j
|dd�|j
|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)
rZr[rjrkrYrlrr�assertIsInstancerUrZ	addressesZusername)rrmrqrZsub_msgrrr�)test_get_message_rfc822_and_external_bodys	z<TestRawDataManager.test_get_message_rfc822_and_external_bodycCs?|jtjd��}|jtj|�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.
            r9s
To: foo@ex)rYrZr[rrr)rrrrr�9test_get_message_non_rfc822_or_external_body_yields_bytesszLTestRawDataManager.test_get_message_non_rfc822_or_external_body_yields_bytescCs�|j�}d}tj||�|jt|�tjd��|j|jdd�jd�|�|j|j	�|�dS)NzSimple message.
z�            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 7bit

            Simple message.
            �decodeTzutf-8)
rrr@rr:rZr[rArwr)rr�contentrrr�test_set_text_plain%s
%z&TestRawDataManager.test_set_text_plaincCs�|j�}d}tj||dd�|jt|�tjd��|j|jdd�jd�|�|j|j	�|�dS)Nz<p>Simple message.</p>
rq�htmlz�            Content-Type: text/html; charset="utf-8"
            Content-Transfer-Encoding: 7bit

            <p>Simple message.</p>
            rwTzutf-8)
rrr@rr:rZr[rArwr)rrrxrrr�test_set_text_html2s
%z%TestRawDataManager.test_set_text_htmlcCs�|j�}d}tj||dd�|jt|�tjd��|j|jdd�jd�|�|j|j	�|�dS)NzSimple message.
�charsetzlatin-1z�            Content-Type: text/plain; charset="iso-8859-1"
            Content-Transfer-Encoding: 7bit

            Simple message.
            rwTzutf-8)
rrr@rr:rZr[rArwr)rrrxrrr�test_set_text_charset_latin_1?s
%z0TestRawDataManager.test_set_text_charset_latin_1cCs�|j�}d}tj||�|jt|�tjd�jd��|j|jdd�j	d�|�|j|j
�|�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-8rwT)rrr@r�bytesrZr[r_rArwr)rrrxrrr�5test_set_text_short_line_minimal_non_ascii_heuristicsLs%zHTestRawDataManager.test_set_text_short_line_minimal_non_ascii_heuristicscCs�|j�}d}tj||�|jt|�tjd�jd��|j|jdd�j	d�|�|j|j
�|�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-8rwT)rrr@rr~rZr[r_rArwr)rrrxrrr�4test_set_text_long_line_minimal_non_ascii_heuristicsYs%zGTestRawDataManager.test_set_text_long_line_minimal_non_ascii_heuristicscCs�|j�}d	d}tj||�|jt|�tjdd
d�jd��|j|jdd�j	d�|�|j|j
�|�dS)N�
r9usj'ai un problème de python. il est sorti de son vivarium.  et là il est monté sur moi et il commence à m'éto.
zz            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: quoted-printable
            z�
            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-8rwTz










z










)rrr@rr~rZr[r_rArwr)rrrxrrr�=test_set_text_11_lines_long_line_minimal_non_ascii_heuristicsjs%zPTestRawDataManager.test_set_text_11_lines_long_line_minimal_non_ascii_heuristicscCs�|j�}d}tj||�|jt|�tjd�jd��|j|jdd�j	d�|�|j|j
�|�dS)Nuáàäéèęöő.
u�            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 8bit

            áàäéèęöő.
            zutf-8rwT)rrr@rr~rZr[r_rArwr)rrrxrrr�*test_set_text_maximal_non_ascii_heuristics|s%z=TestRawDataManager.test_set_text_maximal_non_ascii_heuristicscCs�|j�}d
}tj||�|jt|�tjddd�jd��|j|jdd�j	d�|�|j|j
�|�dS)Nr�r9uáàäéèęöő.
zn            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 8bit
            u+
            áàäéèęöő.
            zutf-8rwTz










u









áàäéèęöő.
z










)rrr@rr~rZr[r_rArwr)rrrxrrr�3test_set_text_11_lines_maximal_non_ascii_heuristics�s%zFTestRawDataManager.test_set_text_11_lines_maximal_non_ascii_heuristicscCs�|j�}d}tj||�|jt|�tjd�jd��|j|jdd�j	d�|�|j|j
�|�dS)Nu�áàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöő.
a�            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: base64

            w6HDoMOkw6nDqMSZw7bFkcOhw6DDpMOpw6jEmcO2xZHDocOgw6TDqcOoxJnD
            tsWRw6HDoMOkw6nDqMSZw7bFkcOhw6DDpMOpw6jEmcO2xZHDocOgw6TDqcOo
            xJnDtsWRw6HDoMOkw6nDqMSZw7bFkcOhw6DDpMOpw6jEmcO2xZHDocOgw6TD
            qcOoxJnDtsWRw6HDoMOkw6nDqMSZw7bFkcOhw6DDpMOpw6jEmcO2xZHDocOg
            w6TDqcOoxJnDtsWRLgo=
            zutf-8rwT)rrr@rr~rZr[r_rArwr)rrrxrrr�4test_set_text_long_line_maximal_non_ascii_heuristics�s	%zGTestRawDataManager.test_set_text_long_line_maximal_non_ascii_heuristicscCs�|j�}d	d}tj|d
d�|jt|�tjddd�jd��|j|jdd�j	d�|�|j|j
�|�dS)Nr�r9u�áàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöő.
zz            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: quoted-printable
            a�
            =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-8rwTz










z










z










)rrr@rr~rZr[r_rArwr)rrrxrrr�=test_set_text_11_lines_long_line_maximal_non_ascii_heuristics�s%zPTestRawDataManager.test_set_text_11_lines_long_line_maximal_non_ascii_heuristicscCs=|j�}|jt��tj|ddd�WdQRXdS)Nuáàäéèęöő.
�cte�7bit)rrI�UnicodeErrorrr@)rrrrr�,test_set_text_non_ascii_with_cte_7bit_raises�sz?TestRawDataManager.test_set_text_non_ascii_with_cte_7bit_raisescCs=|j�}|jt��tj|ddd�WdQRXdS)Nuáàäéèęöő.
r|�ascii)rrIr�rr@)rrrrr�1test_set_text_non_ascii_with_charset_ascii_raises�szDTestRawDataManager.test_set_text_non_ascii_with_charset_ascii_raisescCsC|j�}|jt��!tj|ddddd�WdQRXdS)Nuáàäéèęöő.
r�r�r|r�)rrIr�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�|j�}d|d<|j�}d|d<d|d<d|d<|jd�tj||�|jt|�tjd	��|jd
�}|j||j	�|jt|�t|��|j|j
�|j	�|jt|j
��t|��dS)NzForwarded message�Subjectzpython@vivarium.orgrLzpolice@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@rrr:rZr[rArtrUr)rrrxZpayloadrrr�test_set_message�s





z#TestRawDataManager.test_set_messagecCs�|j�}d|d<|j�}d|d<d|d<d|d<|jd�tj||�|jt|�tjd	�jd
��|j|jd|j	j
�tjd��|j|j�|j
�|jt|j��t|��dS)
Nz
Escape reportr�zpolice@monty.orgrLzvictim@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-8Z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~rZr[r_Z	as_stringrrWrtrrUr:)rrrxrrr�4test_set_message_with_non_ascii_and_coercion_to_7bit�s






zGTestRawDataManager.test_set_message_with_non_ascii_and_coercion_to_7bitcCsc|j�}|j�}x�dj�D]�}x�dj�D]�}|jd|d|��c|jt��}|j||d|�WdQRXt|j�}|j||�|j||�WdQRXq8Wq%Wd}x�dj�D]�}|jd|d|��c|jt��}|j||d|�WdQRXt|j�}|j||�|j||�WdQRXq�WdS)Nzquoted-printable base64zrfc822 external-bodyr�rqz
external-bodyz8bit binary)	rrjrkrI�
ValueErrorr@r:Z	exceptionZassertIn)rrrxr�rq�ar�excrrr�#test_set_message_invalid_cte_raises$s$z6TestRawDataManager.test_set_message_invalid_cte_raisesc
Cs�x�dtd�td�fD]�}|jd|��x|j�}tj||dd�|jt|�tj	d��|j|j
dd�|�|j|j�|�WdQRXqWdS)Ns
bogus contentrx�image�jpegz�                    Content-Type: image/jpeg
                    Content-Transfer-Encoding: base64

                    Ym9ndXMgY29udGVudA==
                    rwT)�	bytearray�
memoryviewrkrrr@rr:rZr[rAr)rrxrrrr�test_set_image_jpg8s	
z%TestRawDataManager.test_set_image_jpgcCs�|j�}ddd}|j|dddd�|jt|�tjd�jd	��|j|jd
d�|�|j|j�|�dS)Nsb�gus	con
t
ent �z�dZaudioZaifr�zquoted-printablea            Content-Type: audio/aif
            Content-Transfer-Encoding: quoted-printable
            MIME-Version: 1.0

            b=FFgus=09con=0At=0Dent=20zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz=
            zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzlatin-1rwT)	rr@rr~rZr[r_rAr)rrrxrrr�,test_set_audio_aif_with_quoted_printable_cteHs	z?TestRawDataManager.test_set_audio_aif_with_quoted_printable_ctecCs�|j�}ddd}|j|dddd�|jt|�tjd�jd	�d
d�|j|jdd
�|�|j|j�|�dS)Nsb�gus	con
t
ent r�r�ZvideoZmpegr�Zbinaryz~            Content-Type: video/mpeg
            Content-Transfer-Encoding: binary
            MIME-Version: 1.0

            r�s7b�gus	con
t
ent zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzs=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzrwT)	rr@rr~rZr[r_rAr)rrrxrrr�#test_set_video_mpeg_with_binary_cte^sz6TestRawDataManager.test_set_video_mpeg_with_binary_ctecCs�|j�}dddd}|j|dddd�|jt|�tjd	�jd
�dd�|j|jd
d�|�|j|j�|�dS)Nsb�gus	con
t
ent
r�rXs
�applicationzoctet-streamr�Z8bitz�            Content-Type: application/octet-stream
            Content-Transfer-Encoding: 8bit
            MIME-Version: 1.0

            r�sb�gus	con
t
ent
s=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
rwT)	rr@rr~rZr[r_rAr)rrrxrrr�/test_set_application_octet_stream_with_8bit_cteoszBTestRawDataManager.test_set_application_octet_stream_with_8bit_ctec	Cs{|j�}d}|jj}tj||d|dd�|dd�|dd�f�|jt|�tjd��dS)	NzSimple message.
�headersrLzfoo@example.comr�r�zI'm talking to myself.z�            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@rr:rZr[)rrrxr�rrr�$test_set_headers_from_header_objects�sz7TestRawDataManager.test_set_headers_from_header_objectscCsK|j�}d}tj||dd�|jt|�tjd��dS)NzSimple message.
r��X-Foo-Header: foo�X-Bar-Header: barz�            Content-Type: text/plain; charset="utf-8"
            X-Foo-Header: foo
            X-Bar-Header: bar
            Content-Transfer-Encoding: 7bit

            Simple message.
            )r�r�)rrr@rr:rZr[)rrrxrrr�test_set_headers_from_strings�sz0TestRawDataManager.test_set_headers_from_stringscCsF|j�}d}|jtd��tj||dd�WdQRXdS)NzSimple message.
zContent-Typer��Content-Type: foo/bar)r�)rr$r�rr@)rrrxrrr�<test_set_headers_with_invalid_duplicate_string_header_raises�s
zOTestRawDataManager.test_set_headers_with_invalid_duplicate_string_header_raisescCs^|j�}d}|jj}|jtd��'tj||d|dd�f�WdQRXdS)NzSimple message.
zContent-Typer�z foo/bar)rrr�r$r�rr@)rrrxr�rrr�<test_set_headers_with_invalid_duplicate_header_header_raises�szOTestRawDataManager.test_set_headers_with_invalid_duplicate_header_header_raisescCsW|j�}d}|jtd��,tj||dd�t|dj�WdQRXdS)NzSimple message.
za@fairly@@invalid@addressr��To: a@fairly@@invalid@addressrL)r�)rr$r�rr@�print�defects)rrrxrrr�4test_set_headers_with_defective_string_header_raises�szGTestRawDataManager.test_set_headers_with_defective_string_header_raisescCso|j�}d}|jj}|jtd��8tj||d|dd�f�t|dj�WdQRXdS)NzSimple message.
za@fairly@@invalid@addressr�rL)	rrr�r$r�rr@r�r�)rrrxr�rrr�4test_set_headers_with_defective_header_header_raises�szGTestRawDataManager.test_set_headers_with_defective_header_header_raisescCs7|j�}|jddd�|j|dd�dS)Nr�disposition�inlinezContent-Disposition)rr@r)rrrrr�test_set_disposition_inline�sz.TestRawDataManager.test_set_disposition_inlinecCs7|j�}|jddd�|j|dd�dS)Nrr�Z
attachmentzContent-Disposition)rr@r)rrrrr�test_set_disposition_attachment�sz2TestRawDataManager.test_set_disposition_attachmentcCs7|j�}|jddd�|j|dd�dS)Nrr�zContent-Disposition)rr@r)rrrrr�test_set_disposition_foo�sz+TestRawDataManager.test_set_disposition_foocCs7|j�}|jddd�|j|dd�dS)Nr�filenamezbar.txtzContent-Dispositionzattachment; filename="bar.txt")rr@r)rrrrr�test_set_filename�s
z$TestRawDataManager.test_set_filenamecCs=|j�}|jddddd�|j|dd�dS)Nrr�r�r�zbar.txtzContent-Dispositionzinline; filename="bar.txt")rr@r)rrrrr�(test_set_filename_and_disposition_inline�sz;TestRawDataManager.test_set_filename_and_disposition_inlinecCsK|j�}|jddd�|jt|�tjd�jd��dS)Nrr�uábárî.txta            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~rZr[r_)rrrrr�test_set_non_ascii_filename�sz.TestRawDataManager.test_set_non_ascii_filenameZ
text_plainrxZ	text_htmlrzZapplication_octet_stream�contentr��octet_streamZ
image_jpegr�r�Zmessage_rfc822Zmessage_external_body�
external-bodycCsN|j�}|j||dd�|j|dd�|j|dd�dS)	Nr��To: foo@example.com�From: bar@simple.netrrzfoo@example.comrszbar@simple.net)r�r�)rr@r)rr=�mimetyperrrr�!content_object_as_header_receiver�sz4TestRawDataManager.content_object_as_header_receivercCs:|j�}|j||dd�|j|dd�dS)Nr�r�zContent-Disposition)rr@r)rr=r�rrrr�-content_object_as_disposition_inline_receiversz@TestRawDataManager.content_object_as_disposition_inline_receivercCsq|j�}|j||dddd�|j|dd�|j|j�d�|j|djdd�dS)Nr�r�r�ubár.txtzContent-Dispositionuinline; filename="bár.txt")rr@r�get_filename�params)rr=r�rrrr�-content_object_as_non_ascii_filename_receivers
z@TestRawDataManager.content_object_as_non_ascii_filename_receivercCs:|j�}|j||dd�|j|dd�dS)NZcidZsome_random_stuffz
Content-ID)rr@r)rr=r�rrrr�content_object_as_cid_receiver
sz1TestRawDataManager.content_object_as_cid_receivercCsh|j�}ddddi}|j||d|�t|t�rMd|d<|j|dj|�dS)	NrubárrMrQr�zutf-8r|zContent-Type)rr@�
isinstancer:rr�)rr=r�rr�rrr�!content_object_as_params_receivers
z4TestRawDataManager.content_object_as_params_receiverN�rz)rxr��r�r�)r�r��r�r�)r�r�)r�)=r'r(r)rrTZclonerrrUr\r]r`rarbrcrfrgrhrnrorprurvryr{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�r�Zcontent_object_paramsr�r�r�r�r�rrrrrV�sz						

	







0		
rV�__main__)ZunittestZtest.test_emailrrrZZemailrZ
email.messagerZemail.contentmanagerrrrrVr'�mainrrrr�<module>s}���