Sindbad~EG File Manager

Current Path : /proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/
Upload File :
Current File : //proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/test_http_cookiejar.cpython-312.pyc

�

'Μg1F���dZddlZddlZddlZddlZddlmZddlmZddlZddl	Z	ddl
Zddlm
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#ejHdk(Z%Gd�de	jL�Z'Gd	�d
e	jL�Z(Gd�d�Z)d
�Z*d�Z+d�Z,Gd�de	jL�Z-Gd�de	jL�Z.Gd�de	jL�Z/e0dk(re	jb�yy)zTests for http/cookiejar.py.�N)�	os_helper)�warnings_helper)�	time2isoz�	http2time�iso2time�
time2netscape�parse_ns_headers�join_header_words�split_header_words�Cookie�	CookieJar�DefaultCookiePolicy�LWPCookieJar�MozillaCookieJar�	LoadError�lwp_cookie_str�DEFAULT_HTTP_PORT�escape_path�reach�is_HDN�domain_match�user_domain_match�request_path�request_port�request_host�win32c�H�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zy)�
DateTimeTestsc	�p�d}d}|jt|�d�|jt||z�d�|jt|d|zz�d�|jt|d|zz�d�t�}td	�}||fD]}|j|d
d|�d|����y)
N�x+�<�Qz2002-04-19 14:36:40Zz2002-04-20 14:36:40Z�z2002-04-21 14:36:40Z�z2002-04-22 14:36:40Z� �z!^\d{4}-\d\d-\d\d \d\d:\d\d:\d\dZ$zbad time2isoz format: � )�assertEqualr�assertRegex��self�base�day�az�bz�texts      �5/usr/local/lib/python3.12/test/test_http_cookiejar.py�test_time2isozzDateTimeTests.test_time2isozs�����������4��*@�A�����4��8�,�.D�E�����4��#��:�.�0F�G�����4��#��:�.�0F�G�
�[��
�v�
����H�D����T�#G�>@�"�E�
G��c	�p�d}d}|jt|�d�|jt||z�d�|jt|d|zz�d�|jt|d|zz�d�t�}td	�}||fD]}|j|d
d|�d|����y)
Nr r!zFri, 19-Apr-2002 14:36:40 GMTzSat, 20-Apr-2002 14:36:40 GMTr"zSun, 21-Apr-2002 14:36:40 GMTr#zMon, 22-Apr-2002 14:36:40 GMTr$z;[a-zA-Z]{3}, \d{2}-[a-zA-Z]{3}-\d{4} \d{2}:\d{2}:\d{2} GMT$zbad time2netscape format: r%)r&rr'r(s      r/�test_time2netscapez DateTimeTests.test_time2netscape&s�����������t�,�.M�N�����t�C�x�0�8�	:�	
����t�A�c�E�z�2�8�	:�	
����t�A�c�E�z�2�8�	:��_��
�6�
"����H�D�����N�57��<�
>�r1c��d�}|j|d�d�|j|d�d�|j|d�d�y)Nc�D�tjt|��ddS�N�)�time�gmtimer�r.s r/�
parse_datez0DateTimeTests.test_http2time.<locals>.parse_date=s���;�;�y���/���3�3r1z01 Jan 2001)i��r<rr�z	03-Feb-20)i�r"r#rrr=z	03-Feb-98)i�r"r#rrr=�r&�r)r;s  r/�test_http2timezDateTimeTests.test_http2time<sO��	4�	
����M�2�4K�L�	
����K�0�2I�J�	
����K�0�2I�Jr1c
��gd�}d}t|�}d}|j|||�d|�d|�d��|D]�}|jt|�||�|jt|j��||j��|jt|j	��||j	����y)N)zThu, 03 Feb 1994 00:00:00 GMT� Thursday, 03-Feb-94 00:00:00 GMTz"Thursday, 03-Feb-1994 00:00:00 GMTz03 Feb 1994 00:00:00 GMTz03-Feb-94 00:00:00 GMTz03-Feb-1994 00:00:00 GMTz03-Feb-1994 00:00 GMTz03-Feb-1994 00:00z02-Feb-1994 24:00z	03-Feb-94z03-Feb-1994z03 Feb 1994z  03   Feb   1994  0:00  z  03-Feb-1994  �>P-z1994-02-03 00:00:00Zz  =>  'z' (�))rr&r�lower�upper)r)�tests�test_t�result�expected�ss      r/�test_http2time_formatsz$DateTimeTests.test_http2time_formatsHs���
��,���6�"��)�������06���I�	K��A����Y�q�\�6�1�5����Y�q�w�w�y�1�6�1�7�7�9�E����Y�q�w�w�y�1�6�1�7�7�9�E�r1c
�f�dD],}|jt|�d|�dt|�����.y)N)��GarbagezMandag 16. September 1996z
01-00-1980z
01-13-1980z
00-01-1980z
32-01-1980z01-01-1980 25:00:00z01-01-1980 00:61:00�01-01-1980 00:00:62z08-Oct-3697739z
08-01-3697739z09 Feb 19942632 22:23:32 GMTz Wed, 09 Feb 1994834 22:23:32 GMTz
http2time(z) is not None
http2time(test) )�assertIsNoner�r)�tests  r/�test_http2time_garbagez$DateTimeTests.test_http2time_garbagels4���D� 
���i��o�6:�I�d�O�M�
N�!r1c�x�tdjddz��tdjddz��y)Nz01 Jan 1970{}00:00:00 GMT!r%i��z01 Jan 1970 00:00:00{}GMT!)r�format�r)s r/�2test_http2time_redos_regression_actually_completesz@DateTimeTests.test_http2time_redos_regression_actually_completes�s4��	�.�5�5�c�G�m�D�E��.�5�5�c�G�m�D�Er1c��d�}|j|d�d�|j|d�d�|j|d�d�y)Nc�D�tjt|��ddSr6)r8r9rr:s r/r;z/DateTimeTests.test_iso2time.<locals>.parse_date�s���;�;�x��~�.�r��2�2r1�19940203T141529Z)i�r"r#���z1994-02-03 07:15:29 -0700z1994-02-03 19:45:29 +0530r>r?s  r/�
test_iso2timezDateTimeTests.test_iso2time�sX��	3�	
����$6�7�1�	3�	
����$?�@�1�	3�	
����$?�@�1�	3r1c�6�gd�}d}|D]�}|jt|�||�|jt|j��||j��|jt|j��||j����y)N)
z1994-02-03 00:00:00 -0000z1994-02-03 00:00:00 +0000z1994-02-03 00:00:00z
1994-02-03z1994-02-03T00:00:00�19940203z1994-02-02 24:00:00�19940203T000000Zz
  1994-02-03 z  1994-02-03T00:00:00  rC)r&rrErF)r)rGrHrKs    r/�test_iso2time_formatsz#DateTimeTests.test_iso2time_formats�sv��

�����A����X�a�[�&�!�4����X�a�g�g�i�0�&�!�'�'�)�D����X�a�g�g�i�0�&�!�'�'�)�D�r1c�N�dD] }|jt|�d|z��"y)N)rNrOrBz
1980-00-01z
1980-13-01z
1980-01-00z
1980-01-32z1980-01-01 25:00:00z1980-01-01 00:61:00rPz01-01-1980T00:00:62�19800101T250000Zziso2time(%r))rQrrRs  r/�test_iso2time_garbagez#DateTimeTests.test_iso2time_garbage�s,��
�D�
���h�t�n�,�t�3�
5�
r1c�x�tdjddz��tdjddz��y)Nz1994-02-03{}14:15:29 -0100!r%i@Bz1994-02-03 14:15:29{}-0100!)rrVrWs r/�$test_iso2time_performance_regressionz2DateTimeTests.test_iso2time_performance_regression�s4��	�.�5�5�c�%�i�@�A��.�5�5�c�%�i�@�Ar1N)
�__name__�
__module__�__qualname__r0r3r@rLrTrXr_rcrfrh�r1r/rrs<��G�>�,
K�"F�HN�*F�3� E�.5�$Br1rc�0�eZdZd�Zd�Zd�Zd�Zd�Zd�Zy)�HeaderTestsc�T�gd�g}dD]}|jt|g�|�� y)N)��foo�bar)�expiresld9W��version�0)z)foo=bar; expires=01 Jan 2040 22:23:32 GMTz+foo=bar; expires="01 Jan 2040 22:23:32 GMT"�r&r	�r)rJ�hdrs   r/�test_parse_ns_headersz!HeaderTests.test_parse_ns_headers�s0��O�P���C�
���-�s�e�4�h�?�	r1c�T�ddgg}dD]}|jt|g�|�� y)Nrp)ru�1)zfoo=bar; version="1"�foo=bar; Version="1"rwrxs   r/�test_parse_ns_headers_versionz)HeaderTests.test_parse_ns_headers_version�s8��$�%5�6�7���C�
���-�s�e�4�h�?�	r1c�J�d}ddgg}|jt|g�|�y)Nz expires=01 Jan 2040 22:23:32 GMT)rsz01 Jan 2040 22:23:32 GMTrtrw)r)ryrJs   r/�#test_parse_ns_headers_special_namesz/HeaderTests.test_parse_ns_headers_special_names�s/��1��<�>N�O�P�����)�3�%�0�(�;r1c�|�tddgg�}|j|d�|jtgg�d�y)N�rqN�rr�bazzfoo; bar=bazrN)r
r&)r)�joineds  r/�test_join_header_wordsz"HeaderTests.test_join_header_words�s<��"�]�N�$C�#D�E�������0����*�B�4�0�"�5r1c��ddggfddggfddggfddggfddggfd	dggfd
ddggfdddggfd
dggfdddggfdgd�gfddgdgdggfdddgdgdgdggfg
}|D]/\}}	t|g�}|j
||d|�d|�d|�d���1y#ddl}ddl}|j�}|j	d|�d|j�z}Y�axYw) Nrqr��foo=barrp�	   foo   z
   foo=   )rqrNz   foo=z   foo=   ; z   foo=   ; bar= baz r��foo=bar bar=bazzfoo= bar=baz)rqzbar=baz�foo=bar;bar=baz�foo bar baz)r�)rrN)r�Nza, b, c)�aN)�bN)�cNz(foo; bar=baz, spam=, foo="\,\;\"", bar= )�spamrN)rqz,;")rrrNrz (error -- traceback follows)

%s�
When parsing: '�'
Expected:     '�'
Got:          '�'
)r�	traceback�io�StringIO�	print_exc�getvaluer&)r)rG�arg�expectrIr�r��fs        r/�test_split_header_wordsz#HeaderTests.test_split_header_words�sS��
�m�_�%�&�
�.�)�*�+�
�M�?�+�,�
�[�M�?�+�
�+���(�
�{�m�_�-�
$��^�'D�&E�F�
�.�.�!A� B�C�
�1�2�3�4�
�.�.�!A� B�C�
�J�K�L�
�+���
��}�E�F�
8��n�-��n�~�.��
�?�
@���&!�K�C��
M�+�S�E�2��
���V�f��F�F�	/�
�!��
M�$��K�K�M���#�#�D�!�,�=��
�
��L��s�B�?C	c��gd�}|D]<\}}t|g�}t|�}|j||d|�d|�d|�d|�d�	��>y)N)
)rqrq)r�r�)r�rq)zfoo=zfoo="")r��foo=bar; bar=baz)r�r�)r�z
foo; bar; baz)zfoo="\"" bar="\\"zfoo="\""; bar="\\")z	foo,,,barzfoo, bar)zfoo=bar,bar=bazzfoo=bar, bar=baz)ztext/html; charset=iso-8859-1ztext/html; charset="iso-8859-1")z)foo="bar"; port="80,81"; discard, bar=bazz'foo=bar; port="80,81"; discard, bar=baz)zBasic realm="\"foo\\\\bar\""zBasic; realm="\"foo\\\\bar\""r�r�r�z'
Input was:    'r�)rr
r&)r)rGr�r��input�ress      r/�test_roundtripzHeaderTests.test_roundtrip
sQ����,!�K�C��&��u�-�E�#�E�*�C����S�&�
�F�C��+ �
!�!r1N)	rirjrkrzr~r�r�r�r�rlr1r/rnrn�s#��@�@�<�6� �D!r1rnc��eZdZgdfd�Zd�Zy)�FakeResponseNc�d�ddl}|jdj|��|_||_y)zD
        headers: list of RFC822-style 'Key: value' strings
        rN�
)�email�message_from_string�join�_headers�_url)r)�headers�urlr�s    r/�__init__zFakeResponse.__init__0s)��	��1�1�$�)�)�G�2D�E��
���	r1c��|jS�N)r�rWs r/�infozFakeResponse.info7s��4�=�=�(r1)rirjrkr�r�rlr1r/r�r�/s��!�t��)r1r�c��t|||d�S)NzSet-Cookie2��	_interact��	cookiejarr��set_cookie_hdrss   r/�
interact_2965r�9s���Y��_�m�D�Dr1c��t|||d�S)Nz
Set-Cookier�r�s   r/�interact_netscaper�<s���Y��_�l�C�Cr1c��tjj|�}|j|�|j	dd�}g}|D]}|j|�d|����t
||�}|j||�|S)zDPerform a single request / response cycle, returning Cookie: header.rrNz: )�urllib�request�Request�add_cookie_header�
get_header�appendr��extract_cookies)	r�r�r��hdr_name�req�
cookie_hdrr�ryr�s	         r/r�r�?sv��
�.�.�
 �
 ��
%�C�
����$�����"�-�J��G������8�S�1�2��
�w��
$�C�
���c�3�'��r1c� �eZdZd�Zd�Zd�Zd�Zd�Zeje
d�ejd���Z
eje
d�ejd���Zeje
d�ejd	���Zd
�Zy)�FileCookieJarTestsc�r�tj}t|�}|j|j|�yr�)r�TESTFNrr&�filename�r)r�r�s   r/�test_constructor_with_strz,FileCookieJarTests.test_constructor_with_strMs+���#�#����"��������X�.r1c��tj}ttj|��}|j	|j
|�yr�)rr�r�FakePathr&r�r�s   r/�test_constructor_with_path_likez2FileCookieJarTests.test_constructor_with_path_likeRs6���#�#����+�+�H�5�6��������X�.r1c�P�td�}|j|j�yr�)rrQr��r)r�s  r/�test_constructor_with_nonez-FileCookieJarTests.test_constructor_with_noneWs���������!�*�*�%r1c��Gd�d�}tt|fD]N}|j|��5|jt�5|�}t|��}ddd�ddd��Py#1swY�xYw#1swY�gxYw)Nc��eZdZy)�?FileCookieJarTests.test_constructor_with_other_types.<locals>.AN)rirjrkrlr1r/�Ar�\s��r1r��r�)�int�float�subTest�assertRaises�	TypeErrorr)r)r��type_�instancer�s     r/�!test_constructor_with_other_typesz4FileCookieJarTests.test_constructor_with_other_types[sh��	�	��5�!�_�E����u��-��&�&�y�1�$�w�H�$�h�7�A�2�.�-�%�1�1��.�-�s#�A6�A*�A6�*A3�/A6�6A?	c���tj}t�}t|dd�|j	|j
dddjd�	|j|d��t�}|j|d��tj|�|j	|j
dddjd�y#tj|�wxYw)N�http://www.acme.com/�boo�www.acme.com�/T��ignore_discard)
rr�rr�r&�_cookies�value�save�load�unlinkr�s   r/�test_lwp_valueless_cookiez,FileCookieJarTests.test_lwp_valueless_cookiees����#�#���N���!�3�U�;�������N�3�C�8��?�E�E�t�L�	'�
�F�F�8�D�F�1���A�
�F�F�8�D�F�1����X�&�������N�3�C�8��?�E�E�t�L��
���X�&�s�0C
�
C$z9windows file permissions are incompatible with file modesc�`�tj}t�}t|dd�	|j	|d��tj|�}|jt
j|j�d�tj|�y#tj|�wxYw�Nr�r�Tr�i�)rr�rr�r��os�statr&�S_IMODE�st_moder��r)r�r��sts    r/�test_lwp_filepermissionsz+FileCookieJarTests.test_lwp_filepermissionsss����#�#���N���!�3�U�;�	'�
�F�F�8�D�F�1�����"�B����T�\�\�"�*�*�5�u�=����X�&��I���X�&���AB�B-c�`�tj}t�}t|dd�	|j	|d��tj|�}|jt
j|j�d�tj|�y#tj|�wxYwr�)rr�rr�r�r�r�r&r�r�r�r�s    r/�test_mozilla_filepermissionsz/FileCookieJarTests.test_mozilla_filepermissions�s����#�#������!�3�U�;�	'�
�F�F�8�D�F�1�����"�B����T�\�\�"�*�*�5�u�=����X�&��I���X�&�r�c�"�tj}ttfD]�}||�}tj
j
d�}dg}t|d�}|j||�|jt|�d�	|j�|j�|j�|j�tj|�|jt|�d���y#tj|�wxYw)Nr�z1Set-Cookie: pll_lang=en; Max-Age=31536000; path=/r<r)rr�rrr�r�r�r�r�r&�lenr��clearr�r�)r)r��cookiejar_classr�r�r�r�s       r/�test_cookie_files_are_truncatedz2FileCookieJarTests.test_cookie_files_are_truncated�s����#�#�� ,�.>�?�O���)�A��.�.�(�(�)?�@�C�J�K�G��w�(>�?�C�
���c�3�'����S��V�Q�'�	
+��������	���������� � ��*����S��V�Q�'�) @��$� � ��*�s
�AC7�7Dc�@�tj}ttfD]-}|�}	|j	d��|jd��/	t|d�5}|jd�ttfD]*}|�}|jt|j|��,	ddd�tj|�y#t$r*}|j|jt�Yd}~��d}~wwxYw#1swY�UxYw#tj|�wxYw)NzAfor this test to work, a file with this filename should not existr�z%expected OSError for invalid filename�wzoops
)rr�rrr��fail�OSError�assertIsNot�	__class__r�open�writer�r�)r)r�r�r��excr�s      r/�test_bad_magicz!FileCookieJarTests.test_bad_magic�s����#�#��+�-=�=�O��!�A�
C����!<��=��	�	�A�B� >�	'��h��$������!�'3�5E�'E�O�'�)�A��%�%�i�����B�(F�%�
���X�&���
;�� � ����	�:�:��
;��%�$��
���X�&�s<�C�D�AC:�&D�	C7�
 C2�2C7�:D�?D�DN)rirjrkr�r�r�r�r��unittest�skipIf�	mswindowsr�skip_unless_working_chmodr�r�r�rrlr1r/r�r�Ls���/�
/�
&�8�M��X�_�_�Y� [�\��(�(�
'�)�]�
'��X�_�_�Y� [�\��(�(�
'�)�]�
'��X�_�_�Y� [�\��(�(�(�)�]�(�0'r1r�c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�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*y))*�CookieTestsc���t�}dD]\\}}}tjj|�}|j	||�}|r|j|��L|j
|��^y)N))�http://foo.bar.com/zblah.comF)rzrhubarb.blah.comF)rzrhubarb.foo.bar.comF)r�.foo.bar.comT)r�foo.bar.comT)rz.bar.comT)r�bar.comT)r�comT)�http://foo.com/zrhubarb.foo.comF)r�.foo.comT)r�foo.comT)rrT)�http://foo/zrhubarb.fooF)rz.fooT)rrqT)rz	foo.localT)r�.localT)�http://barfoo.comrF)rrF)rr�r�r��domain_return_ok�
assertTrue�assertFalse)r)�polr��domain�okr��rs       r/�test_domain_return_okz!CookieTests.test_domain_return_ok�sb��"�#�� �O�C���*�n�n�,�,�S�1�G��$�$�V�W�5�A��4�?�?�1�%��"�"�1�%�1 r1c�x�tj}t|�}t|dd�t|dd�|jddd}|j|j�|j|jd�|jddd}|j|j�|j|jd�|jt|�d�t|�}|jd	d	�
�	t|�}|jd	d	�
�tj|j�|jt|�tj dd	zddz|��|jt|d
�d�y#tj|j�wxYw)Nr��eggsz"spam"; path=/foo/r�r��/foo/z"spam"zJ"spam"; path="/foo/"; domain="www.acme.com"; path_spec; discard; version=0T)�ignore_expiresr�zpath_specified=%sF�http://www.acme.com/foo/z"spam"; eggs)rr�rr�r�rQr�r&�namer�reprr��revertr�r��re�sub)r)r�r��cookie�old_strs     r/�test_missing_valuezCookieTests.test_missing_values~���#�#���X�&���!�3�V�<��!�3�5I�J����N�+�C�0��8�����&�,�,�'�������f�-����N�+�G�4�X�>�����&�,�,�'�������h�/������/�
,�	.��q�'��	���d�4��8�	)� ��*�A�
�H�H�D��H�>����Q�Z�Z�(������G��F�F�&��-�/B�U�/J��
�	�
	
���*�1�.H�I�'�	)��
���Q�Z�Z�(�s�F�!F9c��dD]�\}}}t||��}t|�}t|dd�	|jddd}|j	|j
|�t
|dd�|s�n|jddd	}|j	|j
d
���y#t$r|j|�Y��wxYw)N))NFr)NTr<)FFN)FTr<)TFr)TTr)�rfc2109_as_netscape�rfc2965�http://www.example.com/zni=ni; Version=1�www.example.comr��ni�foo=bar; Version=1rqr<)	rr
r�r�r&rur��KeyErrorrQ)r)r0r1ru�policyr�r,�
cookie2965s        r/�test_rfc2109_handlingz!CookieTests.test_rfc2109_handling2s���	6�1���'�)�$7��!�F��&�!�A��a�!:�<N�O�
<����$5�6�s�;�D�A��� � �����9��a�!:�2�4��!"���,=�!>�s�!C�E�!J�J��$�$�Z�%7�%7��;�5	6��"�
+��!�!�'�*�
+�s�B%�%C�Cc���t�}t|dd�t|dd�t|dd�t|dd�t|dd�t|dd�t|dd	�t|dd
�|jddd
}|j|jd�|j|j�|j|jt�|j|j�|j|jd��|j|jd��|jddd}|j|jd�|j|j�|j|jd�|j|j�|jddd}|j|j�|j|j�|jddd}|jddd}|j|j�|j|j�|jddd}|j|j�|j|jd�|jddd
}|j|j�y)Nr�z0spam=eggs; DoMain=.acme.com; port; blArgh="feep"zni=ni; port=80,8080�http://www.acme.com:80/znini=nizfoo=bar; expires=z-spam=eggs; expires="Foo Bar 25 33:22:11 3022"z	fortytwo=z=unladenswallow�holyhandgrenade�	.acme.comr�r��blArgh�blarghr�r4z80,8080�ninirq�fortytworN)r
r�r�r&rr�domain_specified�portrr�port_specified�has_nonstandard_attrrQrs�assertIsNotNoner�)r)r�r,rqr�s     r/�test_ns_parserzCookieTests.test_ns_parserQs{���K���!�3�L�	N��!�3�5J�K��!�6�	�B��!�6�8K�L��!�6�9?�	@��!�3�[�A��!�3�5F�G��!�3�5F�G����K�(��-�f�5���������4�����/�/�0�������&7�8�����.�.�/�����3�3�H�=�>�����4�4�X�>�?����N�+�C�0��6���������7�����0�0�1�������i�0�����-�-�.����N�+�C�0��8�����&�+�+�&�����.�.�/��j�j��(��-�e�4���z�z�.�)�#�.�u�5�����#�+�+�&����$�,�,�'����N�+�C�0��<�����V�\�\�*�������r�*�
���N�+�C�0�1B�C�����&�,�,�'r1c��t�}t|dd�t|dd�|jdd}|jd|�|jd|�y)Nr�zexpires=eggszversion=eggs; spam=eggsr�r�rsru)r
r�r��assertIn)r)r��cookiess   r/�test_ns_parser_special_namesz(CookieTests.test_ns_parser_special_names�sU��
�K���!�3�^�D��!�3�5N�O��*�*�^�,�S�1���
�
�i��)��
�
�i��)r1c�@�t�}ttj�dz�}tj|�5d|��g}t
jjd�}t|d�}|j||�}|jt|�d�|jt|dj�|�ddd�t|dd|z�|jt|�d�ttj�dz
�}t|dd|z�t|d�}|jt|�d�|jd	|�|jd
|�t|dd|z�t|dd|z�|jt|�d
�t|dd|z�t|dd|z�t|d�}|jt|�d�t|dd�|jt|�d�|j!�|jt|�d�|jd	|�t#dddddddddddddddi�}	|j|	jd�y#1swY���xYw)N�z%Set-Cookie: FOO=BAR; path=/; expires=�http://www.coyote.com/r<rr�zspam="bar"; expires=%szfoo="eggs"; expires=%s�
spam="bar"rqzeggs="bar"; expires=%szbar="bar"; expires=%sr#z!eggs="bar"; expires=%s; max-age=0z bar="bar"; max-age=0; expires=%szhttp://www.rhubarb.net/zwhum="fizz"r"r'r�Fzwww.python.orgTr�z1444312383.018307i?uV)r
rr8r�check_no_warningsr�r�r�r��make_cookiesr&r�rsr�rI�assertNotIn�clear_session_cookiesr)
r)r��futurer�r�r�rJ�now�hr,s
          r/�test_expireszCookieTests.test_expires�s}���K���t�y�y�{�4�/�0��
�
.�
.�t�
4�>�v�h�G�H�G��.�.�(�(�)A�B�C��w�(@�A�C��n�n�S�#�.�G����S��\�1�-����]�7�1�:�+=�+=�>��G�
5�	�!�3�5M� �6!�	"�����Q���#��D�I�I�K��M�*���!�3�5M��6�	��a�!7�8������Q���#��
�
�l�A�&������"�	�!�3�5M� �6!�	"��!�3�5L� �6!�	"�����Q���#��!�3�62�4:�6;�	<��!�3�62�4:�6;�	<��a�!7�8������Q���#�	�!�6�
�F�����Q���#�	���!�����Q���#��
�
�l�A�&���F�G��u�&6��u�c���':���d����	
�������4�a5�
4�s
�BJ�Jc��td��}t|�}t|dd�|jd|jd�t|�}t|dd�|jd|jd�t|�}t|d	d�|jd
|jd�t|�}t|dd�|jd|jd�t�}t|dd
�|jd|jd�t�}t|dd�|jd|jd�t�}t|d	d�|jd|jd�t�}t|dd�|jd|jd�y)NT�r1r�zspam="bar"; Version="1"r�r�zhttp://www.acme.com/blahzeggs="bar"; Version="1"z http://www.acme.com/blah/rhubarb�/blah/z!http://www.acme.com/blah/rhubarb/z/blah/rhubarb/rO�
eggs="bar"�/blahz
/blah/rhubarb)rr
r�rIr�r��r)rr�s   r/�test_default_pathzCookieTests.test_default_path�sw��!�$�/���c�N���a�/�1J�K��
�
�c�1�:�:�n�5�6��c�N���a�3�5N�O��
�
�c�1�:�:�n�5�6��c�N���a�;�/�	1��
�
�h��
�
�>� :�;��c�N���a�<�/�	1��
�
�&��
�
�>�(B�C�
�K���!�3�\�B��
�
�c�1�:�:�n�5�6��K���!�7��F��
�
�c�1�:�:�n�5�6��K���!�?��N��
�
�g�q�z�z�.�9�:��K���!�@�,�O��
�
�o�q�z�z�.�'A�Br1c��t�}d}d}t|||�|jd|jd�|j	t||�|�y)Nzhttp://example.com/?spam/eggsr[r�zexample.com)r
r�rIr�r&)r)�cj�urir�s    r/�test_default_path_with_queryz(CookieTests.test_default_path_with_query�sN��
�[��-�����"�c�5�)��
�
�c�2�;�;�}�5�6����*�2�s�3�U�;r1c�V�gd�}|D] \}}|jt|�|��"y)N))z/foo%2f/bar�/foo%2F/bar)rdrd)�
/foo%%/barre)�/fo%19o/barrf)z/fo%7do/barz/fo%7Do/bar)�	/foo/bar&rg)�	/foo//barrh)�	~/foo/barri)z	/foo/barz/foo%19/bar)z	/}foo/barz/%7Dfoo/bar)u
/foo/barüz/foo/bar%C3%BC)u/foo/barꯍz/foo/bar%EA%AF%8D)r&r)r)�casesr�rIs    r/�test_escape_pathzCookieTests.test_escape_path�s.����*!�K�C�����[��-�v�6�!r1c�`�tjjd�}|jt	|�d�tjjd�}|jt	|�d�tjjd�}|jt	|�d�y)NzThttp://www.example.com/rheum/rhaponticum;foo=bar;sing=song?apples=pears&spam=eggs#niz$/rheum/rhaponticum;foo=bar;sing=songzBhttp://www.example.com/rheum/rhaponticum?apples=pears&spam=eggs#niz/rheum/rhaponticumzhttp://www.example.comr�)r�r�r�r&r�r)r�s  r/�test_request_pathzCookieTests.test_request_paths����n�n�$�$�
:�;��	
����c�*�?�	A��n�n�$�$�
(�)��	
����c�*�,@�A��n�n�$�$�%=�>������c�*�C�0r1c���t�}td��}t|�}d}t||d�|jddd}dD]�\}}|�|��}tj
j
|�}	t||�}
|r8|jd	|
d
|���|j|j||	���q|jd	|
d|���|j|j||	����y)NT)�strict_ns_set_pathzhttp://bar.comzspam=eggs; Path=/foor�/foor�))rqT)r$T)�/foo/barT)r�F)z/foobad/fooFz	spam=eggszcookie not set for zcookie set for )rr
r�r�r�r�r�rIr�set_ok_pathrRr)r)r�strict_ns_path_polr��base_urlr,�pathrr�r�rVs           r/�test_path_prefix_matchz"CookieTests.test_path_prefix_match s���!�#��0�D�I���c�N��#���!�X�'=�>����I�&�v�.�v�6��1�H�D�"�
�J�t�f�%�C��.�.�(�(��-�C�!�!�S�)�A���
�
�k�1�0C�D�6�.J�K���� 2� >� >�v�s� K�L�� � ��a�?�4�&�1I�J�� � �!3�!?�!?���!L�M�1r1c��tjjdddi��}|jt	|�d�tjjdddi��}|jt	|�t
�y)Nzhttp://www.acme.com:1234/�Hostzwww.acme.com:4321�r��1234r�)r�r�r�r&rrrms  r/�test_request_portzCookieTests.test_request_port8sy���n�n�$�$�%@�.4�6I�-J�%�L������c�*�F�3��n�n�$�$�%;�.4�6I�-J�%�L������c�*�,=�>r1c�x�tjjdddi��}|jt	|�d�tjjdddi��}|jt	|�d�tjjd	dd
i��}|jt	|�d�y)Nzhttp://1.1.1.1/ry�www.acme.com:80rzz1.1.1.1r�zirrelevant.comr�z&http://www.acme.com:2345/resource.htmlzwww.acme.com:5432)r�r�r�r&rrms  r/�test_request_hostzCookieTests.test_request_host@s����n�n�$�$�%6�.4�6G�-H�%�J��
	
����c�*�I�6��n�n�$�$�%;�.4�6F�-G�%�I������c�*�N�;��n�n�$�$�%M�.4�6I�-J�%�L������c�*�N�;r1c��|jtd��|jtd��|jtd��|jtd��|jtd��|jtd��|jtd��|jtd��y)	Nrz1foo2.3bar4.5com�192.168.1.1rN�.rz..foozfoo.)rrrrWs r/�test_is_HDNzCookieTests.test_is_HDNPs�������}�-�.�����1�2�3�����
�.�/�������$�������%������/�0�������)�������(r1c��|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd	�d	�y)
Nr�r=�acme.comz
acme.localr�.comr�rNz192.168.0.1)r&rrWs r/�
test_reachzCookieTests.test_reachZs�������~�.��<�����z�*�J�7�����|�,�h�7�����x��(�3�����v���/�����s��S�)�����r��B�'�����}�-�}�=r1c��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtd	d
��|jtdd��|jtdd
��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��y)Nr�z.168.1.1zx.y.comzx.Y.comz.Y.comzY.comz	a.b.c.comz.c.comz
example.localrz	blah.blahrNz.rhubarb.rhubarbr�r=zrhubarb.acme.comzwww.rhubarb.acme.comzy.comz.y.comr�r�mz.mr�)rrrrrWs r/�test_domain_matchzCookieTests.test_domain_matchds�������]�M�B�C�����m�Z�@�A�����Y�	�:�;�����Y��9�:�����i��9�:�����[�(�;�<�����h��<�=�����_�h�?�@�����k�2�6�7�����b�*<�=�>�����R��,�-����)�*�j�A�B����*�:�{�C�D����)�*<�k�J�K����)�*@�+�N�O����)�)�Y�?�@����)�)�X�>�?����*�9�g�>�?����)�'�7�;�<����*�8�W�=�>����)�(�H�=�>����)�)�V�<�=����*�9�e�<�=����*�9�c�:�;����*�9�d�;�<����*�9�b�9�:����*�9�c�:�;����)�-��G�H����*�=�*�E�F����*�=�#�>�?����*�=�"�=�>r1c�h�t�}t|dd�|jt|�d�y)Nzhttp://www.nasty.com/z)foo=bar; domain=friendly.org; Version="1"r)r
r�r&r�r�s  r/�test_wrong_domainzCookieTests.test_wrong_domain�s0��

�K���a�0�A�	C�����Q���#r1c��td��}t|��}t|dd�t|dd�|jt	|�d�dD]-}t|d	|zd
�|jt	|�d��/y)NT)�
strict_domain�r7zhttp://example.co.uk/zno=problemoz!okey=dokey; Domain=.example.co.ukr")z.co.ukz.org.zaz.tx.usz.name.uszhttp://example.%s/zspam=eggs; Domain=.co.uk)rr
r�r&r�)r)�cpr`�
pseudo_tlds    r/�test_strict_domainzCookieTests.test_strict_domain�s}��!�t�
4��
�b�
!���"�5�}�E��"�5�=�	?�����R��!�$�E�J��b�"6��"C�8�
:����S��W�a�(�Fr1c���t�}t|dd�|jt|�d�|j|jdddj
d�|jt|d�d�|jt|d�d�t
tj�	�}|j|�|jt|d�d
�t|dd�t|d
d�|jt|�d�|j|jdddj
d�|j|jdddj
d�|jt|d
�d�t|dd�|jt|�d�t|dd�|jt|�d�y)N�http://foo.net/zns=barr<�foo.netr��nsrr�http://www.foo.net/)�strict_ns_domainrN�http://foo.net/foo/zspam1=eggs; domain=foo.netzhttp://foo.net/foo/bar/zspam2=eggs; domain=.foo.netr#�.foo.netrq�spam1r#rr�spam2zspam2=eggs; spam1=eggs; ns=barznini="ni"; domain=.netzhttp://foo.co.ukznasty=trick; domain=.co.uk�)	r
r�r&r�r�r�r�DomainStrictNonDomain�
set_policy)r)r�rs   r/�test_two_component_domain_nsz(CookieTests.test_two_component_domain_ns�s���
�K��	�!�.��9�����Q���#�������I�.�s�3�D�9�?�?��G����*�1�.?�@�(�K����*�1�.C�D�!�	#�"�0�F�F�H��	���S�����*�1�.C�D�b�I�	�!�2�6�	8�	�!�6�7�	9�����Q���#�������J�/��7��@�F�F��	!�������J�/�
�;�G�D�J�J��	!����*�1�.G�H�9�	;�	�!�.�0H�I�����Q���#�	�!�/�1M�N�����Q���#r1c�h�t�}t|dd�|jt|�d�y)N�http://localhost�foo=bar; domain=localhost;r<�r
r�r&r�r�s  r/�test_localhost_domainz!CookieTests.test_localhost_domain�s+���K���!�/�1M�N�����Q���#r1c��t�}t|dd�|j|jdddjd�y)Nr�r�z
.localhostr�rqrr�r
r�r&r�r�r�s  r/�test_localhost_domain_contentsz*CookieTests.test_localhost_domain_contents�s@���K���!�/�1M�N�������L�1�#�6�u�=�C�C�U�Kr1c��t�}t|dd�|j|jdddjd�y)Nr�zfoo=bar;zlocalhost.localr�rqrrr�r�s  r/� test_localhost_domain_contents_2z,CookieTests.test_localhost_domain_contents_2�s@���K���!�/��<�������$5�6�s�;�E�B�H�H�%�Pr1c�h�t�}t|dd�|jt|�d�y)Nzhttp://evil.comzfoo=bar; domain=.localhostrr�r�s  r/�test_evil_nonlocal_domainz%CookieTests.test_evil_nonlocal_domain�s+���K���!�.�0L�M�����Q���#r1c�h�t�}t|dd�|jt|�d�y)Nr�zfoo=bar; domain=.evil.comrr�r�s  r/�test_evil_local_domainz"CookieTests.test_evil_local_domain�s+���K���!�/�1L�M�����Q���#r1c�h�t�}t|dd�|jt|�d�y)Nr�z foo=bar; domain=.someother.localrr�r�s  r/�test_evil_local_domain_2z$CookieTests.test_evil_local_domain_2�s+���K���!�/�1S�T�����Q���#r1c��td��}t|�}t|dd�|jt	|�d�|j|j
dddjd	�|jt|d�d
�|jt|d�d�t|d
d�|jt	|�d�|jt|d
�d
�t|dd�|j|j
dddjd�|jt	|�d�|jt|d�d
�|jt|d�d�t|dd�|jt	|�d�t|dd�|jt	|�d�y)NTrYr�r}r<r�r�rqrrz$Version=1; foo=barr�rNzhttp://foo.net/fooz1spam=eggs; domain=foo.net; path=/foo; Version="1"zhttp://www.foo.net/foo/z&spam=eggs; domain=foo.net; Version="1"r�r$r�r#r"r�z($Version=1; spam=eggs; $Domain="foo.net"z#ni="ni"; domain=".net"; Version="1"zhttp://foo.co.uk/z'nasty=trick; domain=.co.uk; Version="1"r#)rr
r�r&r�r�r�r]s   r/�!test_two_component_domain_rfc2965z-CookieTests.test_two_component_domain_rfc2965�s���!�$�/���c�N��	�a�*�,B�C�����Q���#�������I�.�s�3�E�:�@�@�%�H�����q�*;�<�.�	0�	
����q�*?�@�"�E�
	�a�-�I�	K�����Q���#�����q�*>�?�.�	0�
	�a�2�>�	@�������J�/��8��@�F�F��	!�����Q���#�����q�*?�@�.�	0�����q�*C�D�C�	E�	�a�*�;�	=�����Q���#�	�a�,�?�	A�����Q���#r1c��ttdgdg����}tjj	d�}dg}t|d�}|j
