HEX
Server: Microsoft-IIS/10.0
System: Windows NT ITPWINWEBSVR22 10.0 build 20348 (Windows Server 2022) AMD64
User: www.conferencesearch.co.uk (0)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: D:/Python311/Lib/test/test_email/__pycache__/test_contentmanager.cpython-311.opt-2.pyc
�

��Vc`�����ddlZddlmZmZddlZddlmZddlmZddl	m
Z
mZeGd�de����ZeGd�d	e����Z
ed
krej��dSdS)�N)�
TestEmailBase�parameterize)�policy)�EmailMessage)�ContentManager�raw_data_managerc
���eZdZejZeZdddd�Zd�Zd�Z	d�Z
Gd�d	e��Zed
zdzZ
Gd�d
e��Zed
zdzZdefdefdddefde
fdddefdddd�Zd�Zd�Zd�Zd�Zd �Zd!S)"�TestContentManager)��
text/plain)��text)��)�	full_type�
maintype_only�null_keyc���d	d�}t��}|�||��|���}d|d<d|d<|�|�|d���d��dS)
Nc��|d}||fS�N�X-Bar-Header�)�msg�foo�bars   �7D:\Python311\Lib\test\test_email\test_contentmanager.py�
foo_getterzATestContentManager.get_key_as_get_content_key.<locals>.foo_getters���n�%�C���8�O�r�Content-Typerrr�r)rr�N)r�add_get_handler�
_make_message�assertEqual�get_content)�self�order�keyr�cm�ms      r�get_key_as_get_content_keyz-TestContentManager.get_key_as_get_content_keys���	�	�	�	��
�
��
���3�
�+�+�+���� � ��(��.��!��.���������u��5�5�~�F�F�F�F�Frc�h�d�}d�}t��}|�||��|j���D]!\}}||kr|�||���"|���}d|d<d|d<d|d<|�|�|��d��dS)	Nc��|dSrr�rs r�
bar_getterzGTestContentManager.get_key_as_get_content_key_order.<locals>.bar_getter!�
���~�&�&rc��|dS�N�X-Foo-Headerrr.s rrzGTestContentManager.get_key_as_get_content_key_order.<locals>.foo_getter#r0rrrrrrr3)rr"�get_key_params�valuesr#r$r%)r&r'r(r/rr)�
precedencer*s        r� get_key_as_get_content_key_orderz3TestContentManager.get_key_as_get_content_key_order s���	'�	'�	'�	'�	'�	'�
�
�
��
���3�
�+�+�+�#�2�9�9�;�;�	4�	4�O�J���E�!�
4��"�"�3�
�3�3�3����� � ��(��.��!��.��!��.���������*�*�U�4�4�4�4�4rc���t��}|���}d|d<|�td��5|�|��ddd��dS#1swxYwYdS)Nrr)rr#�assertRaisesRegex�KeyErrorr%�r&r)r*s   r�:test_get_content_raises_if_unknown_mimetype_and_no_defaultzMTestContentManager.test_get_content_raises_if_unknown_mimetype_and_no_default0s���
�
�
����� � ��(��.��
�
#�
#�H�l�
;�
;�	�	��N�N�1����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A&�&A*�-A*c��eZdZdS)�TestContentManager.BaseThingN��__name__�
__module__�__qualname__rrr�	BaseThingr>7��������rrC�.r>c��eZdZdS)�TestContentManager.ThingNr?rrr�ThingrG:rDrrHrGrr)r
rG)rrH��)�r>)�rC�)�	zbuiltins.str)�
�str)�N)�type�	full_path�qualname�name�	base_type�base_full_path�
base_qualname�	base_name�str_type�
str_full_path�str_namerc�^�dd�}t��}|�||��|���}|���}|�||d���|�|dd��|�|���|��dS)Nc�:�||d<|�|��dSr2��set_payload)r�objrs   r�
foo_setterzATestContentManager.set_key_as_set_content_key.<locals>.foo_setterNs$��"%�C����O�O�C� � � � � rrr r3r!)r�add_set_handlerr#rH�set_contentr$�get_payload)r&r'r(rbr)r*�msg_objs       r�set_key_as_set_content_keyz-TestContentManager.set_key_as_set_content_keyMs���	!�	!�	!�	!��
�
��
���3�
�+�+�+���� � ���*�*�,�,��
���q�'�u��-�-�-�����>�*�E�2�2�2���������'�2�2�2�2�2rc���d�}d�}t��}|�||��|j���D]!\}}||kr|�||���"|���}|���}|�||��|�|dd��|�|���|��dS)Nc�:�d|d<|�|��dS)Nr�X-FooBar-Headerr_�rras  rrbzGTestContentManager.set_key_as_set_content_key_order.<locals>.foo_setterZs%��%*�C�!�"��O�O�C� � � � � rc��d|d<dS)Nrrjrrks  r�
bar_setterzGTestContentManager.set_key_as_set_content_key_order.<locals>.bar_setter]s��%*�C�!�"�"�"rrjr)	rrcr4r5r#rHrdr$re)	r&r'r(rbrmr)r6r*rfs	         r� set_key_as_set_content_key_orderz3TestContentManager.set_key_as_set_content_key_orderYs���	!�	!�	!�	+�	+�	+�
�
�
��
���3�
�+�+�+�#�2�9�9�;�;�	4�	4�O�J���E�!�
4��"�"�3�
�3�3�3����� � ���*�*�,�,��
���q�'�"�"�"�����,�-�u�5�5�5���������'�2�2�2�2�2rc��t��}|���}|���}|�t|j��5|�||��ddd��dS#1swxYwYdSr!)rr#rHr9r:�testobject_full_pathrd)r&r)r*rfs    r�6test_set_content_raises_if_unknown_type_and_no_defaultzITestContentManager.test_set_content_raises_if_unknown_type_and_no_defaultjs���
�
�
����� � ���*�*�,�,��
�
#�
#�H�d�.G�
H�
H�	'�	'��N�N�1�g�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	'�	's�A;�;A?�A?c���t��}|���}d|d<|�t��5|�|d��ddd��dS#1swxYwYdS)Nz
multipart/foor�test)rr#�assertRaises�	TypeErrorrdr;s   r�.test_set_content_raises_if_called_on_multipartzATestContentManager.test_set_content_raises_if_called_on_multipartqs���
�
�
����� � ��+��.��
�
�
�y�
)�
)�	&�	&��N�N�1�f�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&��A&�&A*�-A*c���|���}d|d<d|d<d|d<|�d��t��}|�td���|�d	|�
��|�|d��|�|d��|�|dd��|�|�����dS)NrzContent-Fooz	text/htmlrrs�To�abcc��dSr!r)�args�kws  r�<lambda>zITestContentManager.test_set_content_calls_clear_content.<locals>.<lambda>s��D�r�xyz)�content_manager)	r#r`rrcrPrd�assertIsNoner$re)r&r*r)s   r�$test_set_content_calls_clear_contentz7TestContentManager.test_set_content_calls_clear_contentxs������ � �� ��-��'��.����$��	�
�
�e����
�
�
��
���3� 8� 8�9�9�9�	�
�
�e�R�
�0�0�0����!�M�*�+�+�+����!�N�+�,�,�,�����4��&�)�)�)����!�-�-�/�/�*�*�*�*�*rN)r@rArBr�defaultr�messager4r+r7r<rPrC�baseobject_full_pathrHrp�set_key_paramsrgrnrqrvr�rrrr
r
	ss�������^�F��G�/�(�$�
�
�N�	G�	G�	G�5�5�5� ���
�
�
�
�
�C�
�
�
�#�c�>�,J�J��
�
�
�
�
�	�
�
�
�#�c�>�,F�F����L��!5�7�=�*���,��!5�7�A�.���J�1�(�'�

�

�N�
3�
3�
3�3�3�3�"'�'�'�&�&�&�+�+�+�+�+rr
c���eZdZej�de���ZeZd�Z	d�Z
d�Zd�Zd�Z
d�Zd	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d�Z$d�Z%d �Z&d!�Z'd"�Z(d#�Z)d$�Z*d%�Z+d&�Z,d'�Z-d(�Z.d)�Z/d*�Z0d+�Z1d,�Z2d-�Z3d.�Z4d/�Z5d0�Z6d1�Z7d2�Z8d3�Z9d4d5d6d7e��d8fe��d9fd:�Z:d;�Z;d<�Z<d=�Z=d>�Z>d?�Z?d@S)A�TestRawDataManager�<)�max_line_lengthr�c��|�tjd����}|�t	j|��d��dS)N�J            Content-Type: text/plain

            Basic text.
            zBasic text.
