Your IP : 216.73.217.129


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



���]&*�@s�ddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZmZm
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZGdd�dej �Z!Gdd�dej �Z"Gdd�d�Z#d	d
�Z$dd�Z%d
d�Z&Gdd�dej �Z'Gdd�dej �Z(Gdd�dej �Z)ddd�Z*e+dkr�e*dd�dS)�N)�	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_hostc@speZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�
DateTimeTestscCs�d}d
}|jt|�d�|jt||�d�|jt|d|�d�|jt|d|�d	�t�}td
�}x1||fD]#}|j|dd||f�q�WdS)Nix+�<�iz2002-04-19 14:36:40Zz2002-04-20 14:36:40Z�z2002-04-21 14:36:40Z�z2002-04-22 14:36:40Zi �z!^\d{4}-\d\d-\d\d \d\d:\d\d:\d\dZ$zbad time2isoz format: %s %si�Q)�assertEqualr�assertRegex)�self�base�day�az�bz�text�r%�8/opt/alt/python35/lib64/python3.5/test_http_cookiejar.py�test_time2isozs	zDateTimeTests.test_time2isozcCs�d}d
}|jt|�d�|jt||�d�|jt|d|�d�|jt|d|�d	�t�}td
�}x1||fD]#}|j|dd||f�q�WdS)Nix+�<rizFri, 19-Apr-2002 14:36:40 GMTzSat, 20-Apr-2002 14:36:40 GMTrzSun, 21-Apr-2002 14:36:40 GMTrzMon, 22-Apr-2002 14:36:40 GMTi �z;[a-zA-Z]{3}, \d{2}-[a-zA-Z]{3}-\d{4} \d{2}:\d{2}:\d{2} GMT$zbad time2netscape format: %s %si�Q)rrr)rr r!r"r#r$r%r%r&�test_time2netscape"s 	z DateTimeTests.test_time2netscapecCsRdd�}|j|d�d�|j|d�d�|j|d�d�dS)NcSstjt|��dd�S)N�)�time�gmtimer)r$r%r%r&�
parse_date9sz0DateTimeTests.test_http2time.<locals>.parse_datez01 Jan 2001���r�z	03-Feb-20��rrz	03-Feb-98��)r-r.r.rrr/)r0rrrrr/)r1rrrrr/)r)rr,r%r%r&�test_http2time8szDateTimeTests.test_http2timecCs�ddddddddd	d
ddd
dg}d}t|�}d}|j||d|||f�xq|D]i}|jt|�||�|jt|j��||j��|jt|j��||j��qoWdS)NzThu, 03 Feb 1994 00:00:00 GMTz 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  i�>P-z1994-02-03 00:00:00Zz%s  =>  '%s' (%s))rrr�lower�upper)r�tests�test_t�result�expected�sr%r%r&�test_http2time_formatsDs.	
%z$DateTimeTests.test_http2time_formatscCsex^ddddddddd	d
ddd
dgD],}|jt|�d|t|�f�q1WdS)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:00z01-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(%s) is not None
http2time(test) %s)�assertIsNoner)r�testr%r%r&�test_http2time_garbagehs$
z$DateTimeTests.test_http2time_garbagecCsRdd�}|j|d�d�|j|d
�d
�|j|d�d�dS)NcSstjt|��dd�S)Nr))r*r+r)r$r%r%r&r,~sz/DateTimeTests.test_iso2time.<locals>.parse_dateZ19940203T141529Z��rr���z1994-02-03 07:15:29 -0700z1994-02-03 19:45:29 +0530)r@rrrArBrC)r@rrrArBrC)r@rrrArBrC)r)rr,r%r%r&�
test_iso2time}szDateTimeTests.test_iso2timec
Cs�ddddddddd	d
g
}d}xq|D]i}|jt|�||�|jt|j��||j��|jt|j��||j��q1WdS)Nz1994-02-03 00:00:00 -0000z1994-02-03 00:00:00 +0000z1994-02-03 00:00:00z
1994-02-03z1994-02-03T00:00:00Z19940203z1994-02-02 24:00:00Z19940203T000000Zz
  1994-02-03 z  1994-02-03T00:00:00  i�>P-)rrr3r4)rr5r6r9r%r%r&�test_iso2time_formats�s	
%z#DateTimeTests.test_iso2time_formatscCs_xXddddddddd	d
ddgD],}|jt|�d
|t|�f�q+WdS)Nr;r<z Thursday, 03-Feb-94 00:00:00 GMTz
1980-00-01z
1980-13-01z
1980-01-00z
1980-01-32z1980-01-01 25:00:00z1980-01-01 00:61:00z01-01-1980 00:00:62z01-01-1980T00:00:62z)19800101T250000Z1980-01-01 00:00:00 -2500z*iso2time(%s) is not None
iso2time(test) %s)r=r)rr>r%r%r&�test_iso2time_garbage�s 
z#DateTimeTests.test_iso2time_garbageN)�__name__�
__module__�__qualname__r'r(r2r:r?rDrErFr%r%r%r&rs$rc@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�HeaderTestscCsFd	d
dgg}x-ddgD]}|jt|g�|�qWdS)N�foo�bar�expires�d9W�version�0z)foo=bar; expires=01 Jan 2040 22:23:32 GMTz+foo=bar; expires="01 Jan 2040 22:23:32 GMT")rKrL)rMrN)rOrP)rr)rr8�hdrr%r%r&�test_parse_ns_headers�s

