Your IP : 216.73.216.213


Current Path : /opt/alt/python34/lib64/python3.4/test/__pycache__/
Upload File :
Current File : //opt/alt/python34/lib64/python3.4/test/__pycache__/test_http_cookiejar.cpython-34.pyo

�
g fE&�@s�dZddlZddlZddlZddlZddlZddlZddl	m
Z
mZmZm
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z Gdd�dej!�Z"Gdd�dej!�Z#Gdd	�d	�Z$d
d�Z%dd
�Z&dd�Z'Gdd�dej!�Z(Gdd�dej!�Z)Gdd�dej!�Z*ddd�Z+e,dkr�e+dd�ndS)zTests for http/cookiejar.py.�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@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�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�baseZdayZazZbz�text�r"�=/opt/alt/python34/lib64/python3.4/test/test_http_cookiejar.py�test_time2isozs	zDateTimeTests.test_time2isozcCsRdd�}|j|d�d�|j|d�d�|j|d�d�dS)NcSstjt|��dd�S)N�)�time�gmtimer)r!r"r"r#�
parse_date#sz0DateTimeTests.test_http2time.<locals>.parse_datez01 Jan 2001���r�z	03-Feb-20��rrz	03-Feb-98��)r)r*r*rrr+)r,rrrrr+)r-rrrrr+)r)rr(r"r"r#�test_http2time"s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_formats.s.	
%z$DateTimeTests.test_http2time_formatsc
CsYxRddddddddd	d
g
D],}|jt|�d|t|�f�q%WdS)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:62z,http2time(%s) is not None
http2time(test) %s)�assertIsNoner)r�testr"r"r#�test_http2time_garbageRs
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(dsz/DateTimeTests.test_iso2time.<locals>.parse_dateZ19940203T141529Z��rr���z1994-02-03 07:15:29 -0700z1994-02-03 19:45:29 +0530)r<rrr=r>r?)r<rrr=r>r?)r<rrr=r>r?)r)rr(r"r"r#�
test_iso2timecs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-)rrr/r0)rr1r2r5r"r"r#�test_iso2time_formatsss	
%z#DateTimeTests.test_iso2time_formatscCs_xXddddddddd	d
ddgD],}|jt|�d
|t|�f�q+WdS)Nr7r8z 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)r9r)rr:r"r"r#�test_iso2time_garbage�s 
z#DateTimeTests.test_iso2time_garbageN)
�__name__�
__module__�__qualname__r$r.r6r;r@rArBr"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")zfoorH)zexpiresrJ)zversionrL)rr)rr4�hdrr"r"r#�test_parse_ns_headers�s

z!HeaderTests.test_parse_ns_headerscCsCddgg}x-ddgD]}|jt|g�|�qWdS)	NrGrHrK�1zfoo=bar; version="1"zfoo=bar; Version="1")zfoozbar)zversionrO)rr)rr4rMr"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 GMTrI�01 Jan 2040 22:23:32 GMTrKrL)zexpiresrQ)zversionrL)rr)rrMr4r"r"r#�#test_parse_ns_headers_special_names�sz/HeaderTests.test_parse_ns_headers_special_namescCsBtddgg�}|j|d�|jtgg�d�dS)NrGrH�bazzfoo; bar=bazr7)zfooN)zbarrS)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)2NrGzfoo=barrHz	   foo   z
   foo=   r7z   foo=z   foo=   ; z   foo=   ; bar= baz rSzfoo=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'
)�fooN)r[�bar)r[N)r[r7)r[r7)r[r7)r[r7)r\�baz)r[r\)r\r])r[rU)r[r\)r\r])r[N)r\N)r]N)rVN)rWN)rXN)r[N)r\r])zspamr7)r[rZ)r\r7)r�	traceback�io�StringIO�	print_exc�getvaluer)rr1�arg�expectr3r^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)%NrG�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'
)�foor|)rgrg)rhr|)rirj)rkrl)rmrl)rnro)rprq)rrrs)rtru)rvrw)rxry)rzr{)rrr)rr1rcrd�input�resr"r"r#�test_roundtrip�s*	zHeaderTests.test_roundtripN)	rCrDrErNrPrRrTrfrr"r"r"r#rF�s	
"rFc@s.eZdZgddd�Zdd�ZdS)�FakeResponseNcCs4ddl}|jdj|��|_||_dS)zD
        headers: list of RFC822-style 'Key: value' strings
        rN�
)�emailZmessage_from_string�join�_headersZ_url)r�headers�urlr�r"r"r#�__init__szFakeResponse.__init__cCs|jS)N)r�)rr"r"r#�infoszFakeResponse.info)rCrDrEr�r�r"r"r"r#r�sr�cGst|||d�S)NzSet-Cookie2)�	_interact)�	cookiejarr��set_cookie_hdrsr"r"r#�
interact_2965sr�cGst|||d�S)Nz
Set-Cookie)r�)r�r�r�r"r"r#�interact_netscapesr�c	Cs�tjj|�}|j|�|jdd�}g}x%|D]}|jd||f�q>Wt||�}|j||�|S)zDPerform a single request / response cycle, returning Cookie: header.r	r7z%s: %s)�urllib�request�Request�add_cookie_header�
get_header�appendr��extract_cookies)	r�r�r�Zhdr_name�reqZ
cookie_hdrr�rMr~r"r"r#r�s

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�filenamerXr"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�WWdQXWdytj|�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_classrX�excrer"r"r#�test_bad_magic3s$	&
	$