��_str_msg�textwrap�dedentr$rr%�r&r*s  r�test_get_text_plainz&TestRawDataManager.test_get_text_plain�sR���M�M�(�/�+���
�
��
	
���)�5�a�8�8�/�J�J�J�J�Jrc��|�tjd����}|�t	j|��d��dS)NzP            Content-Type: text/html

            <p>Basic text.</p>
            z<p>Basic text.</p>
r�r�s  r�test_get_text_htmlz%TestRawDataManager.test_get_text_html�s]���M�M�(�/�+���
�
��
	
���)�5�a�8�8�/�	1�	1�	1�	1�	1rc���|�tjd���d����}|�tj|��d��dS)Nu\            Content-Type: text/plain; charset=latin1

            Basìc tëxt.
            �latin1�Basìc tëxt.
)�
_bytes_msgr�r��encoder$rr%r�s  r�test_get_text_plain_latin1z-TestRawDataManager.test_get_text_plain_latin1�sb���O�O�H�O�-������!�!�	
#�
#��
	
���)�5�a�8�8�:K�L�L�L�L�Lrc��|�tjd����}|�t	j|��d��dS)Nz�            Content-Type: text/plain; charset="latin-1"
            Content-Transfer-Encoding: quoted-printable

            Bas=ECc t=EBxt.
            r�r�r�s  r�+test_get_text_plain_latin1_quoted_printablez>TestRawDataManager.test_get_text_plain_latin1_quoted_printable��S���M�M�(�/�+���
�
��	
���)�5�a�8�8�:K�L�L�L�L�Lrc��|�tjd����}|�t	j|��d��dS)Nz�            Content-Type: text/plain; charset="utf8"
            Content-Transfer-Encoding: base64

            QmFzw6xjIHTDq3h0Lgo=
            r�r�r�s  r�test_get_text_plain_utf8_base64z2TestRawDataManager.test_get_text_plain_utf8_base64�r�rc��|�tjd����}|�t	j|��d��dS)N��            Content-Type: text/plain; charset="utf8"
            Content-Transfer-Encoding: quoted-printable

            Bas=c3=acc t=c3=abxt=fd.
            uBasìc tëxt�.