z!HeaderTests.test_parse_ns_headerscCsCddgg}x-ddgD]}|jt|g�|�qWdS)	NrKrLrO�1zfoo=bar; version="1"zfoo=bar; Version="1")rKrL)rOrS)rr)rr8rQr%r%r&�test_parse_ns_headers_version�s

z)HeaderTests.test_parse_ns_headers_versioncCs2d}ddgg}|jt|g�|�dS)Nz expires=01 Jan 2040 22:23:32 GMTrM�01 Jan 2040 22:23:32 GMTrOrP)rMrU)rOrP)rr)rrQr8r%r%r&�#test_parse_ns_headers_special_names�sz/HeaderTests.test_parse_ns_headers_special_namescCsBtddgg�}|j|d�|jtgg�d�dS)NrKrL�bazzfoo; bar=bazr;)rKN)rLrW)rr)rZjoinedr%r%r&�test_join_header_words�sz"HeaderTests.test_join_header_wordscCs�ddggfddggfddggfddggfddggfddggfd	d d!ggfdd"d#ggfdd$ggfdd%d&ggfdd'd(d)ggfdd*gd+gd,ggfdd-d.gd/gd0gd1ggfg
}x�|D]�\}}yt|g�}WnLddl}ddl}|j�}|jd|�d|j�}YnX|j||d|||f�qWdS)2NrKzfoo=barrLz	   foo   z
   foo=   r;z   foo=z   foo=   ; z   foo=   ; bar= baz rWzfoo=bar bar=bazzfoo= bar=baz�bar=bazzfoo=bar;bar=bazzfoo bar bazza, b, c�a�b�cz(foo; bar=baz, spam=, foo="\,\;\"", bar= �spam�,;"rz (error -- traceback follows)

%sz:
When parsing: '%s'
Expected:     '%s'
Got:          '%s'
)rKN)rKrL)rKN)rKr;)rKr;)rKr;)rKr;)rLrW)rKrL)rLrW)rKrY)rKrL)rLrW)rKN)rLN)rWN)rZN)r[N)r\N)rKN)rLrW)r]r;)rKr^)rLr;)r�	traceback�io�StringIO�	print_exc�getvaluer)rr5�arg�expectr7r_r`�fr%r%r&�test_split_header_words�s2	z#HeaderTests.test_split_header_wordscCs�ddddddddd d!d"d#d$g
}xR|D]J\}}t|g�}t|�}|j||d||||f�q4WdS)%NrK�foo=bar�	   foo   �foo=�foo=""�foo=bar bar=baz�foo=bar; bar=baz�foo=bar;bar=baz�foo bar baz�
foo; bar; baz�foo="\"" bar="\\"�foo="\""; bar="\\"�	foo,,,bar�foo, bar�foo=bar,bar=baz�foo=bar, bar=baz�text/html; charset=iso-8859-1�text/html; charset="iso-8859-1"�)foo="bar"; port="80,81"; discard, bar=baz�'foo=bar; port="80,81"; discard, bar=baz�Basic realm="\"foo\\\\bar\""�Basic; realm="\"foo\\\\bar\""zM
When parsing: '%s'
Expected:     '%s'
Got:          '%s'
Input was:    '%s'
)rKrK)rhrh)rirK)rjrk)rlrm)rnrm)rorp)rqrr)rsrt)rurv)rwrx)ryrz)r{r|)rrr)rr5rdre�input�resr%r%r&�test_roundtrip�s*	zHeaderTests.test_roundtripN)	rGrHrIrRrTrVrXrgrr%r%r%r&rJ�s	
"rJc@s.eZdZgddd�Zdd�ZdS)�FakeResponseNcCs4ddl}|jdj|��|_||_dS)Nr�
)�emailZmessage_from_string�join�_headersZ_url)r�headers�urlr�r%r%r&�__init__!szFakeResponse.__init__cCs|jS)N)r�)rr%r%r&�info(szFakeResponse.info)rGrHrIr�r�r%r%r%r&r� sr�cGst|||d�S)NzSet-Cookie2)�	_interact)�	cookiejarr��set_cookie_hdrsr%r%r&�
interact_2965*sr�cGst|||d�S)Nz
Set-Cookie)r�)r�r�r�r%r%r&�interact_netscape-sr�c	Cs�tjj|�}|j|�|jdd�}g}x%|D]}|jd||f�q>Wt||�}|j||�|S)Nr	r;z%s: %s)�urllib�request�Request�add_cookie_header�
get_header�appendr��extract_cookies)	r�r�r�Zhdr_name�reqZ
cookie_hdrr�rQr~r%r%r&r�0s

r�c@s(eZdZdd�Zdd�ZdS)�FileCookieJarTestscCs�tjj}t�}t|dd�|j|jdddjd�z3|j|dd�t�}|j	|dd�Wdyt
j|�Wntk
r�YnXX|j|jdddjd�dS)Nzhttp://www.acme.com/Zboozwww.acme.com�/�ignore_discardT)
r>�support�TESTFNrr�r�_cookies�value�save�load�os�unlink�OSError)r�filenamer\r%r%r&�test_lwp_valueless_cookie>s	"	
z,FileCookieJarTests.test_lwp_valueless_cookiecCstjj}xyttfD]k}|�}y|jdd�Wn8tk
rv}z|j|jt	�WYdd}~XqX|j
d�qWz`t|d��J}|jd�x3ttfD]%}|�}|j
t	|j|�q�WWdQRXWdytj|�Wntk
rYnXXdS)Nr�zAfor this test to work, a file with this filename should not existz%expected OSError for invalid filename�wzoops
)r>r�r�rr
r�r�ZassertIsNot�	__class__rZfail�open�writeZassertRaisesr�r�)rr�Zcookiejar_classr\�excrfr%r%r&�test_bad_magicMs$	&
	%