||�|jt|�d�tjj	d�}t|d�}|j
||�|jt|�d	�tjj	d
�}t|d
�}|j
||�|jt|�d	�tjj	d
�}t|d
�}|j||�}|j|d�|jt|�d�|j|�|j|jd��y)
Nr�r�)�blocked_domains�allowed_domainsr��http://acme.com/�*Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/rr�r<rNr"r)r
rr�r�r�r�r�r&r�rQ�
set_cookier�r�
has_header)r)r�r�r�r�rJs      r/�test_domain_allowzCookieTests.test_domain_allow&sx���0�'�L�+�,�.�
/���n�n�$�$�%7�8��?�@���7�$6�7��	���#�s�#�����Q���#��n�n�$�$�%;�<���7�$:�;��	���#�s�#�����Q���#��n�n�$�$�%=�>���7�$<�=��	���#�s�#�����Q���#��n�n�$�$�%=�>���7�$<�=���.�.��c�*��	���W�Q�Z� �����Q���#�	���C� ��������1�2r1c��tddg��}t|��}dg}tjj	d�}t|d�}|j
||�|jt|�d�|jdg�}|j
||�|jt|�d	�|j�tjj	d
�}t|d
�}|j
||�|jt|�d	�tjj	d
�}|j|�|j|jd��|j|jd��|j�|jdg�|j
||�|jt|�d	�tjj	d�}t|d�}|j||�}|j|d�|jt|�d
�|j|�|j!|jd��|j�|jg�tjj	d�}t|d�}|j||�}|j
||�|jt|�d	�tjj	d�}|j|�|j|jd��tjj	d�}|j|�|j!|j#|d|��|j!|jd��|jdg�}tjj	d�}|j|�|j!|jd��tjj	d�}|j|�|j!|jd��y)NTr=)r1r�r�r�r�rr�r<zhttp://www.roadrunner.net/r�Cookie2r"r�zhttp://badacme.com/)rr
r�r�r�r�r�r&r��set_blocked_domainsr�r�rr�rQr�r�	return_ok)r)rr�r�r�r��prJs        r/�test_domain_blockzCookieTests.test_domain_blockEsy��!��;�-�9���S�!��?�@���n�n�$�$�%;�<���7�$:�;��	���#�s�#�����Q���#��#�#�Z�L�1��	���#�s�#�����Q���#�	���	��n�n�$�$�%A�B���7�$@�A��	���#�s�#�����Q���#��n�n�$�$�%A�B��	���C� �������x�0�1�������y�1�2�	���	�����
�.�	���#�s�#�����Q���#��n�n�$�$�%;�<���7�$:�;���.�.��c�*��	���W�Q�Z� �����Q���#�	���C� ��������1�2�	���	�����#��n�n�$�$�%7�8���7�$6�7���.�.��c�*��	���#�s�#�����Q���#��n�n�$�$�%7�8��	���C� �������x�0�1��n�n�$�$�%:�;��	���C� �������w�q�z�3�7�8��������1�2��#�#�Z�L�1���n�n�$�$�%7�8��	���C� ��������1�2��n�n�$�$�%:�;��	���C� ��������1�2r1c
��dD]�}dD]�}t�}|rtd��}t}d}ntd��}t}d}|j	|�d}|||d	|�|���|||d
|�d|���|j|jdd
djd�|j|jdd
djd�����y)N)TF)r%rNFrYrNTz; Version=1r��foo1=bar�foo2=barz; securer�r��foo1z#non-secure cookie registered secure�foo2z#secure cookie registered non-secure)	r
rr�r�r�rr��securer)r)r��
whitespacer�rr��vsr�s        r/�test_securezCookieTests.test_secure�s����B�%�
��K���-�e�<�C�+�C��B�-�d�;�C�'�C�&�B����S�!�,���A�s�b�*�=�>��A�s�r�:�F�G�� � ��J�J�~�.�s�3�F�;�B�B�9�;�����J�J�~�.�s�3�F�;�B�B�9�;�#&�r1c�f�t�}t|��}dg}tjj	d�}t|d�}|j
||�|jt|�d�tjj	d�}|j|�|j|jd��tjj	d�}|j|�|j|jd��tjj	d�}|j|�|j|jd��tjj	d�}|j|�|j|jd��y)	Nr��(Set-Cookie: session=narf; secure; path=/�https://www.acme.com/r<rr�zwss://www.acme.com/zws://www.acme.com/)
rr
r�r�r�r�r�r&r�r�rr�r�r)rr�r�r�r�s      r/�test_secure_blockzCookieTests.test_secure_block�sJ��!�#���S�!��=�>���n�n�$�$�%<�=���7�$;�<��	���#�s�#�����Q���#��n�n�$�$�%<�=��	���C� �������x�0�1��n�n�$�$�%;�<��	���C� ��������1�2��n�n�$�$�%:�;��	���C� �������x�0�1��n�n�$�$�%9�:��	���C� ��������1�2r1c�l�tdg��}t|��}dg}tjj	d�}t|d�}|j
||�|jt|�d�tjj	d�}|j|�|j|jd��tjj	d�}|j|�|j|jd��tjj	d	�}|j|�|j|jd��tjj	d
�}|j|�|j|jd��y)N�foos)�secure_protocolsr�r�r�r<rr�zfoos://www.acme.com/zfoo://www.acme.com/)
rr
r�r�r�r�r�r&r�r�rr�rr�s      r/�test_custom_secure_protocolsz(CookieTests.test_custom_secure_protocols�sN��!�F�8�<���S�!��=�>���n�n�$�$�%<�=���7�$;�<��	���#�s�#�����Q���#��n�n�$�$�%<�=��	���C� ��������1�2��n�n�$�$�%;�<��	���C� ��������1�2��n�n�$�$�%;�<��	���C� �������x�0�1��n�n�$�$�%:�;��	���C� ��������1�2r1c��ttd����}t|dd�t|d�}|j|d�y)NTrYr�r�zfoo=\b"a"r; Version=1z$Version=1; foo=\\b\"a\"r)r
rr�r&)r)r�rVs   r/�test_quote_cookie_valuez#CookieTests.test_quote_cookie_value�s>���0��>�?���a�/�1I�J��!�3�4������8�9r1c�"�d}ttd���}t||d�tjj|�}|j
t|�d�|j|�|j|jd��y)N�http://www.acme.comTrYr5r<r)r
rr�r�r�r�r&r�r�rr�)r)r�r�r�s    r/�test_missing_final_slashz$CookieTests.test_missing_final_slash�so��#���)�$�7�8���a��2�3��n�n�$�$�S�)������Q���#�	���C� �������x�0�1r1c�r�td��}t|�}d}t||d�t||�}|jd|d�t|�}d}t||d�t||�}|j	d|d	�t|�}d}t||d
�t||�}|j	d|d	�y)NTrYr�spam=eggs; Version=1�Domainz*absent domain returned with domain presentz%spam=eggs; Version=1; Domain=.bar.comz$Domain=".bar.com"zdomain not returnedz$spam=eggs; Version=1; Domain=bar.comz$Domain="bar.com"�rr
r�rRrI�r)rr�r�rVs     r/�test_domain_mirrorzCookieTests.test_domain_mirror�s���!�$�/���c�N��#���a��4�5��!�S�!������1�A�	C�
�c�N��#���a��E�F��!�S�!���
�
�*�A�/D�E��c�N��#���a��D�E��!�S�!���
�
�)�1�.C�Dr1c��td��}t|�}d}t||d�t||�}|jd|d�t|�}d}t||d�t||�}|j	d|d	�y)
NTrYrr��Pathz&absent path returned with path presentzspam=eggs; Version=1; Path=/z	$Path="/"zpath not returnedr�r�s     r/�test_path_mirrorzCookieTests.test_path_mirror�s~��!�$�/���c�N��#���a��4�5��!�S�!�������$L�M��c�N��#���a��<�=��!�S�!���
�
�k�1�&9�:r1c���td��}t|�}d}t||d�t||�}|jd|d�t|�}d}t||d�t||�}|j	|dd	�t|�}d}t||d
�t||�}|jd|d�t|�}d}t||d
�t||�}|jd|d�y)NTrYrr��Portz&absent port returned with port presentzspam=eggs; Version=1; Portz\$Port([^=]|$)z-port with no value not returned with no valuezspam=eggs; Version=1; Port="80"z
$Port="80"z5port with single value not returned with single valuez$spam=eggs; Version=1; Port="80,8080"z$Port="80,8080"z;port with multiple values not returned with multiple values)rr
r�rRr'rIr�s     r/�test_port_mirrorzCookieTests.test_port_mirrors��!�$�/���c�N��#���a��4�5��!�S�!�������$L�M��c�N��#���a��:�;��!�S�!������-�H�	J�
�c�N��#���a��?�@��!�S�!���
�
�l�A�M�	O�
�c�N��#���a��D�E��!�S�!���
�
�'���	 r1c��ttd���}d}t||d�t||�}|jd|d�y)NTrYrzfspam=eggs; Version=1; Comment="does anybody read these?"; CommentURL="http://foo.bar.net/comment.html"�Commentz:Comment or CommentURL cookie-attributes returned to server)r
rr�rR)r)r�r�rVs    r/�test_no_return_commentz"CookieTests.test_no_return_comment+sN���)�$�7�8��#���a��E�	F�
�!�S�!������A�H�	Jr1c�0�ttd���}t|dd�t|dd�t|dd�t|dd�t|d	d
�gd�}gd�}gd
�}gd�}t	d�D]�}d}|D]�}|j|t�|j|j||�|j|j||�|j|j||�|j|j||�|dz}����y)NTrYzhttp://blah.spam.org/zefoo=eggs; Version=1; Comment="does anybody read these?"; CommentURL="http://foo.bar.net/comment.html"zhttp://www.acme.com/blah/zspam=bar; securezfoo=bar; secure; Version=1zfoo=bar; path=/; Version=1�http://www.sol.no�sbang=wallop; version=1; domain=".sol.no"; port="90,100, 80,8080"; max-age=100; Comment = "Just kidding! (\"|\\\\) ")r<rr<r<r<)rqr�rqrq�bang)z
blah.spam.orgr�r�r�z.sol.no)r�r\rZr�r�r�rr<)r
rr�r��range�assertIsInstancerr&rur'rrv)r)�cs�versions�names�domains�paths�ir�s        r/�test_Cookie_iteratorz CookieTests.test_Cookie_iterator5s��
�*�4�8�
9���b�1�4E�	F�	�"�9�;M�N��b�5�2�	4��b�5�2�	4��b�-�K�	L�
#��5��.��2���q��A��A����%�%�a��0�� � ����H�Q�K�8�� � �����q��2�� � ����7�1�:�6�� � �����q��2���E��
�r1c�r�|jtdg�gd�g�|jtdg�gd�g�|jtdg�ddgg�|jtdg�gd�g�|jtd	g�d
dgg�|jtdg�g�y)
Nzfoo=bar; path=/; domain)rp)rvr�)rNrtz)foo=bar; expires=Foo Bar 12 33:22:11 2000)rp)rsNrtrqr�rtzfoo=bar; expireszfoo=bar; versionrp)ruNrNrwrWs r/rzz!CookieTests.test_parse_ns_headersUs�������7�8�9�A�
B�	�	
����I�J�K�
B�C�	�
	