r�r�s  r�-test_get_text_plain_bad_utf8_quoted_printablez@TestRawDataManager.test_get_text_plain_bad_utf8_quoted_printable�sS���M�M�(�/�+���
�
��	
���)�5�a�8�8�:N�O�O�O�O�Orc��|�tjd����}|�t	j|d���d��dS)Nr��ignore��errorsr�r�r�s  r�;test_get_text_plain_bad_utf8_quoted_printable_ignore_errorszNTestRawDataManager.test_get_text_plain_bad_utf8_quoted_printable_ignore_errors��b���M�M�(�/�+���
�
��	
���)�5�a��I�I�I�*�	,�	,�	,�	,�	,rc��|�tjd����}|�t	j|d���d��dS)Nu�            Content-Type: text/plain; charset="utf8"
            Content-Transfer-Encoding: base64

            QmFzw6xjIHTDq3h0Lgoÿ=
            r�r�r�r�r�s  r�8test_get_text_plain_utf8_base64_recoverable_bad_CTE_datazKTestRawDataManager.test_get_text_plain_utf8_base64_recoverable_bad_CTE_data�r�rc���|�tjd����}|�t��5tj|d���ddd��dS#1swxYwYdS)Nr�r�r �r�r�r�rtrurr%r�s  r�test_get_text_invalid_keywordz0TestRawDataManager.test_get_text_invalid_keyword�s����M�M�(�/�+���
�
��
�
�
�y�
)�
)�	:�	:��(���9�9�9�9�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:�	:�	:rwc�^�tjd��}d���D]�}|�|���5|�|�|dz����}|�tj|��d��ddd��n#1swxYwY��dS)Nzu            Content-Type: {}
            Content-Transfer-Encoding: base64

            Ym9ndXMgZGF0YQ==
            zaudio image video application)�maintypez/foos
bogus data)	r�r��split�subTestr��formatr$rr%)r&�templater�r*s    r�test_get_non_textz$TestRawDataManager.test_get_non_text�s���?�$����8�=�=�?�?�	Q�	Q�H����x��0�0�
Q�
Q��M�M�(�/�/�(�6�/�"B�"B�C�C��� � �!1�!=�a�!@�!@�-�P�P�P�
Q�
Q�
Q�
Q�
Q�
Q�
Q�
Q�
Q�
Q�
Q����
Q�
Q�
Q�
Q��	Q�	Qs�AB!�!B%	�(B%	c���|�tjd����}|�t��5tj|d���ddd��dS#1swxYwYdS)Nz|            Content-Type: image/jpg
            Content-Transfer-Encoding: base64

            Ym9ndXMgZGF0YQ==
            r�r�r�r�s  r�!test_get_non_text_invalid_keywordz4TestRawDataManager.test_get_non_text_invalid_keyword�s����M�M�(�/�+���
�
���
�
�y�
)�
)�	=�	=��(��8�<�<�<�<�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�	=�	=rwc���|�tjd����}|�t��5tj|��ddd��dS#1swxYwYdS)Nzm            Content-Type: multipart/mixed; boundary="==="

            --===
            --===--
            )r�r�r�rtr:rr%r�s  r�test_get_raises_on_multipartz/TestRawDataManager.test_get_raises_on_multipart�s����M�M�(�/�+���
�
���
�
�x�
(�
(�	,�	,��(��+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s�A$�$A(�+A(c�F�tjd��}d���D]�}|�|���5|�|�|����}t
j|��}|�||j	��|�
t
j|��d��|�
|dd��|�
|djdjd	��ddd��n#1swxYwY��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)
r�r�r�r�r�r�rr%�assertIsInstancer�r$�	addresses�username)r&r�r�r*�sub_msgs     r�)test_get_message_rfc822_and_external_bodyz<TestRawDataManager.test_get_message_rfc822_and_external_bodysl���?�$����.�3�3�5�5�	O�	O�G����g��.�.�
O�
O��M�M�(�/�/�'�":�":�;�;��*�6�q�9�9���%�%�g�t�|�<�<�<�� � �!1�!=�g�!F�!F�!7�9�9�9�� � ����0A�B�B�B�� � ����!:�1�!=�!F��N�N�N�
O�
O�
O�
O�
O�
O�
O�
O�
O�
O�
O����
O�
O�
O�
O��	O�	Os�CD�D	�D	c��|�tjd����}|�t	j|��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.
            rOs