z!FileCookieJarTests.test_bad_magicN)rGrHrIr�r�r%r%r%r&r�=sr�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAS)B�CookieTestscCs�t�}x�dddddddddd d!d"d#d$d%d&d'd(d)gD]V\}}}tjj|�}|j||�}|r�|j|�qI|j|�qIWdS)*N�http://foo.bar.com/�blah.comF�rhubarb.blah.com�rhubarb.foo.bar.com�.foo.bar.comT�foo.bar.com�.bar.com�bar.com�com�http://foo.com/�rhubarb.foo.com�.foo.com�foo.com�http://foo/�rhubarb.foo�.foorK�	foo.local�.local�http://barfoo.com)r�r�F)r�r�F)r�r�F)r�r�T)r�r�T)r�r�T)r�r�T)r�r�T)r�r�F)r�r�T)r�r�T)r�r�T)r�r�F)r�r�T)r�rKT)r�r�T)r�r�T)r�r�F)r�r�F)rr�r�r�Zdomain_return_ok�
assertTrue�assertFalse)r�polr��domain�okr��rr%r%r&�test_domain_return_ok�s4	z!CookieTests.test_domain_return_okcCs\tjj}t|�}t|dd�t|dd�|jddd}|j|j�|j|j	d�|jddd}|j|j�|j|j	d�|jt
|�d�t|�}|jd	d
dd
�z&t|�}|j
d	d
dd
�Wdtj|j�X|jt|�tjdd|��|jt|d�d�dS)Nzhttp://www.acme.com/�eggsz"spam"; path=/foo/zwww.acme.comr�z/foo/z"spam"zJ"spam"; path="/foo/"; domain="www.acme.com"; path_spec; discard; version=0Zignore_expiresTr�zpath_specified=%sFzhttp://www.acme.com/foo/z"spam"; eggszpath_specified=Truezpath_specified=False)r>r�r�r
r�r�r=r�r�namer�reprr�Zrevertr�r�r��re�sub)rr�r\�cookieZold_strr%r%r&�test_missing_value�s0	
zCookieTests.test_missing_valuec
Cs�x�ddddddgD]�\}}}td|d|�}t|�}t|dd�y|jd	d
d}Wntk
r�|j|�YqX|j|j|�t|dd�|r|jd	d
d
}|j|jd�qWdS)NFrTr.�rfc2109_as_netscape�rfc2965zhttp://www.example.com/zni=ni; Version=1zwww.example.comr��nizfoo=bar; Version=1rK)NFr)NTr.)FFN)FTr.)TFr)TTr)	rr
r�r��KeyErrorr=rrOr�)rr�r�rO�policyr\r�Z
cookie2965r%r%r&�test_rfc2109_handling�s,	
	z!CookieTests.test_rfc2109_handlingcCsKt�}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�dS)Nzhttp://www.acme.com/z0spam=eggs; DoMain=.acme.com; port; blArgh="feep"zni=ni; port=80,8080zhttp://www.acme.com:80/znini=nizfoo=bar; expires=z-spam=eggs; expires="Foo Bar 25 33:22:11 3022"z	fortytwo=z=unladenswallowZholyhandgrenadez	.acme.comr�r]ZblArghZblarghzwww.acme.comr�z80,8080ZninirKZfortytwor;)r