z!FileCookieJarTests.test_bad_magicN)rCrDrEr�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�.foorG�	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�zfooT)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�r9r�r�namer�reprr�Zrevertr�r�r��re�sub)rr�rX�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�qqWdS)NFrTr*�rfc2109_as_netscape�rfc2965zhttp://www.example.com/zni=ni; Version=1zwww.example.comr��nizfoo=bar; Version=1rG)NFr)NTr*)FFN)FTr*)TFr)TTr)	rr
r�r��KeyErrorr9rrKr�)rr�r�rK�policyrXr�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�rYZblArghZblarghzwww.acme.comr�z80,8080ZninirGZfortytwor7)r
r�r�rr�r�Zdomain_specifiedZportrr�Zport_specifiedZhas_nonstandard_attrr9rIZassertIsNotNoner�)rrXr�rGrYr"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�rIrK)r
r�r��assertIn)rrX�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"rGzeggs="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	rI)rrX�futureZnow�hr�r"r"r#�test_expiressF	
					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�rXr"r"r#�test_default_pathGs6						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_queryos	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)rZcasesrcr3r"r"r#�test_escape_pathys	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�/foorY�/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_polrXZbase_urlr��pathr�r�r�r�r"r"r#�test_path_prefix_match�s*	z"CookieTests.test_path_prefix_matchcCsntjjddidd6�}|jt|�d�tjjddidd6�}|jt|�t�dS)Nzhttp://www.acme.com:1234/r�zwww.acme.com:4321�HostZ1234zhttp://www.acme.com/)r�r�r�rrr)rr�r"r"r#�test_request_port�szCookieTests.test_request_portcCs�tjjddidd6�}|jt|�d�tjjddidd6�}|jt|�d�tjjd	did
d6�}|jt|�d�dS)Nzhttp://1.1.1.1/r�zwww.acme.com:80r�z1.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.1r7�.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�r7z192.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.blahr7z.rhubarb.rhubarbzacme.comz	.acme.comzrhubarb.acme.comzwww.rhubarb.acme.comzy.comz.y.comz.comr��mz.mr�)r�rr�r)rr"r"r#�test_domain_match�s>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�)rrXr"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_domains	
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��nsrHzhttp://www.foo.net/Zstrict_ns_domainr7zhttp://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)rrXr�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�rGrHz$Version=1; foo=barzhttp://www.foo.net/r7zhttp://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/rYr�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�rXr"r"r#�!test_two_component_domain_rfc2965Ts8"				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)rrXr�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r
rr�Z	return_ok)rr�rXr�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� r7r�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)rr7)	r
rr�r�rr�r�Zsecurer�)rrZ
whitespacerXr��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)rrXr�r"r"r#�test_quote_cookie_value�sz#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�rXr�r"r"r#�test_missing_final_slash�s
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�rXr�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�rXr�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�rXr�r�r"r"r#�test_port_mirror/s0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�)rrXr�r�r"r"r#�test_no_return_commentNs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*rZbangrGrYz.sol.noz
blah.spam.orgzwww.acme.comr�z/blahz/blah/r)r
rr�r��rangeZassertIsInstancer	rrKr�r�r�)rZcsZversions�namesZdomains�paths�irXr"r"r#�test_Cookie_iteratorXs.				
z CookieTests.test_Cookie_iteratorcCs�|jtdg�ddddgg�|jtd	g�dddgg�|jtdg�ddgg�|jtdg�dddgg�|jtdg�ddgg�|jtd
g�g�dS)Nzfoo=bar; path=/; domainrGrHr�r�r�rKrLz)foo=bar; expires=Foo Bar 12 33:22:11 2000rIzfoo=bar; expireszfoo=bar; versionr7)�foo�bar)zpathr�)zdomainN)�versionrL)r!r")�expiresN)r#rL)r!N)r#rL)r!r")r$N)r#rL)r!r")r#N)rr)rr"r"r#rNxs"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�rXr�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�rX)rr&rr�r�r9rI)rr%r�r�rXr�r"r"r#�test_bad_cookie_header�s	z"CookieTests.test_bad_cookie_headerN)#rCrDrEr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr
rrrrrrrrr rNr&r"r"r"r#r�Ms@/! 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��}tjjddidd6�}|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�zwww.acme.com:80r�zVSet-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�rXr�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)rrXr�r�r~r"r"r#�test_netscape_example_2s$	


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�)rrXr�r"r"r#�test_ietf_example_1Fs"	
					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�)rrXr�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�rXZmax_ager�r��oldr"r"r#�test_rejection�s`		
																				
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�)rrXr�Z
version_rer"r"r#�test_url_encodingFs		
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_restorers
z5LWPCookieTests.test_mozilla.<locals>.save_and_restorer%zname='foo1', value='bar'Fr)
r&r(r:r�r�r
rr�r�rr�r�r�)rr*rXrIr6r5r")r�r#�test_mozilla\s.			
			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�)rrXr�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�)rrXr�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�)rrXr�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�)rrXr�r�r~r"r"r#�test_empty_path�s 


zLWPCookieTests.test_empty_pathc	Csmtj�dd}tjjd�}g}|jd�|jd|�|jd|�|jd�|jd�t|d�}t�}|j||�idd	6dd
6dd6dd6}x-|D]%}d
|j	}||d||<q�W|j
�x-|D]%}d|j	}||d||<qW|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~rXZcounterr��keyr"r"r#�test_session_cookies�s6
		

	






z#LWPCookieTests.test_session_cookiesN)rCrDrEr+r,r-r.r1r4r7r8r9r:r;r=r"r"r"r#r'�s[3p5[)r'cCs tjjttttt�dS)N)r:r�Zrun_unittestrrFr�r�r')�verboser"r"r#�	test_mains	r?�__main__r>T)-�__doc__r�r�Ztest.supportr:r&ZunittestZurllib.requestr�Zhttp.cookiejarrrrrrrrr	r
rrr
rrrrrrrrrrrZTestCaserrFr�r�r�r�r�r�r'r?rCr"r"r"r#�<module>s0��g

*���k��M