To: foo@exr�r�s  r�9test_get_message_non_rfc822_or_external_body_yields_byteszLTestRawDataManager.test_get_message_non_rfc822_or_external_body_yields_bytess[���M�M�(�/�+���
�
��	
���)�5�a�8�8��"��=�}�M�M�M�M�Mrc��|���}d}tj||��|�t	|��tjd����|�|�d����d��|��|�|�	��|��dS)N�Simple message.
z�            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 7bit

            Simple message.
            T��decode�utf-8�
r#rrdr$rPr�r�rer�r%�r&r*�contents   r�test_set_text_plainz&TestRawDataManager.test_set_text_plain%s������ � ��%���$�Q��0�0�0�����Q�����2�"�"�	�	�	�	
������d��3�3�:�:�7�C�C�W�M�M�M���������'�2�2�2�2�2rc��|���}d}tj||��|�t	|��tjd����|�|�d����d��d��|�|�	��d��dS)Nrzp            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 7bit


            Tr�r��
r�r�s   r�test_set_text_plain_nullz+TestRawDataManager.test_set_text_plain_null2s������ � �����$�Q��0�0�0�����Q�����2�"�"�	�	�	�	
������d��3�3�:�:�7�C�C�T�J�J�J���������$�/�/�/�/�/rc��|���}d}tj||d���|�t	|��tjd����|�|�d����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�s   r�test_set_text_htmlz%TestRawDataManager.test_set_text_html?s������ � ��,���$�Q���@�@�@�@�����Q�����2�"�"�	�	�	�	
������d��3�3�:�:�7�C�C�W�M�M�M���������'�2�2�2�2�2rc��|���}d}tj||d���|�t	|��tjd����|�|�d����d��|��|�|�	��|��dS)Nr��latin-1��charsetz�            Content-Type: text/plain; charset="iso-8859-1"
            Content-Transfer-Encoding: 7bit

            Simple message.
            Tr�r�r�r�s   r�test_set_text_charset_latin_1z0TestRawDataManager.test_set_text_charset_latin_1Ls������ � ��%���$�Q���C�C�C�C�����Q�����2�"�"�	�	�	�	
������d��3�3�:�:�7�C�C�W�M�M�M���������'�2�2�2�2�2rc��|���}d}tj||��|�t	|��tjd����|�|�d����d��|��|�|�	��|��dS)NzTSimple but long message that is over 78 characters long to force transfer encoding.
z�            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: quoted-printable

            Simple but long message that is over 78 characters long to =
            force transfer encoding.
            Tr�r�r�r�s   r�(test_set_text_plain_long_line_heuristicsz;TestRawDataManager.test_set_text_plain_long_line_heuristicsYs������ � ��9���$�Q��0�0�0�����Q�����2�"�"�	�	�	�	
������d��3�3�:�:�7�C�C�W�M�M�M���������'�2�2�2�2�2rc��|���}d}tj||��|�t	|��tjd���d����|�|�d����	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��r#rrdr$�bytesr�r�r�rer�r%r�s   r�5test_set_text_short_line_minimal_non_ascii_heuristicszHTestRawDataManager.test_set_text_short_line_minimal_non_ascii_heuristicshs������ � ��L���$�Q��0�0�0�����q���8�?�4�$�$�
�����	"�	"�	"�	
������d��3�3�:�:�7�C�C�W�M�M�M���������'�2�2�2�2�2rc��|���}d}tj||��|�t	|��tjd���d����|�|�d����	d��|��|�|�
��|��dS)Nusj'ai un problème de python. il est sorti de son vivarium.  et là il est monté sur moi et il commence à m'éto.
a*            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: quoted-printable

            j'ai un probl=C3=A8me de python. il est sorti de son vivari=
            um.  et l=C3=A0 il est mont=C3=A9 sur moi et il commence =
            =C3=A0 m'=C3=A9to.
            r�Tr�r�r�s   r�4test_set_text_long_line_minimal_non_ascii_heuristicszGTestRawDataManager.test_set_text_long_line_minimal_non_ascii_heuristicsus������ � ��#��	�$�Q��0�0�0�����q���8�?�4�$�$������	"�	"�	"�	
������d��3�3�:�:�7�C�C�W�M�M�M���������'�2�2�2�2�2rc��|���}d}tj||��|�t	|��tjd���d����|�|�d����	d��|��|�|�
��|��dS)Nu}









j'ai un problème de python. il est sorti de son vivarium.  et là il est monté sur moi et il commence à m'éto.
a@            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: quoted-printable
            










            j'ai un probl=C3=A8me de python. il est sorti de son vivari=
            um.  et l=C3=A0 il est mont=C3=A9 sur moi et il commence =
            =C3=A0 m'=C3=A9to.
            r�Tr�r�r�s   r�=test_set_text_11_lines_long_line_minimal_non_ascii_heuristicszPTestRawDataManager.test_set_text_11_lines_long_line_minimal_non_ascii_heuristics�s������ � ��#��	�$�Q��0�0�0�����q���8�?�4�$�$������	"�	"�	"�	
������d��3�3�:�:�7�C�C�W�M�M�M���������'�2�2�2�2�2rc��|���}d}tj||��|�t	|��tjd���d����|�|�d����	d��|��|�|�
��|��dS)N�áàäéèęöő.
u�            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 8bit

            áàäéèęöő.
            r�Tr�r�r�s   r�*test_set_text_maximal_non_ascii_heuristicsz=TestRawDataManager.test_set_text_maximal_non_ascii_heuristics�s������ � ��'���$�Q��0�0�0�����q���8�?�4�$�$�
�����	"�	"�	"�	
������d��3�3�:�:�7�C�C�W�M�M�M���������'�2�2�2�2�2rc��|���}d}tj||��|�t	|��tjd���d����|�|�d����	d��|��|�|�
��|��dS)Nu









áàäéèęöő.
u�            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 8bit
            










            áàäéèęöő.
            r�Tr�r�r�s   r�3test_set_text_11_lines_maximal_non_ascii_heuristicszFTestRawDataManager.test_set_text_11_lines_maximal_non_ascii_heuristics�s������ � ��1���$�Q��0�0�0�����q���8�?�4�$�$�
�����	"�	"�	"�	
������d��3�3�:�:�7�C�C�W�M�M�M���������'�2�2�2�2�2rc��|���}d}tj||��|�t	|��tjd���d����|�|�d����	d��|��|�|�
��|��dS)Nu�áàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöőáàäéèęöő.
a�            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: base64

            w6HDoMOkw6nDqMSZw7bFkcOhw6DDpMOpw6jEmcO2xZHDocOgw6TDqcOoxJnD
            tsWRw6HDoMOkw6nDqMSZw7bFkcOhw6DDpMOpw6jEmcO2xZHDocOgw6TDqcOo
            xJnDtsWRw6HDoMOkw6nDqMSZw7bFkcOhw6DDpMOpw6jEmcO2xZHDocOgw6TD
            qcOoxJnDtsWRw6HDoMOkw6nDqMSZw7bFkcOhw6DDpMOpw6jEmcO2xZHDocOg
            w6TDqcOoxJnDtsWRLgo=
            r�Tr�r�r�s   r�4test_set_text_long_line_maximal_non_ascii_heuristicszGTestRawDataManager.test_set_text_long_line_maximal_non_ascii_heuristics�s������ � ��Y��	�$�Q��0�0�0�����q���8�?�	4�	$�	$������		"�		"�		"�	
������d��3�3�:�:�7�C�C�W�M�M�M���������'�2�2�2�2�2rc��|���}d}tj|d��|�t	|��tjd���d����|�|�d����	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�s   r�=test_set_text_11_lines_long_line_maximal_non_ascii_heuristicszPTestRawDataManager.test_set_text_11_lines_long_line_maximal_non_ascii_heuristics�s���
��� � ��Y��	�$�Q�)n�	o�	o�	o�	
����q���8�?�4�$�$������	"�	"�	"� 	
������d��3�3�:�:�7�C�C�W�M�M�M���������'�2�2�2�2�2rc���|���}|�t��5tj|dd���ddd��dS#1swxYwYdS)Nr��7bit��cte�r#rt�UnicodeErrorrrdr�s  r�,test_set_text_non_ascii_with_cte_7bit_raisesz?TestRawDataManager.test_set_text_non_ascii_with_cte_7bit_raises�s������ � ��
�
�
�|�
,�
,�	N�	N��(��+@�f�M�M�M�M�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N����	N�	N�	N�	N�	N�	N��A�A�Ac���|���}|�t��5tj|dd���ddd��dS#1swxYwYdS)Nr��asciir�r�r�s  r�1test_set_text_non_ascii_with_charset_ascii_raiseszDTestRawDataManager.test_set_text_non_ascii_with_charset_ascii_raises�s������ � ��
�
�
�|�
,�
,�	S�	S��(��+@�'�R�R�R�R�	S�	S�	S�	S�	S�	S�	S�	S�	S�	S�	S�	S����	S�	S�	S�	S�	S�	Sr�c���|���}|�t��5tj|ddd���ddd��dS#1swxYwYdS)Nr�r�r�)r�r�r�r�s  r�>test_set_text_non_ascii_with_cte_7bit_and_charset_ascii_raiseszQTestRawDataManager.test_set_text_non_ascii_with_cte_7bit_and_charset_ascii_raises�s������ � ��
�
�
�|�
,�
,�	_�	_��(��+@�f�V]�^�^�^�^�	_�	_�	_�	_�	_�	_�	_�	_�	_�	_�	_�	_����	_�	_�	_�	_�	_�	_s�A�A�Ac���|���}d|d<|���}d|d<d|d<d|d<|�d��tj||��|�t	|��tjd	����|�d
��}|�||j	��|�t	|��t	|����|�|�
��|j	��|�t	|�
����t	|����dS)NzForwarded message�Subjectzpython@vivarium.orgry�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)r#rdrr$rPr�r�rer�r�r%)r&r*r��payloads    r�test_set_messagez#TestRawDataManager.test_set_message�sC����� � ��*��)���$�$�&�&��-���
�,����3��	�����6�7�7�7��$�Q��0�0�0�����Q�����
2�
"�
"�
	�
	�
	��-�-��"�"�����g�t�|�4�4�4�����W���s�7�|�|�4�4�4����a�m�m�o�o�t�|�<�<�<�����Q�]�]�_�_�-�-�s�7�|�|�<�<�<�<�<rc���|���}d|d<|���}d|d<d|d<d|d<|�d��tj||��|�t	|��tjd	���d
����|�|�|j	j
���tjd����|�|���|j
��|�t|�����t|����dS)
Nz
Escape reportr�r�ryzvictim@monty.orgr��Helpu: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�)�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=
            )r#rdrr$r�r�r�r��	as_stringrr�r�r%r�rPr�s   r�4test_set_message_with_non_ascii_and_coercion_to_7bitzGTestRawDataManager.test_set_message_with_non_ascii_and_coercion_to_7bitsP����� � ��&��)���$�$�&�&��*���
�,����#��	�����)�	*�	*�	*��$�Q��0�0�0�����q���8�?�
4�
$�
$������
	"�
	"�
	"�&	
������$�+�2M��N�N�!��*���	�	�	� 	
���a�m�m�o�o�t�|�<�<�<�����Q�]�]�_�_�-�-�s�7�|�|�<�<�<�<�<rc	���|���}|���}d���D]�}d���D]�}|�||���5|�t��5}|�|||���ddd��n#1swxYwYt
|j��}|�||��|�||��ddd��n#1swxYwY����d}d���D]�}|�||���5|�t��5}|�|||���ddd��n#1swxYwYt
|j��}|�||��|�||��ddd��n#1swxYwY��dS)Nzquoted-printable base64r�)r�r�r��
external-bodyz8bit binary)	r#r�r�rt�
ValueErrorrdrP�	exception�assertIn)r&r*r�r�r��ar�excs       r�#test_set_message_invalid_cte_raisesz6TestRawDataManager.test_set_message_invalid_cte_raises@s������ � ���$�$�&�&��,�2�2�4�4�	0�	0�C�1�7�7�9�9�
0�
0���\�\�c�7�\�;�;�0�0��*�*�:�6�6�A�"��
�
�g�w�C�
�@�@�@�A�A�A�A�A�A�A�A�A�A�A����A�A�A�A��b�l�+�+�C��M�M�#�s�+�+�+��M�M�'�3�/�/�/�0�0�0�0�0�0�0�0�0�0�0����0�0�0�0��
0�"�� �&�&�(�(�	,�	,�C����#�w��7�7�
,�
,��&�&�z�2�2�=�b��M�M�'�7��M�<�<�<�=�=�=�=�=�=�=�=�=�=�=����=�=�=�=��"�,�'�'���
�
�c�3�'�'�'��
�
�g�s�+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��	,�	,sn�,D�B,	� D�,B0
�0D�3B0
�4AD�D�
D�?G�E?�3G�?F�G�F�AG�G	�G	c�
�dtd��td��fD]�}|�|���5|���}t	j||dd��|�t|��tj	d����|�|�
d���|��|�|���|��ddd��n#1swxYwY��dS)Ns
bogus content)r��image�jpegz�                    Content-Type: image/jpeg
                    Content-Transfer-Encoding: base64

                    Ym9ndXMgY29udGVudA==
                    Tr�)�	bytearray�
memoryviewr�r#rrdr$rPr�r�rer%)r&r�r*s   r�test_set_image_jpgz%TestRawDataManager.test_set_image_jpgTsC��(�!�"2�3�3�"�#3�4�4�6�
	;�
	;�G����g��.�.�

;�

;��&�&�(�(�� �,�Q���&�I�I�I�� � ��Q�����:�*�*����� � ����d��!;�!;�W�E�E�E�� � ������'�:�:�:�

;�

;�

;�

;�

;�

;�

;�

;�

;�

;�

;����

;�

;�

;�

;��
	;�
	;s�B3C7�7C;	�>C;	c��|���}d}|�|ddd���|�t|��t	jd���d����|�|�d�	��|��|�|���|��dS)
N�tb�gus	con
t
ent zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz�audio�aifzquoted-printabler�a            Content-Type: audio/aif
            Content-Transfer-Encoding: quoted-printable
            MIME-Version: 1.0

            b=FFgus=09con=0At=0Dent=20zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz=
            zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzr�Tr��	r#rdr$r�r�r�r�rer%r�s   r�,test_set_audio_aif_with_quoted_printable_ctez?TestRawDataManager.test_set_audio_aif_with_quoted_printable_cteds���
��� � ��6��	�
�
�g�w��3E�
�F�F�F�����q���8�?�4C�$D�$D�EK�F�9�DU�DU�
	W�	W�	W�	
������d��3�3�W�=�=�=���������'�2�2�2�2�2rc��|���}d}|�|ddd���|�t|��t	jd���d��dzd	z��|�|�d
���|��|�|���|��dS)Nr�video�mpeg�binaryr�z~            Content-Type: video/mpeg
            Content-Transfer-Encoding: binary
            MIME-Version: 1.0

            r�s7b�gus	con
t
ent zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzs=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzTr�rr�s   r�#test_set_video_mpeg_with_binary_ctez6TestRawDataManager.test_set_video_mpeg_with_binary_ctezs������ � ��6��	�
�
�g�w��H�
�=�=�=�����q���8�?�4�$�$�
�����
M�$M�
M�	$M�		N�		N�		N�	
������d��3�3�W�=�=�=���������'�2�2�2�2�2rc��|���}d}|�|ddd���|�t|��t	jd���d��dzd	z��|�|�d
���|��|�|���|��dS)NsMb�gus	con
t
ent
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
�application�octet-stream�8bitr�z�            Content-Type: application/octet-stream
            Content-Transfer-Encoding: 8bit
            MIME-Version: 1.0

            r�sb�gus	con
t
ent
s=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Tr�rr�s   r�/test_set_application_octet_stream_with_8bit_ctezBTestRawDataManager.test_set_application_octet_stream_with_8bit_cte�s���
��� � ��>��	�
�
�g�}�n�&�
�I�I�I�����q���8�?�4�$�$�
�����&�
$'�
N�$N�	O�	O�	O�	
������d��3�3�W�=�=�=���������'�2�2�2�2�2rc
�$�|���}d}|jj}tj|||dd��|dd��|dd��f���|�t
|��tjd����dS)	Nr�ryr�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.
            )	r#r�header_factoryrrdr$rPr�r��r&r*r�r's    r�$test_set_headers_from_header_objectsz7TestRawDataManager.test_set_headers_from_header_objects�s������ � ��%����3���$�Q���N�4�!2�3�3��N�6�#4�5�5��N�9�&>�?�?�:A�	B�	B�	B�	B�	
����Q�����2�"�"�	�	�	�	�	rc���|���}d}tj||d���|�t	|��tjd����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.
            )r#rrdr$rPr�r�r�s   r�test_set_headers_from_stringsz0TestRawDataManager.test_set_headers_from_strings�sz����� � ��%���$�Q��:"�	#�	#�	#�	#�	
����Q�����2�"�"�	�	�	�	�	rc���|���}d}|�td��5tj||d���ddd��dS#1swxYwYdS)Nr�r)zContent-Type: foo/barr%)r#r9rrrdr�s   r�<test_set_headers_with_invalid_duplicate_string_header_raiseszOTestRawDataManager.test_set_headers_with_invalid_duplicate_string_header_raises�s������ � ��%��
�
#�
#�J��
?�
?�	�	��(��G�>*�
�
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A�A�Ac	��|���}d}|jj}|�td��5tj|||dd��f���ddd��dS#1swxYwYdS)Nr�rz foo/barr%)r#rr'r9rrrdr(s    r�<test_set_headers_with_invalid_duplicate_header_header_raiseszOTestRawDataManager.test_set_headers_with_invalid_duplicate_header_header_raises�s������ � ��%����3��
�
#�
#�J��
?�
?�	�	��(��G���~�z�:�:�>=�
�
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�#A.�.A2�5A2c��|���}d}|�td��5tj||d���t|dj��ddd��dS#1swxYwYdS)Nr��a@fairly@@invalid@address)zTo: a@fairly@@invalid@addressr%ry)r#r9rrrd�print�defectsr�s   r�4test_set_headers_with_defective_string_header_raiseszGTestRawDataManager.test_set_headers_with_defective_string_header_raises�s������ � ��%��
�
#�
#�J�0K�
L�
L�	#�	#��(��G�>2�
�
�
�
�
�!�D�'�/�"�"�"�		#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�	#�	#s�2A1�1A5�8A5c	�*�|���}d}|jj}|�td��5tj|||dd��f���t|dj��ddd��dS#1swxYwYdS)Nr�r1ryr%)	r#rr'r9rrrdr2r3r(s    r�4test_set_headers_with_defective_header_header_raiseszGTestRawDataManager.test_set_headers_with_defective_header_header_raises�s������ � ��%����3��
�
#�
#�J�0K�
L�
L�	#�	#��(��G���t�%@�A�A�>D�
�
�
�
�
�!�D�'�/�"�"�"�		#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�	#�	#s�=B�B�Bc��|���}|�dd���|�|dd��dS)Nr�inline��disposition�Content-Disposition�r#rdr$r�s  r�test_set_disposition_inlinez.TestRawDataManager.test_set_disposition_inline�sK����� � ��	�
�
�e��
�2�2�2�����0�1�8�<�<�<�<�<rc��|���}|�dd���|�|dd��dS)Nr�
attachmentr9r;r<r�s  r�test_set_disposition_attachmentz2TestRawDataManager.test_set_disposition_attachment�sK����� � ��	�
�
�e��
�6�6�6�����0�1�<�@�@�@�@�@rc��|���}|�dd���|�|dd��dS)Nrr9r;r<r�s  r�test_set_disposition_fooz+TestRawDataManager.test_set_disposition_foo�sK����� � ��	�
�
�e��
�/�/�/�����0�1�5�9�9�9�9�9rc��|���}|�dd���|�|dd��dS)Nr�bar.txt��filenamer;zattachment; filename="bar.txt"r<r�s  r�test_set_filenamez$TestRawDataManager.test_set_filename�sV����� � ��	�
�
�e�i�
�0�0�0�����0�1�9�	;�	;�	;�	;�	;rc��|���}|�ddd���|�|dd��dS)Nrr8rD�r:rFr;zinline; filename="bar.txt"r<r�s  r�(test_set_filename_and_disposition_inlinez;TestRawDataManager.test_set_filename_and_disposition_inline�sN����� � ��	�
�
�e��I�
�F�F�F�����0�1�3O�P�P�P�P�Prc���|���}|�dd���|�t|��t	jd���d����dS)Nruábárî.txtrEa            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�)r#rdr$r�r�r�r�r�s  r�test_set_non_ascii_filenamez.TestRawDataManager.test_set_non_ascii_filename�ss����� � ��	�
�
�e�n�
�5�5�5�����q���8�?�4�$�$������	"�	"�	"�	"�	"rc���|���}|�dddd���|�t|��t	jd����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.
            )r#rdr$rPr�r�r�s  r�test_set_content_bytes_cte_7bitz2TestRawDataManager.test_set_content_bytes_cte_7bitsx����� � ��	�
�
�.�"�N��	�	H�	H�	H�����Q�����2�"�"�	�	�	�	�	r)r�r)r�)r�)�content)r �octet_stream)rO)rrr)r)�
text_plain�	text_html�application_octet_stream�
image_jpeg�message_rfc822�message_external_bodyc��|���}|j|g|�Rddi�|�|dd��|�|dd��dS)Nr&)zTo: foo@example.comzFrom: bar@simple.netr�r�r�zbar@simple.netr<�r&ra�mimetyper*s    r�!content_object_as_header_receiverz4TestRawDataManager.content_object_as_header_receiver!s������ � ����
�c�	%�H�	%�	%�	%�/$�	%�	%�	%�	
����4��"3�4�4�4�����6��$4�5�5�5�5�5rc��|���}|j|g|�Rddi�|�|dd��dS)Nr:r8r;r<rXs    r�-content_object_as_disposition_inline_receiverz@TestRawDataManager.content_object_as_disposition_inline_receiver)sW����� � ����
�c�;�H�;�;�;�(�;�;�;�����0�1�8�<�<�<�<�<rc�(�|���}|j|g|�Rddd��|�|dd��|�|���d��|�|djdd��dS)Nr8ubár.txtrIr;uinline; filename="bár.txt"rF)r#rdr$�get_filename�paramsrXs    r�-content_object_as_non_ascii_filename_receiverz@TestRawDataManager.content_object_as_non_ascii_filename_receiver.s������ � ����
�c�P�H�P�P�(�Z�P�P�P�P�����0�1�3P�Q�Q�Q�������)�)�:�6�6�6�����0�1�8��D�j�Q�Q�Q�Q�Qrc��|���}|j|g|�Rddi�|�|dd��dS)N�cid�some_random_stuffz
Content-IDr<rXs    r�content_object_as_cid_receiverz1TestRawDataManager.content_object_as_cid_receiver5sW����� � ����
�c�>�H�>�>�>�*=�>�>�>�����<��*=�>�>�>�>�>rc���|���}ddd�}|j|g|�Rd|i�t|t��rd|d<|�|dj|��dS)Nubárr)rrzr_r�r�r)r#rd�
isinstancerPr$r_)r&rarYr*r_s     r�!content_object_as_params_receiverz4TestRawDataManager.content_object_as_params_receiver:s������ � ����.�.����
�c�4�H�4�4�4�V�4�4�4��c�3���	(� '�F�9������>�*�1�6�:�:�:�:�:rN)@r@rArBrr��clonerrr�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�rrr
rrrr#r)r+r-r/r4r6r=r@rBrGrJrLrN�content_object_paramsrZr\r`rdrgrrrr�r��s��������^�
!�
!�"�2B�"�D�D�F��G�K�K�K�1�1�1�M�M�M�M�M�M�M�M�M�P�P�P�,�,�,�,�,�,�:�:�:�
Q�
Q�
Q�=�=�=�,�,�,�O�O�O�(
N�
N�
N�3�3�3�0�0�0�3�3�3�3�3�3�
3�
3�
3�3�3�3�3�3�3�"3�3�3�$3�3�3�3�3�3�3�3�3�&3�3�3�>N�N�N�
S�S�S�
_�_�_�
=�=�=�:.=�.=�.=�`,�,�,�(;�;�;� 3�3�3�,3�3�3�"3�3�3�"���$
�
�
�������#�#�#�#�#�#�=�=�=�
A�A�A�
:�:�:�;�;�;�Q�Q�Q�
"�"�"�
�
�
�&�+�%F�5�"�7�9�9�b�/�")�'�)�)�-?�!@�
�
��6�6�6�=�=�=�
R�R�R�?�?�?�
;�;�;�;�;rr��__main__)�unittest�test.test_emailrrr��emailr�
email.messager�email.contentmanagerrrr
r�r@�mainrrr�<module>rqs������7�7�7�7�7�7�7�7�����������&�&�&�&�&�&�A�A�A�A�A�A�A�A��z+�z+�z+�z+�z+��z+�z+���z+�z�x
;�x
;�x
;�x
;�x
;��x
;�x
;���x
;�v�z����H�M�O�O�O�O�O��r