r�r�rr�r�Zdomain_specified�portrr�Zport_specifiedZhas_nonstandard_attrr=rMZassertIsNotNoner�)rr\r�rKr]r%r%r&�test_ns_parser�sD		zCookieTests.test_ns_parsercCs^t�}t|dd�t|dd�|jdd}|jd|�|jd|�dS)Nzhttp://www.acme.com/zexpires=eggszversion=eggs; spam=eggszwww.acme.comr�rMrO)r
r�r��assertIn)rr\�cookiesr%r%r&�test_ns_parser_special_names&s	z(CookieTests.test_ns_parser_special_namescCs�t�}ttj�d�}t|dd|�|jt|�d�ttj�d�}t|dd|�t|d�}|jt|�d�|jd|�|jd|�t|dd|�t|dd	|�|jt|�d
�t|dd|�t|dd|�t|d�}|jt|�d�t|d
d�|jt|�d�|j�|jt|�d�|jd|�t	dddddddddddddddi�}|j|j
d�dS)Nizhttp://www.acme.com/zspam="bar"; expires=%sr.zfoo="eggs"; expires=%sz
spam="bar"rKzeggs="bar"; expires=%szbar="bar"; expires=%srz!eggs="bar"; expires=%s; max-age=0z bar="bar"; max-age=0; expires=%szhttp://www.rhubarb.net/zwhum="fizz"rrr�r�Fzwww.python.orgTr�z1444312383.018307i?uV)r
rr*r�r�lenr��assertNotIn�clear_session_cookiesr	rM)rr\�futureZnow�hr�r%r%r&�test_expires1sF	
					zCookieTests.test_expirescCs�tdd�}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�dS)Nr�Tzhttp://www.acme.com/zspam="bar"; Version="1"r�zwww.acme.comzhttp://www.acme.com/blahzeggs="bar"; Version="1"z http://www.acme.com/blah/rhubarbz/blah/z!http://www.acme.com/blah/rhubarb/z/blah/rhubarb/z
spam="bar"z
eggs="bar"z/blahz
/blah/rhubarb)rr
r�r�r�r�)rr�r\r%r%r&�test_default_pathas6						zCookieTests.test_default_pathcCsYt�}d}d}t|||�|jd|jd�|jt||�|�dS)Nzhttp://example.com/?spam/eggsz
eggs="bar"r�zexample.com)r
r�r�r�r)r�cjZurir�r%r%r&�test_default_path_with_query�s	z(CookieTests.test_default_path_with_queryc
Cs[ddddddddddddg}x*|D]"\}}|jt|�|�q1WdS)N�/foo%2f/bar�/foo%2F/bar�
/foo%%/bar�/fo%19o/bar�/fo%7do/bar�/fo%7Do/bar�	/foo/bar&�	/foo//bar�	~/foo/bar�	/foo/bar�/foo%19/bar�	/}foo/bar�/%7Dfoo/bar�
/foo/barü�/foo/bar%C3%BC�/foo/barꯍ�/foo/bar%EA%AF%8D)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)rr)rZcasesrdr7r%r%r&�test_escape_path�s	zCookieTests.test_escape_pathcCs|tjjd�}|jt|�d�tjjd�}|jt|�d�tjjd�}|jt|�d�dS)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�rr)rr�r%r%r&�test_request_path�s				zCookieTests.test_request_pathcCst�}tdd�}t|�}d}t||d�|jddd}x�dddddgD]�\}}d
j||�}tjj|�}	t||�}
|r�|jd|
dj|��|j	|j
||	��qe|jd|
dj|��|j|j
||	��qeWdS)NZstrict_ns_set_pathTzhttp://bar.comzspam=eggs; Path=/foozbar.com�/foor]�/foo/�/foo/barr�F�/foobad/fooz{0}{1}z	spam=eggszcookie not set for {0}zcookie set for {0})r�T)r�T)r�T)r�F)r�F)
rr
r�r��formatr�r�r�r�r�Zset_ok_pathr�r�)rr�Zstrict_ns_path_polr\Zbase_urlr��pathr�r�r�r�r%r%r&�test_path_prefix_match�s*	z"CookieTests.test_path_prefix_matchcCsltjjddddi�}|jt|�d�tjjddddi�}|jt|�t�dS)Nzhttp://www.acme.com:1234/r��Hostzwww.acme.com:4321Z1234zhttp://www.acme.com/)r�r�r�rrr)rr�r%r%r&�test_request_port�szCookieTests.test_request_portcCs�tjjddddi�}|jt|�d�tjjddddi�}|jt|�d�tjjd	ddd
i�}|jt|�d�dS)Nzhttp://1.1.1.1/r�r�zwww.acme.com:80z1.1.1.1zhttp://www.acme.com/zirrelevant.comzwww.acme.comz&http://www.acme.com:2345/resource.htmlzwww.acme.com:5432)r�r�r�rr)rr�r%r%r&�test_request_host�szCookieTests.test_request_hostcCs�|jtd��|jtd��|jtd��|jtd��|jtd��|jtd��|jtd��|jtd��dS)	Nzfoo.bar.comz1foo2.3bar4.5comz192.168.1.1r;�.z.foo.bar.comz..foozfoo.)r�rr�)rr%r%r&�test_is_HDN�szCookieTests.test_is_HDNcCs�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd	�d	�dS)
Nzwww.acme.comz	.acme.comzacme.comz
acme.localz.localz.comr�r;z192.168.0.1)rr)rr%r%r&�
test_reach�szCookieTests.test_reachcCs�|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��dS)Nz192.168.1.1z.168.1.1zx.y.comzx.Y.comz.Y.comzY.comz	a.b.c.comz.c.comz
example.localz.localz	blah.blahr;z.rhubarb.rhubarbzacme.comz	.acme.comzrhubarb.acme.comzwww.rhubarb.acme.comzy.comz.y.comz.comr��mz.mr�)r�rr�r)rr%r%r&�test_domain_matchs>zCookieTests.test_domain_matchcCs3t�}t|dd�|jt|�d�dS)Nzhttp://www.nasty.com/z)foo=bar; domain=friendly.org; Version="1"r)r
r�rr�)rr\r%r%r&�test_wrong_domain&s		zCookieTests.test_wrong_domaincCs�tdd�}td|�}t|dd�t|dd�|jt|�d�xDdd	d
dgD]0}t|d|d
�|jt|�d�qgWdS)NZ
strict_domainTr�zhttp://example.co.uk/zno=problemoz!okey=dokey; Domain=.example.co.ukrz.co.ukz.org.zaz.tx.usz.name.uszhttp://example.%s/zspam=eggs; Domain=.co.uk)rr
r�rr�)r�cpr�Z
pseudo_tldr%r%r&�test_strict_domain0s	
zCookieTests.test_strict_domaincCs�t�}t|dd�|jt|�d�|j|jdddjd�|jt|d�d�|jt|d�d�td	tj�}|j|�|jt|d�d
�t|dd�t|d
d�|jt|�d�|j|jdddjd�|j|jdddjd�|jt|d
�d�t|dd�|jt|�d�t|dd�|jt|�d�dS)Nzhttp://foo.net/zns=barr.zfoo.netr��nsrLzhttp://www.foo.net/Zstrict_ns_domainr;zhttp://foo.net/foo/zspam1=eggs; domain=foo.netzhttp://foo.net/foo/bar/zspam2=eggs; domain=.foo.netrz.foo.netz/fooZspam1r�z/foo/barZspam2zspam2=eggs; spam1=eggs; ns=barznini="ni"; domain=.netzhttp://foo.co.ukznasty=trick; domain=.co.uk�)	r
r�rr�r�r�rZDomainStrictNonDomain�
set_policy)rr\r�r%r%r&�test_two_component_domain_ns>s4	"
		z(CookieTests.test_two_component_domain_nscCs�tdd�}t|�}t|dd�|jt|�d�|j|jdddjd	�|jt|d�d
