Your IP : 216.73.216.147


Current Path : /opt/alt/python36/lib64/python3.6/test/test_email/__pycache__/
Upload File :
Current File : //opt/alt/python36/lib64/python3.6/test/test_email/__pycache__/test_contentmanager.cpython-36.pyc

3

� f��@s�ddlZddlmZmZddlZddlmZddlmZddl	m
Z
mZeGdd�de��ZeGdd	�d	e��Z
ed
kr�ej�dS)�N)�
TestEmailBase�parameterize)�policy)�EmailMessage)�ContentManager�raw_data_managerc
@s�eZdZejZeZd,d-d.d�Zdd	�Zd
d�Z	dd
�Z
Gdd�de�ZeddZ
Gdd�de�ZeddZdefdefd/d0defde
fd1d2defd3d4d5d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd S)6�TestContentManager��
text/plain��text��)Z	full_typeZ
maintype_only�null_keycCsNd	dd�}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/python36/lib64/python3.6/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)N)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||�x*|jj�D]\}}||kr.|j||�q.W|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)rrrr rr�
precedencerrrr� get_key_as_get_content_key_order sz3TestContentManager.get_key_as_get_content_key_orderc	Cs<t�}|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@seZdZdS)zTestContentManager.BaseThingN)�__name__�
__module__�__qualname__rrrr�	BaseThing7sr+�.�TestContentManager.BaseThingc@seZdZdS)zTestContentManager.ThingN)r(r)r*rrrr�Thing:sr.�TestContentManager.Thingr������	�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||�|j�}|j�}|j||dd�|j|dd�|j|j�|�dS)NcSs||d<|j|�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�}|j||�x*|jj�D]\}}||kr.|j||�q.W|j�}|j�}|j||�|j|dd�|j|j�|�dS)NcSsd|d<|j|�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)	rrAr!r"rr.rBrrC)	rrrr@rFrr#rrDrrr� set_key_as_set_content_key_orderYsz3TestContentManager.set_key_as_set_content_key_orderc
Cs@t�}|j�}|j�}|jt|j��|j||�WdQRXdS)N)rrr.r%r&�testobject_full_pathrB)rrrrDrrr�6test_set_content_raises_if_unknown_type_and_no_defaultjs
zITestContentManager.test_set_content_raises_if_unknown_type_and_no_defaultc
Cs<t�}|j�}d|d<|jt��|j|d�WdQRXdS)Nz
multipart/foozContent-Type�test)rr�assertRaises�	TypeErrorrB)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-TyperJ�To�abcc_sdS)Nr)�args�kwrrr�<lambda>szITestContentManager.test_set_content_calls_clear_content.<locals>.<lambda>�xyz)�content_manager)	rr>rrAr8rBZassertIsNonerrC)rrrrrr�$test_set_content_calls_clear_contentxs
z7TestContentManager.test_set_content_calls_clear_content)r	r
)rr)r
r)rr/)r
r.)r2r-)r3r+)r5r6)r7r8)r9N)r(r)r*r�defaultr�messager!rr$r'r8r+Zbaseobject_full_pathr.rHZset_key_paramsrErGrIrMrUrrrrr	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_ffdtdvdxe�ffe�dyfdg�Z7dhdi�Z8djdk�Z9dldm�Z:dndo�Z;dpdq�Z<drS)z�TestRawDataManager�<)�max_line_lengthrTcCs&|jtjd��}|jtj|�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&|jtjd��}|jtj|�d�dS)NzP            Content-Type: text/html

            <p>Basic text.</p>
            z<p>Basic text.</p>
)r[r\r]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_msgr\r]�encoderrr)rrrrr�test_get_text_plain_latin1�sz-TestRawDataManager.test_get_text_plain_latin1cCs&|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.
)r[r\r]rrr)rrrrr�+test_get_text_plain_latin1_quoted_printable�sz>TestRawDataManager.test_get_text_plain_latin1_quoted_printablecCs&|jtjd��}|jtj|�d�dS)Nz�            Content-Type: text/plain; charset="utf8"
            Content-Transfer-Encoding: base64

            QmFzw6xjIHTDq3h0Lgo=
            uBasìc tëxt.
)r[r\r]rrr)rrrrr�test_get_text_plain_utf8_base64�sz2TestRawDataManager.test_get_text_plain_utf8_base64cCs&|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�.
)r[r\r]rrr)rrrrr�-test_get_text_plain_bad_utf8_quoted_printable�sz@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.
            �ignore)�errorsuBasìc tëxt.
)r[r\r]rrr)rrrrr�;test_get_text_plain_bad_utf8_quoted_printable_ignore_errors�szNTestRawDataManager.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ÿ=
            rf)rguBasìc tëxt.
)r[r\r]rrr)rrrrr�8test_get_text_plain_utf8_base64_recoverable_bad_CTE_data�szKTestRawDataManager.test_get_text_plain_utf8_base64_recoverable_bad_CTE_datacCs8|jtjd��}|jt��tj|dd�WdQRXdS)NzJ            Content-Type: text/plain

            Basic text.
            rf)r)r[r\r]rKrLrr)rrrrr�test_get_text_invalid_keyword�sz0TestRawDataManager.test_get_text_invalid_keywordcCs^tjd�}xNdj�D]B}|j|d��,|j|j|d��}|jtj|�d�WdQRXqWdS)Nzu            Content-Type: {}
            Content-Transfer-Encoding: base64

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

            Ym9ndXMgZGF0YQ==
            rf)rg)r[r\r]rKrLrr)rrrrr�!test_get_non_text_invalid_keyword�sz4TestRawDataManager.test_get_non_text_invalid_keywordc	Cs4|jtjd��}|jt��tj|�WdQRXdS)Nzm            Content-Type: multipart/mixed; boundary="==="

            --===
            --===--
            )r[r\r]rKr&rr)rrrrr�test_get_raises_on_multipart�sz/TestRawDataManager.test_get_raises_on_multipartcCs�tjd�}x�dj�D]~}|j|d��h|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)
r\r]rlrmr[rnrr�assertIsInstancerWrZ	addressesZusername)rrorsrZsub_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.
            r7s
To: foo@ex)r[r\r]rrr)rrrrr�9test_get_message_non_rfc822_or_external_body_yields_bytesszLTestRawDataManager.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.
            T)�decodezutf-8)
rrrBrr8r\r]rCryr)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>
�html)rsz�            Content-Type: text/html; charset="utf-8"
            Content-Transfer-Encoding: 7bit

            <p>Simple message.</p>
            T)ryzutf-8)
rrrBrr8r\r]rCryr)rrrzrrr�test_set_text_html2sz%TestRawDataManager.test_set_text_htmlcCs`|j�}d}tj||dd�|jt|�tjd��|j|jdd�jd�|�|j|j	�|�dS)NzSimple message.
zlatin-1)�charsetz�            Content-Type: text/plain; charset="iso-8859-1"
            Content-Transfer-Encoding: 7bit

            Simple message.
            T)ryzutf-8)
rrrBrr8r\r]rCryr)rrrzrrr�test_set_text_charset_latin_1?sz0TestRawDataManager.test_set_text_charset_latin_1cCsb|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-8T)ry)rrrBr�bytesr\r]rarCryr)rrrzrrr�5test_set_text_short_line_minimal_non_ascii_heuristicsLszHTestRawDataManager.test_set_text_short_line_minimal_non_ascii_heuristicscCsb|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-8T)ry)rrrBrr�r\r]rarCryr)rrrzrrr�4test_set_text_long_line_minimal_non_ascii_heuristicsYszGTestRawDataManager.test_set_text_long_line_minimal_non_ascii_heuristicscCsb|j�}d
}tj||�|jt|�tjd
�jd��|j|jdd�j	d�|�|j|j
�|�dS)N�
r7usj'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-8T)ryz










u}









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.
z










z�            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: quoted-printable
            









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.
            )rrrBrr�r\r]rarCryr)rrrzrrr�=test_set_text_11_lines_long_line_minimal_non_ascii_heuristicsjszPTestRawDataManager.test_set_text_11_lines_long_line_minimal_non_ascii_heuristicscCsb|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-8T)ry)rrrBrr�r\r]rarCryr)rrrzrrr�*test_set_text_maximal_non_ascii_heuristics|sz=TestRawDataManager.test_set_text_maximal_non_ascii_heuristicscCsb|j�}d
}tj||�|jt|�tjd
�jd��|j|jdd�j	d�|�|j|j
�|�dS)Nr�r7uáàäéèęöő.
zn            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 8bit
            u+
            áàäéèęöő.
            zutf-8T)ryz










u









áàäéèęöő.
z










zx            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 8bit
            









u�            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 8bit
            










            áàäéèęöő.
            )rrrBrr�r\r]rarCryr)rrrzrrr�3test_set_text_11_lines_maximal_non_ascii_heuristics�szFTestRawDataManager.test_set_text_11_lines_maximal_non_ascii_heuristicscCsb|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-8T)ry)rrrBrr�r\r]rarCryr)rrrzrrr�4test_set_text_long_line_maximal_non_ascii_heuristics�s	zGTestRawDataManager.test_set_text_long_line_maximal_non_ascii_heuristicscCsb|j�}d
}tj|d�|jt|�tjd�jd��|j|jdd�j	d�|�|j|j
�|�dS)Nr�r7u�áàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöő.
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-8T)ryz










u�









áàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöő.
z










u�









áàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöő.
z










z�            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: quoted-printable
            









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.
            )rrrBrr�r\r]rarCryr)rrrzrrr�=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|j�}|jt��tj|ddd�WdQRXdS)Nuáàäéèęöő.
�7bit)�cte)rrK�UnicodeErrorrrB)rrrrr�,test_set_text_non_ascii_with_cte_7bit_raises�sz?TestRawDataManager.test_set_text_non_ascii_with_cte_7bit_raisescCs2|j�}|jt��tj|ddd�WdQRXdS)Nuáàäéèęöő.
�ascii)r~)rrKr�rrB)rrrrr�1test_set_text_non_ascii_with_charset_ascii_raises�szDTestRawDataManager.test_set_text_non_ascii_with_charset_ascii_raisesc
Cs4|j�}|jt��tj|dddd�WdQRXdS)Nuáàäéèęöő.
r�r�)r�r~)rrKr�rrB)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.orgrNzpolice@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)rrBrrr8r\r]rCrvrWr)rrrzZpayloadrrr�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|j|j	j
d�tjd��|j|j�|j
�|jt|j��t|��dS)
Nz
Escape reportr�zpolice@monty.orgrNzvictim@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=
            )rrBrrr�r\r]raZ	as_stringrrZrvrrWr8)rrrzrrr�4test_set_message_with_non_ascii_and_coercion_to_7bit�s

zGTestRawDataManager.test_set_message_with_non_ascii_and_coercion_to_7bitcCs|j�}|j�}x�dj�D]x}xrdj�D]f}|j||d��N|jt��}|j|||d�WdQRXt|j�}|j||�|j||�WdQRXq(WqWd}xrdj�D]f}|j||d��N|jt��}|j|||d�WdQRXt|j�}|j||�|j||�WdQRXq�WdS)Nzquoted-printable base64zrfc822 external-body)r�rs)r�z
external-bodyz8bit binary)	rrlrmrK�
ValueErrorrBr8Z	exceptionZassertIn)rrrzr�rs�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|j�}tj||dd�|jt|�tj	d��|j|j
dd�|�|j|j�|�WdQRXqWdS)Ns
bogus content)rz�image�jpegz�                    Content-Type: image/jpeg
                    Content-Transfer-Encoding: base64

                    Ym9ndXMgY29udGVudA==
                    T)ry)�	bytearray�
memoryviewrmrrrBrr8r\r]rCr)rrzrrrr�test_set_image_jpg8sz%TestRawDataManager.test_set_image_jpgcCsj|j�}ddd}|j|dddd�|jt|�tjd�jd	��|j|jd
d�|�|j|j�|�dS)Nsb�gus	con
t
ent �z�dZaudioZaifzquoted-printable)r�a            Content-Type: audio/aif
            Content-Transfer-Encoding: quoted-printable
            MIME-Version: 1.0

            b=FFgus=09con=0At=0Dent=20zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz=
            zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzlatin-1T)ry)	rrBrr�r\r]rarCr)rrrzrrr�,test_set_audio_aif_with_quoted_printable_cteHs	z?TestRawDataManager.test_set_audio_aif_with_quoted_printable_ctecCsr|j�}ddd}|j|dddd�|jt|�tjd�jd	�d
d�|j|jdd
�|�|j|j�|�dS)Nsb�gus	con
t
ent r�r�ZvideoZmpegZbinary)r�z~            Content-Type: video/mpeg
            Content-Transfer-Encoding: binary
            MIME-Version: 1.0

            r�s7b�gus	con
t
ent zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzs=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzT)ry)	rrBrr�r\r]rarCr)rrrzrrr�#test_set_video_mpeg_with_binary_cte^s
z6TestRawDataManager.test_set_video_mpeg_with_binary_ctecCsv|j�}dddd}|j|dddd�|jt|�tjd	�jd
�dd�|j|jd
d�|�|j|j�|�dS)Nsb�gus	con
t
ent
r�rY�
�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)ry)	rrBrr�r\r]rarCr)rrrzrrr�/test_set_application_octet_stream_with_8bit_cteos
zBTestRawDataManager.test_set_application_octet_stream_with_8bit_ctecCsV|j�}d}|jj}tj|||dd�|dd�|dd�fd�|jt|�tjd��dS)	NzSimple message.
rNzfoo@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_factoryrrBrr8r\r])rrrzr�rrr�$test_set_headers_from_header_objects�sz7TestRawDataManager.test_set_headers_from_header_objectscCs6|j�}d}tj||dd�|jt|�tjd��dS)NzSimple message.
�X-Foo-Header: foo�X-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.
            )r�r�)rrrBrr8r\r])rrrzrrr�test_set_headers_from_strings�sz0TestRawDataManager.test_set_headers_from_stringscCs8|j�}d}|jtd��tj||dd�WdQRXdS)NzSimple message.
zContent-Type�Content-Type: foo/bar)r�)r�)rr%r�rrB)rrrzrrr�<test_set_headers_with_invalid_duplicate_string_header_raises�s
zOTestRawDataManager.test_set_headers_with_invalid_duplicate_string_header_raisesc
CsH|j�}d}|jj}|jtd��tj|||dd�fd�WdQRXdS)NzSimple message.
zContent-Typez foo/bar)r�)rrr�r%r�rrB)rrrzr�rrr�<test_set_headers_with_invalid_duplicate_header_header_raises�szOTestRawDataManager.test_set_headers_with_invalid_duplicate_header_header_raisescCsF|j�}d}|jtd��$tj||dd�t|dj�WdQRXdS)NzSimple message.
za@fairly@@invalid@address�To: a@fairly@@invalid@address)r�rN)r�)rr%r�rrB�print�defects)rrrzrrr�4test_set_headers_with_defective_string_header_raises�szGTestRawDataManager.test_set_headers_with_defective_string_header_raisesc
CsV|j�}d}|jj}|jtd��,tj|||dd�fd�t|dj�WdQRXdS)NzSimple message.
za@fairly@@invalid@addressrN)r�)	rrr�r%r�rrBr�r�)rrrzr�rrr�4test_set_headers_with_defective_header_header_raises�szGTestRawDataManager.test_set_headers_with_defective_header_header_raisescCs*|j�}|jddd�|j|dd�dS)Nr�inline)�dispositionzContent-Disposition)rrBr)rrrrr�test_set_disposition_inline�sz.TestRawDataManager.test_set_disposition_inlinecCs*|j�}|jddd�|j|dd�dS)NrZ
attachment)r�zContent-Disposition)rrBr)rrrrr�test_set_disposition_attachment�sz2TestRawDataManager.test_set_disposition_attachmentcCs*|j�}|jddd�|j|dd�dS)Nr)r�zContent-Disposition)rrBr)rrrrr�test_set_disposition_foo�sz+TestRawDataManager.test_set_disposition_foocCs*|j�}|jddd�|j|dd�dS)Nrzbar.txt)�filenamezContent-Dispositionzattachment; filename="bar.txt")rrBr)rrrrr�test_set_filename�s
z$TestRawDataManager.test_set_filenamecCs,|j�}|jdddd�|j|dd�dS)Nrr�zbar.txt)r�r�zContent-Dispositionzinline; filename="bar.txt")rrBr)rrrrr�(test_set_filename_and_disposition_inline�sz;TestRawDataManager.test_set_filename_and_disposition_inlinecCs6|j�}|jddd�|jt|�tjd�jd��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�)rrBrr�r\r]ra)rrrrr�test_set_non_ascii_filename�sz.TestRawDataManager.test_set_non_ascii_filenamerzr|�contentr��octet_streamr�r��
external-body)Z
text_plainZ	text_htmlZapplication_octet_streamZ
image_jpegZmessage_rfc822Zmessage_external_bodycCsB|j�}|j|f|�ddi�|j|dd�|j|dd�dS)	Nr��To: foo@example.com�From: bar@simple.netrtzfoo@example.comruzbar@simple.net)r�r�)rrBr)rr?�mimetyperrrr�!content_object_as_header_receiver�sz4TestRawDataManager.content_object_as_header_receivercCs2|j�}|j|f|�ddi�|j|dd�dS)Nr�r�zContent-Disposition)rrBr)rr?r�rrrr�-content_object_as_disposition_inline_receiversz@TestRawDataManager.content_object_as_disposition_inline_receivercCsZ|j�}|j|f|�ddd��|j|dd�|j|j�d�|j|djdd�dS)Nr�ubár.txt)r�r�zContent-Dispositionuinline; filename="bár.txt"r�)rrBr�get_filename�params)rr?r�rrrr�-content_object_as_non_ascii_filename_receivers
z@TestRawDataManager.content_object_as_non_ascii_filename_receivercCs2|j�}|j|f|�ddi�|j|dd�dS)NZcidZsome_random_stuffz
Content-ID)rrBr)rr?r�rrrr�content_object_as_cid_receiver
sz1TestRawDataManager.content_object_as_cid_receivercCsP|j�}ddd�}|j|f|�d|i�t|t�r:d|d<|j|dj|�dS)NubárrS)rrOr�zutf-8r~zContent-Type)rrB�
isinstancer8rr�)rr?r�rr�rrr�!content_object_as_params_receivers

z4TestRawDataManager.content_object_as_params_receiverN�r|)rzr��r�r�)r�r��r�r�)r�r�)r�)=r(r)r*rrVZclonerrrWr^r_rbrcrdrerhrirjrprqrrrwrxr{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�r�Zcontent_object_paramsr�r�r�r�r�rrrrrX�sz					

	







0		
rX�__main__)ZunittestZtest.test_emailrrr\ZemailrZ
email.messagerZemail.contentmanagerrrrrXr(�mainrrrr�<module>s }