����e�W�%��-�
.�/�	�
	
����0�1�2�
B�C�	E�	
����0�1�2��/�
0�1�	3�	
���)�2�$�/��4r1c�2�d�}ttj�dz�}dgdgdgdgdgd|zgfD]%}||�}|jt|�d	��'d
g}||�}|jddd
}|j|j�y)Nc��t�}tjjd�}t	|d�}|j||�|S)Nr2)r
r�r�r�r�r�)r�r�r�r s    r/�cookiejar_from_cookie_headerszICookieTests.test_bad_cookie_header.<locals>.cookiejar_from_cookie_headersrs@����A��.�.�(�(�)B�C�C��W�&?�@�A�
���a��%��Hr1rMzSet-Cookie: z
Set-Cookie2: z-Set-Cookie2: a=foo; path=/; Version=1; domainzSet-Cookie: b=foo; max-age=oopszSet-Cookie: b=foo; version=spamzSet-Cookie:; Expires=%srz3Set-Cookie: c=foo; expires=Foo Bar 12 33:22:11 2000r3r�r�)rr8r&r�r�rQrs)r)r�rTr�r�r,s      r/�test_bad_cookie_headerz"CookieTests.test_bad_cookie_headerps���	��t�y�y�{�4�/�0����
��
<�=�
.�/�
.�/�
&��
/�0�
�G�.�g�6�A����S��V�Q�'�
� I�I��)�'�2�����-�.�s�3�C�8�����&�.�.�)r1N)+rirjrkr!r.r9rGrKrWr^rbrkrnrwr|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�rzr�rlr1r/r
r
�s���^&�B)�@<�>.(�`	*�55�r&C�P<�7�21� N�0?�<� )�>�"?�H$�)�.$�`$�L�Q�$�$�$�*$�X3�>A3�F;�.3�83�6:�2�E�.
;� �>J��@5�6*r1r
c�T�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zy
)�LWPCookieTestsc�r�tj�ddz}g}ttd���}tj
j
dddi��}|jd	|z�t|d
�}|j||�tj
j
d
�}|j|�|j|jd�d�|j|jd
�d�|jd�t|d
�}|j||�tj
j
d�}|j|�|jd�}|jd|�|jd|�|jd�t|d�}|j||�tj
j
d
�}|j|�|jd�}|jd|�|jd|�|jd|�tj
j
d�}|j|�|jd�}|jd|�|jd|�|j|j!d��y)Nrr<TrYr;ryr~rzzVSet-Cookie: CUSTOMER=WILE_E_COYOTE; path=/ ; expires=Wednesday, 09-Nov-%d 23:12:40 GMTr�rzCUSTOMER=WILE_E_COYOTEr��$Version="1"�4Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/zhttp://www.acme.com/foo/bar� PART_NUMBER=ROCKET_LAUNCHER_0001z%Set-Cookie: SHIPPING=FEDEX; path=/foor�zSHIPPING=FEDEXr&zSHIPPING=FEDEX;)r8�	localtimer
rr�r�r�r�r�r�r�r&r�rIrRr�
startswith)r)�
year_plus_oner�r�r�r�rVs       r/�test_netscape_example_1z&LWPCookieTests.test_netscape_example_1�sQ��J���(��+�a�/�
����)�D�9�:���n�n�$�$�%>�%�'8�9�%�;��	���
8�:G�
H�	I��7�$:�;��	���#�s�#��n�n�$�$�%;�<��	���C� ��������1�3K�L�������	�2�N�C����M�N��7�$:�;��	���#�s�#��n�n�$�$�%B�C��	���C� ��N�N�8�$���
�
�8�!�<��
�
�.��2����>�?��7�$9�:��	���#�s�#��n�n�$�$�%;�<��	���C� ��N�N�8�$���
�
�8�!�<��
�
�.��2����)�1�-��n�n�$�$�%?�@��	���C� ��N�N�8�$���
�
�8�!�<��
�
�.��2�������%6�7�8r1c�Z�t�}g}tjjd�}|j	d�t|d�}|j
||�tjjd�}|j|�|j|jd�d�|j	d�t|d�}|j
||�tjjd�}|j|�|j|jd�d�y)Nr�r�rr�z6Set-Cookie: PART_NUMBER=RIDING_ROCKET_0023; path=/ammozhttp://www.acme.com/ammozBPART_NUMBER=RIDING_ROCKET_0023;\s*PART_NUMBER=ROCKET_LAUNCHER_0001)r
r�r�r�r�r�r�r�r&r�r'�r)r�r�r�r�s     r/�test_netscape_example_2z&LWPCookieTests.test_netscape_example_2�s���0
�K�����n�n�$�$�%;�<�����M�N��7�$:�;��	���#�s�#��n�n�$�$�%;�<��	���C� ��������1�;�	=�	���D�	F��7�$:�;��	���#�s�#��n�n�$�$�%?�@��	���C� ��������1�=�	>r1c��ttd���}t|dd�}|j|�t|dd�}|j	|d�t|dd	�}|j	|d
�|j	|d�|j	|d�t|d
�}|j	|d�|jd|�y)NTrYzhttp://www.acme.com/acme/loginz3Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"z!http://www.acme.com/acme/pickitem�=Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"z=^\$Version="?1"?; Customer="?WILE_E_COYOTE"?; \$Path="/acme"$z!http://www.acme.com/acme/shippingz+Shipping="FedEx"; Version="1"; Path="/acme"z^\$Version="?1"?;z7Part_Number="?Rocket_Launcher_0001"?;\s*\$Path="\/acme"z-Customer="?WILE_E_COYOTE"?;\s*\$Path="\/acme"z http://www.acme.com/acme/processz%Shipping="?FedEx"?;\s*\$Path="\/acme"�
WILE_E_COYOTE)r
rr�rr'rI�r)r�r,s   r/�test_ietf_example_1z"LWPCookieTests.test_ietf_example_1#s���
�)�$�7�8��,�
�/�A�C��	
���� �&�q�"E� ;�<��	
����L�	N�*�q�"E�L�N��	
����!5�6�����"7�	8�����"7�	8�*�q�"D�E������!I�J��
�
�o�v�.r1c���ttd���}t|ddd�t|d�}|j|d�t|d�}|j	d	|�|jd
|�y)NTrYz&http://www.acme.com/acme/ammo/specificrz@Part_Number="Riding_Rocket_0023"; Version="1"; Path="/acme/ammo"z!http://www.acme.com/acme/ammo/...z(Riding_Rocket_0023.*Rocket_Launcher_0001zhttp://www.acme.com/acme/parts/�Rocket_Launcher_0001�Riding_Rocket_0023)r
rr�r'rIrRr	s   r/�test_ietf_example_2z"LWPCookieTests.test_ietf_example_2�sz��
�)�$�7�8��	�
�7�K�N�	P�"�q�"E�F������!L�M��q�"C�D���
�
�,�f�5����-�v�6r1c���td��}t|��}d}t|dd�}|j|�t|dd�}|j	t|�d�t|d	d
�}|j	t|�d�t|d	d�}|j	t|�d�t|d
d�}|j	t|�d�t|dd�}|j	t|�d�t|dd�}|j	t|�d�t|dd�}|j	t|�d�t|dd�}|j	t|�d�t|dd�}|j	t|�d�t|dd�}|j	t|�d�tj}	|j|d��t|�}t|��}|j|d��t
j|�|j	|t|��y#t
j|�wxYw)NTrYr�zmax-age=3600r�z!foo=bar; domain=".com"; version=1z'ping=pong; domain="acme.com"; version=1r<zhttp://www.a.acme.comz'whiz=bang; domain="acme.com"; version=1z,wow=flutter; domain=".a.acme.com"; version=1r"zhttp://125.125.125.125z*zzzz=ping; domain="125.125.125"; version=1r�z6blah=rhubarb; domain=".sol.no"; path="/foo"; version=1zhttp://www.sol.no/foo/barz3bing=bong; domain=".sol.no"; path="/foo"; version=1r#z5whiz=ffft; domain=".sol.no"; port="90,100"; version=1r�r�z9foo9=bar; version=1; domain=".sol.no"; port; max-age=100;�zhttp://www.sol.no/<oo/z"foo8=bar; version=1; path="/%3coo"r7r�)rrr�rr&r�rr�r�r(r�r�)r)rr��max_ager,r��olds       r/�test_rejectionzLWPCookieTests.test_rejection�sc��!�$�/����$�� ���q�"7�B�D��������q�"7�H�J������Q���#��q�"9�H�J������Q���#��q�"9�M�O������Q���#��q�":�K�M������Q���#��q�"5� +�,��	
����Q���#��q�"=� +�,��	
����Q���#��q�"5� +�,��	
����Q���#��
�"�
A�B��
	