�|jt|d�d�t|d
d�|jt|�d�|jt|d
�d
�t|dd�|j|jdddjd�|jt|�d�|jt|d�d
�|jt|d�d�t|dd�|jt|�d�t|dd�|jt|�d�dS)Nr�Tzhttp://foo.net/zfoo=bar; Version="1"r.zfoo.netr�rKrLz$Version=1; foo=barzhttp://www.foo.net/r;zhttp://foo.net/fooz1spam=eggs; domain=foo.net; path=/foo; Version="1"zhttp://www.foo.net/foo/z&spam=eggs; domain=foo.net; Version="1"z.foo.netz/foo/r]r�rzhttp://foo.net/foo/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�rr�r�r�)rr�r\r%r%r&�!test_two_component_domain_rfc2965ns8"				z-CookieTests.test_two_component_domain_rfc2965cCs�tdtddgddg��}tjjd�}dg}t|d�}|j||�|jt|�d�tjjd	�}t|d	�}|j||�|jt|�d
�tjjd�}t|d�}|j||�|jt|�d
�tjjd�}t|d�}|j	||�}|j
|d�|jt|�d�|j|�|j|j
d
��dS)Nr��blocked_domainszacme.comZallowed_domainszwww.acme.comzhttp://acme.com/z*Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/rzhttp://www.acme.com/r.zhttp://www.coyote.com/rr	)r
rr�r�r�r�r�rr��make_cookies�
set_cookier�r��
has_header)rr\r�r�r~r�r%r%r&�test_domain_allow�s.		
zCookieTests.test_domain_allowcCstddddg�}td|�}dg}tjjd�}t|d�}|j||�|jt|�d�|j	d	g�}|j||�|jt|�d
�|j
�tjjd�}t|d�}|j||�|jt|�d
�tjjd�}|j|�|j|j
d��|j|j
d
��|j
�|j	dg�|j||�|jt|�d
�tjjd�}t|d�}|j||�}|j|d�|jt|�d�|j|�|j|j
d��|j
�|j	g�tjjd�}t|d�}|j||�}|j||�|jt|�d
�tjjd�}|j|�|j|j
d��tjjd�}|j|�|j|j|d|��|j|j
d��|j	d	g�}tjjd�}|j|�|j|j
d��tjjd�}|j|�|j|j
d��dS)Nr�Tr
z	.acme.comr�z*Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/zhttp://www.acme.com/rzacme.comr.zhttp://www.roadrunner.net/r	�Cookie2rzhttp://acme.com/zhttp://badacme.com/)rr
r�r�r�r�r�rr�Zset_blocked_domains�clearr�r�r
rrr�Z	return_ok)rr�r\r�r�r~�pr�r%r%r&�test_domain_block�sh	









zCookieTests.test_domain_blockcCs�x�dD]�}x�dD]�}t�}|rGtdd�}t}d}ntdd�}t}d}|j|�d}|||d||f�|||d	||f�|j|jd
ddjd
�|j|jd
ddjd�qWqWdS)NTF� r;r�z; Version=1zhttp://www.acme.com/zfoo1=bar%s%szfoo2=bar%s; secure%szwww.acme.comr�Zfoo1z#non-secure cookie registered secureZfoo2z#secure cookie registered non-secure)TF)rr;)	r
rr�r�rr�r�Zsecurer�)rr�
whitespacer\r��intZvsr�r%r%r&�test_secure�s(

		
zCookieTests.test_securecCsKtdtdd��}t|dd�t|d�}|j|d�dS)Nr�r�Tzhttp://www.acme.com/zfoo=\b"a"r; Version=1z$Version=1; foo=\\b\"a\"r)r
rr�r)rr\r�r%r%r&�test_quote_cookie_valuesz#CookieTests.test_quote_cookie_valuecCszd}ttdd��}t||d�tjj|�}|jt|�d�|j|�|j	|j
d��dS)Nzhttp://www.acme.comr�Tzfoo=bar; Version=1r.r	)r
rr�r�r�r�rr�r�r�r
)rr�r\r�r%r%r&�test_missing_final_slashs
z$CookieTests.test_missing_final_slashcCs�tdd�}t|�}d}t||d�t||�}|jd|d�t|�}d}t||d�t||�}|jd|d	�t|�}d}t||d
�t||�}|jd|d	�dS)Nr�Tzhttp://foo.bar.com/zspam=eggs; Version=1ZDomainz*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�r�r�)rr�r\r�r�r%r%r&�test_domain_mirror#s"zCookieTests.test_domain_mirrorcCs�tdd�}t|�}d}t||d�t||�}|jd|d�t|�}d}t||d�t||�}|jd|d	�dS)
Nr�Tzhttp://foo.bar.com/zspam=eggs; Version=1ZPathz&absent path returned with path presentzspam=eggs; Version=1; Path=/z	$Path="/"zpath not returned)rr
r�r�r�)rr�r\r�r�r%r%r&�test_path_mirror:szCookieTests.test_path_mirrorcCs#tdd�}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�dS)Nr�Tzhttp://foo.bar.com/zspam=eggs; Version=1ZPortz&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�r�rr�)rr�r\r�r�r%r%r&�test_port_mirrorIs0zCookieTests.test_port_mirrorcCsQttdd��}d}t||d�t||�}|jd|d�dS)Nr�Tzhttp://foo.bar.com/zfspam=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�r�)rr\r�r�r%r%r&�test_no_return_commenthsz"CookieTests.test_no_return_commentcCsattdd��}t|dd�t|dd�t|dd�t|dd�t|d	d
�dddddg}d
ddddg}dddddg}dddddg}x�td�D]�}d}x�|D]|}|j|t�|j|j||�|j|j	||�|j|j
||�|j|j||�|d}q�Wq�WdS)Nr�Tzhttp://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=1zhttp://www.sol.nozsbang=wallop; version=1; domain=".sol.no"; port="90,100, 80,8080"; max-age=100; Comment = "Just kidding! (\"|\\\\) "r.rZbangrKr]z.sol.noz
blah.spam.orgzwww.acme.comr�z/blahz/blah/r)r
rr�r��rangeZassertIsInstancer	rrOr�r�r�)r�csZversions�namesZdomains�paths�ir\r%r%r&�test_Cookie_iteratorrs.				
z CookieTests.test_Cookie_iteratorcCs�|jtdg�ddddgg�|jtd	g�dddgg�|jtdg�ddgg�|jtdg�dddgg�|jtdg�ddgg�|jtd
g�g�dS)Nzfoo=bar; path=/; domainrKrLr�r�r�rOrPz)foo=bar; expires=Foo Bar 12 33:22:11 2000rMzfoo=bar; expireszfoo=bar; versionr;)rKrL)r�r�)r�N)rOrP)rKrL)rMN)rOrP)rKN)rOrP)rKrL)rMN)rOrP)rKrL)rON)rr)rr%r%r&rR�s"z!CookieTests.test_parse_ns_headerscCs�dd�}ttj�d�}xXdgdgdgdgdgd	|ggD](}||�}|jt|�d
�qQWdg}||�}|jdd
d}|j|j�dS)NcSs>t�}tjjd�}t|d�}|j||�|S)Nzhttp://www.example.com/)r
r�r�r�r�r�)r�r\r�r�r%r%r&�cookiejar_from_cookie_headers�s
	zICookieTests.test_bad_cookie_header.<locals>.cookiejar_from_cookie_headersiz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 2000zwww.example.comr�r\)rr*rr�r�r=rM)rr$r�r�r\r�r%r%r&�test_bad_cookie_header�s	z"CookieTests.test_bad_cookie_headerN)#rGrHrIr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr	rrrrrrrrrr#rRr%r%r%r%r&r�gs@/! 00(


$
0,C

 r�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�LWPCookieTestscCs:tj�dd}g}ttdd��}tjjddddi�}|jd	|�t|d
�}|j	||�tjjd
�}|j
|�|j|jd�d�|j|jd
�d�|jd�t|d
�}|j	||�tjjd�}|j
|�|jd�}|j
d|�|j
d|�|jd�t|d�}|j	||�tjjd
�}|j
|�|jd�}|j
d|�|j
d|�|jd|�tjjd�}|j
|�|jd�}|j
d|�|j
d|�|j|jd��dS)Nrr.r�Tzhttp://www.acme.com:80/r�r�zwww.acme.com:80zVSet-Cookie: CUSTOMER=WILE_E_COYOTE; path=/ ; expires=Wednesday, 09-Nov-%d 23:12:40 GMTzhttp://www.acme.com/r	zCUSTOMER=WILE_E_COYOTErz$Version="1"z4Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/zhttp://www.acme.com/foo/barz PART_NUMBER=ROCKET_LAUNCHER_0001z%Set-Cookie: SHIPPING=FEDEX; path=/foozhttp://www.acme.comzSHIPPING=FEDEXzhttp://www.acme.com/foo/zSHIPPING=FEDEX;)r*�	localtimer
rr�r�r�r�r�r�r�rr�r�r�r��
startswith)r�
year_plus_oner�r\r�r~r�r%r%r&�test_netscape_example_1�sJ%





z&LWPCookieTests.test_netscape_example_1cCs�t�}g}tjjd�}|jd�t|d�}|j||�tjjd�}|j|�|j|j	d�d�|jd�t|d�}|j||�tjjd�}|j|�|j
|j	d�d�dS)Nzhttp://www.acme.com/z4Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/r	z PART_NUMBER=ROCKET_LAUNCHER_0001z6Set-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�rr�r)rr\r�r�r~r%r%r&�test_netscape_example_2-s$	


z&LWPCookieTests.test_netscape_example_2cCs�ttdd��}t|dd�}|j|�t|dd�}|j|d�t|dd	�}|j|d
�|j|d�|j|d�t|d
�}|j|d�|jd|�dS)Nr�Tzhttp://www.acme.com/acme/loginz3Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"z!http://www.acme.com/acme/pickitemz=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"Z
WILE_E_COYOTE)r
rr�r�rr�)rr\r�r%r%r&�test_ietf_example_1`s"	
					z"LWPCookieTests.test_ietf_example_1cCszttdd��}t|ddd�t|d�}|j|d�t|d�}|jd	|�|jd
|�dS)Nr�Tz&http://www.acme.com/acme/ammo/specificz=Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"z@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/ZRocket_Launcher_0001ZRiding_Rocket_0023)r
rr�rr�r�)rr\r�r%r%r&�test_ietf_example_2�s
z"LWPCookieTests.test_ietf_example_2cCshtdd�}td|�}d}t|dd�}|j|�t|dd�}|jt|�d�t|d	d
�}|jt|�d�t|d	d�}|jt|�d�t|d
d�}|jt|�d�t|dd�}|jt|�d�t|dd�}|jt|�d�t|dd�}|jt|�d�t|dd�}|jt|�d�t|dd�}|jt|�d�t|dd�}|jt|�d�tjj}zE|j	|dd�t
|�}td|�}|j|dd�Wdytj
|�Wntk
rLYnXX|j|t
|��dS)Nr�Tr�zmax-age=3600zhttp://www.acme.comz!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=1rzhttp://125.125.125.125z*zzzz=ping; domain="125.125.125"; version=1zhttp://www.sol.noz6blah=rhubarb; domain=".sol.no"; path="/foo"; version=1zhttp://www.sol.no/foo/barz3bing=bong; domain=".sol.no"; path="/foo"; version=1rz5whiz=ffft; domain=".sol.no"; port="90,100"; version=1zsbang=wallop; version=1; domain=".sol.no"; port="90,100, 80,8080"; max-age=100; Comment = "Just kidding! (\"|\\\\) "rz9foo9=bar; version=1; domain=".sol.no"; port; max-age=100;�zhttp://www.sol.no/<oo/z"foo8=bar; version=1; path="/%3coo"r)r�)rrr�r�rr�r>r�r�r�r�r�r�r�r�)rr�r\Zmax_ager�r��oldr%r%r&�test_rejections`		
																				
zLWPCookieTests.test_rejectioncCs�ttdd��}t|dd�t|dd�}tjdtj�}|jd|�|j||�t|d	�}|j|�t|d
�}dS)Nr�Tz7http://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\"?zfoo=baru-http://www.acme.com/foo/%25/<<%0anewå/æøåuhttp://www.acme.com/ü)	r
rr�r��compile�Ir�rr�)rr\r�Z
version_rer%r%r&�test_url_encoding`s		
z LWPCookieTests.test_url_encodingcs@tj�dd}tjj�t�dtdd��}t|dd�t|dd�t|dd	�d
|f}t|dd|�t|dd
|�t|dd|��fdd�}||d�}|j	t
|�d�|jdt|��||d�}|j	t
|�d�|jdt|��dS)Nrr.r�r�Tzhttp://www.acme.com/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; %scsjz<|jd|�t�tdd��}|jd|�Wdytj��Wntk
rdYnXX|S)Nr�r�T)r�r
rr�r�r�r�)r�r��new_c)r�r%r&�save_and_restore�s
z5LWPCookieTests.test_mozilla.<locals>.save_and_restorer)zname='foo1', value='bar'Fr)
r*r'r>r�r�r
rr�r�rr�r�r�)rr)r\rMr5r4r%)r�r&�test_mozillavs.			
			zLWPCookieTests.test_mozillacCs�t�}g}tjjd�}|jd�t|d�}|j||�|jd�t|d�}|j||�tjjd�}|j|�|jd|j	d��|jd|j	d��dS)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�r�r�)rr\r�r�r~r%r%r&�test_netscape_misc�s	


z!LWPCookieTests.test_netscape_misccCs�ttdd��}t|dd�t|dd�}|jd|�t|dd�t|d�}|jd|�|jt|�d	�dS)
Nr�Tzhttp://example/z#foo1=bar; PORT; Discard; Version=1;z$foo2=bar; domain=".local"; Version=1zfoo1=barzfoo3=bar; Version=1zfoo2=barr)r
rr�r�rr�)rr\r�r%r%r&�test_intranet_domains_2965�s			z)LWPCookieTests.test_intranet_domains_2965cCs�ttdd��}t|dd�t|dd�}|jt|�d�|jd|�t|d�}|jd|�|jt|�d�dS)Nr�Fzhttp://example/zfoo1=barzfoo2=bar; domain=.localrzfoo2=bar)r
rr�rr�r�)rr\r�r%r%r&�test_intranet_domains_ns�s		z'LWPCookieTests.test_intranet_domains_nscCs�ttdd��}g}tjjd�}|jd�t|d�}|j||�tjjd�}|j|�|j	|j
d�d�|j	|j
d�d�tjjd	�}|j|�|j	|j
d�d�|j	|j
d�d�dS)
Nr�Tzhttp://www.ants.com/z,Set-Cookie: JSESSIONID=ABCDERANDOM123; Path=r	zJSESSIONID=ABCDERANDOM123rz$Version="1"zhttp://www.ants.com:8080)r
rr�r�r�r�r�r�r�rr�)rr\r�r�r~r%r%r&�test_empty_path�s 


zLWPCookieTests.test_empty_pathc	Csitj�dd}tjjd�}g}|jd�|jd|�|jd|�|jd�|jd�t|d�}t�}|j||�d	dd
dddddi}x-|D]%}d
|j	}||d||<q�W|j
�x-|D]%}d|j	}||d||<q�W|j|d
|d�|j|d	d�|j|dd�dS)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="/"Z
session_afterZ
perm_afterZsession_beforeZperm_beforez	%s_beforez%s_after)
r*r'r�r�r�r�r�r
r�r�r�rZassertNotEqual)	rr)r�r�r~r\Zcounterr��keyr%r%r&�test_session_cookies�s6
		

	




z#LWPCookieTests.test_session_cookiesN)rGrHrIr*r+r,r-r0r3r6r7r8r9r:r<r%r%r%r&r&�s[3p5[)r&cCs tjjttttt�dS)N)r>r�Zrun_unittestrrJr�r�r&)�verboser%r%r&�	test_mains	r>�__main__r=T),r�r�Ztest.supportr>r*ZunittestZurllib.requestr�Zhttp.cookiejarrrrrrrrr	r
rrr
rrrrrrrrrrrZTestCaserrJr�r�r�r�r�r�r&r>rGr%r%r%r&�<module>s.��g

*���k��M