����Q���#��q�"5� .�/��	
����Q���#��q�":�D�F������Q���#��#�#��	'�
�F�F�8�D�F�1��q�'�C��C�(�A�
�F�F�8�D�F�1����X�&�����d�1�g�&��
���X�&�s�=I�Ic�D�ttd���}t|dd�t|dd�}tjdtj
�}|j
d|�|j||�t|d	�}|j|�t|d
�}y)NTrYz7http://www.acme.com/foo%2f%25/%3c%3c%0Anew%C3%A5/%C3%A5zfoo  =   bar; version    =   1u/http://www.acme.com/foo%2f%25/<<%0anewå/æøåz bar=baz; path="/foo/"; version=1z^\$version=\"?1\"?r�u-http://www.acme.com/foo/%25/<<%0anewå/æøåuhttp://www.acme.com/ü)	r
rr�r*�compile�IrIr'r)r)r�r,�
version_res    r/�test_url_encodingz LWPCookieTests.test_url_encoding"s���
�)�$�7�8���a�5�6�	8��
�H�.�0���Z�Z� 5�r�t�t�<�
��
�
�i��(������,��
�F�H������ ��q�"<�=�r1c����tj�ddz}tj�t	�td����}t
|dd�t
|dd�t
|dd	�d
|fz}t|dd|z�t|dd
|z�t|dd|z�|D]$}|jdk(s�|jdd��&�fd�}||d�}|jt|�d�|jdt|��|jdt|��||d�}|jt|�d�|jdt|��y)Nrr<TrYr�r�z foo1=bar; max-age=100; Version=1z4foo2=bar; port="80"; max-age=100; Discard; Version=1zfoo3=bar; secure; Version=1zexpires=09-Nov-%d 23:12:40 GMTzhttp://www.foo.com/zfooa=bar; %szfoob=bar; Domain=.foo.com; %sz fooc=bar; Domain=www.foo.com; %sr��HTTPOnlyrNc����	|j|��t�td���}|j|��t	j
��|S#t	j
��wxYw)Nr�TrY)r�rrr�rr�)r`r��new_cr�s   �r/�save_and_restorez5LWPCookieTests.test_mozilla.<locals>.save_and_restoreRs^���
+����~��6�(��)<�T�)J�L���
�
�.�
�9�� � ��*��L��� � ��*�s�:A�A+r7zname='foo1', value='bar'zrest={'HTTPOnly': ''}Fr�)r8r�rr�rrr�r�r'�set_nonstandard_attrr&r�rIr()r)rr�rsr,rrr�s       @r/�test_mozillazLWPCookieTests.test_mozilla8s^������(��+�a�/�
��#�#���X�$7��$E�
G���a�/�8�	:��a�/�L�	N��a�/�1N�O�2�m�5E�E���!�2�(�7�2�	4��!�2�9�G�C�	E��!�2�<�w�F�	H��F��{�{�f�$��+�+�J��;��	�!��D�)������U��Q�'��
�
�0�$�u�+�>��
�
�-�t�E�{�;� ��E�*������U��Q�'��
�
�0�$�u�+�>r1c��t�}g}tjjd�}|j	d�t|d�}|j
||�|j	d�t|d�}|j
||�tjjd�}|j|�|jd|jd��|jd|jd��y)Nzhttp://foo.bar.acme.com/fooz4Set-Cookie: Customer=WILE_E_COYOTE; domain=.acme.comzhttp://www.acme.com/fooz4Set-Cookie: PART_NUMBER=3,4; domain=foo.bar.acme.comzPART_NUMBER=3,4rzCustomer=WILE_E_COYOTE)
r
r�r�r�r�r�r�r�rIr�rs     r/�test_netscape_miscz!LWPCookieTests.test_netscape_misces����K�����n�n�$�$�%B�C��	���M�N��7�$=�>��	���#�s�#�
	���M�N��7�$=�>��	���#�s�#��n�n�$�$�%B�C��	���C� ��
�
�'�����)A�B��
�
�.�s�~�~�h�/G�Hr1c��ttd���}t|dd�t|dd�}|jd|�t|dd�t|d�}|jd|�|j	t|�d	�y)
NTrY�http://example/z#foo1=bar; PORT; Discard; Version=1;z$foo2=bar; domain=".local"; Version=1r�zfoo3=bar; Version=1r�r#)r
rr�rIr&r�r	s   r/�test_intranet_domains_2965z)LWPCookieTests.test_intranet_domains_2965|s����)�$�7�8���a�*�;�	=��q�"3�E�G���
�
�j�&�)��a�*�,A�B��q�"3�4���
�
�j�&�)�����Q���#r1c�.�ttd���}t|dd�t|dd�}|jt	|�d�|jd|�t|d�}|jd|�|jt	|�d�y)NFrYr#r�zfoo2=bar; domain=.localr"r�)r
rr�r&r�rIr	s   r/�test_intranet_domains_nsz'LWPCookieTests.test_intranet_domains_ns�s����)�E�:�;���!�.�
�;�"�1�&7�#<�>������Q���#��
�
�j�&�)�"�1�&7�8���
�
�j�&�)�����Q���#r1c��ttd���}g}tjj	d�}|jd�t
|d�}|j||�tjj	d�}|j|�|j|jd�d�|j|jd�d�tjj	d	�}|j|�|j|jd�d�|j|jd�d�y)
NTrYzhttp://www.ants.com/z,Set-Cookie: JSESSIONID=ABCDERANDOM123; Path=rzJSESSIONID=ABCDERANDOM123r�r�zhttp://www.ants.com:8080)r
rr�r�r�r�r�r�r�r&r�rs     r/�test_empty_pathzLWPCookieTests.test_empty_path�s
��
�)�D�9�:�����n�n�$�$�%;�<�����E�F��7�$:�;��	���#�s�#��n�n�$�$�%;�<��	���C� ��������1�4�	6�������	�2�N�C��n�n�$�$�%?�@��	���C� ��������1�4�	6�������	�2�N�Cr1c��tj�ddz}tjj	d�}g}|jd�|jd|z�|jd|z�|jd�|jd�t
|d�}t�}|j||�ddddd	�}|D]}d
|jz}||dz||<�|j�|D]}d|jz}||dz||<�|j|d|d
�|j|dd�|j|dd�y)Nrr<z"http://www.perlmeister.com/scriptsz$Set-Cookie: s1=session;Path=/scriptszWSet-Cookie: p1=perm; Domain=.perlmeister.com;Path=/;expires=Fri, 02-Feb-%d 23:24:20 GMTz>Set-Cookie: p2=perm;Path=/;expires=Fri, 02-Feb-%d 23:24:20 GMTz<Set-Cookie: s2=session;Path=/scripts;Domain=.perlmeister.comz2Set-Cookie2: s3=session;Version=1;Discard;Path="/")�
session_after�
perm_after�session_before�perm_beforez	%s_beforez%s_afterr+r-r*r,)
r8r�r�r�r�r�r�r
r�r�rSr&�assertNotEqual)	r)rr�r�r�r��counterr,�keys	         r/�test_session_cookiesz#LWPCookieTests.test_session_cookies�sx�����(��+�a�/�
�
�n�n�$�$�%I�J�������=�>����D�$�%�	&�	���0�2?�@�	A����1�	2����K�L��7�$H�I���K��	���#�s�#�$%�!"�%&�"#�%���F�����,�C�"�3�<�!�+�G�C�L��	
���!��F��v�|�|�+�C�"�3�<�!�+�G�C�L��
	
�����.��
�0F�G������1�1�5����G�$4�5�q�9r1N)rirjrkrrr
rrrrr!r$r&r(r1rlr1r/r�r��sI��Y9�v1>�fg/�`37�jX'�t>�,+?�ZI�.$�
$�D�>(:r1r��__main__)2�__doc__r�r��sysr*�test.supportrrr8r�urllib.requestr��http.cookiejarrrrrr	r
rrr
rrrrrrrrrrrrrr�platformr
�TestCaserrnr�r�r�r�r�r
r�ri�mainrlr1r/�<module>r;s���"�	��
�	�"�(����!�!�!�!�!�!�!��\�\�W�
$�	�oB�H�%�%�oB�dd!�(�#�#�d!�N)�)�E�D�
�t'��*�*�t'�lM*�(�#�#�M*�`K	:�X�&�&�K	:�\�z���H�M�M�O�r1

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists