python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_http_cookiejar.cpython-311.opt-1.pyc

eYFdZddlZddlZddlZddlZddlZddlmZddlmZddl	Z	ddl
Z
ddlZddl
Z
ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%ej&dkZ'Gdde
j(Z)Gd	d
e
j(Z*GddZ+d
Z,dZ-dZ.Gdde
j(Z/Gdde
j(Z0Gdde
j(Z1e2dkre
j3dSdS)zTests for http/cookiejar.py.N)	os_helper)warnings_helper)	time2isoz	http2timeiso2time
time2netscapeparse_ns_headersjoin_header_wordssplit_header_wordsCookie	CookieJarDefaultCookiePolicyLWPCookieJarMozillaCookieJar	LoadErrorlwp_cookie_strDEFAULT_HTTP_PORTescape_pathreachis_HDNdomain_matchuser_domain_matchrequest_pathrequest_portrequest_hostwin32cJeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS)
DateTimeTestsc	d}d}|t|d|t||zd|t|d|zzd|t|d|zzdt}td	}||fD]}||d
d|d| dS)
Nx+<Qz2002-04-19 14:36:40Zz2002-04-20 14:36:40Zz2002-04-21 14:36:40Zz2002-04-22 14:36:40Z z!^\d{4}-\d\d-\d\d \d\d:\d\d:\d\dZ$zbad time2isoz format:  )assertEqualrassertRegexselfbasedayazbztexts      L/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_http_cookiejar.pytest_time2isozzDateTimeTests.test_time2isozs4*@AAA48,,.DEEE4#:..0FGGG4#:..0FGGG
[[
v

H	G	GDT#G#G>@bb""E
G
G
G
G	G	Gc	d}d}|t|d|t||zd|t|d|zzd|t|d|zzdt}td	}||fD]}||d
d|d| dS)
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,,.MNNNtCx008	:	:	:	
tAcEz228	:	:	:	
tAcEz228	:	:	:__
6
"
"H	>	>DNN57RR<
>
>
>
>	>	>r1cd}||dd||dd||dddS)NcTtjt|ddSN)timegmtimerr.s r/
parse_datez0DateTimeTests.test_http2time.<locals>.parse_date?s!;y//33r1z01 Jan 2001)ir<rrz	03-Feb-20)ir"r#rrr=z	03-Feb-98)ir"r#rrr=r&r)r;s  r/test_http2timezDateTimeTests.test_http2time>s	4	4	4	
M224KLLL	
K002IJJJ	
K002IJJJJJr1c
gd}d}t|}d}||||d|d|d|D]}|t||||t||||t|||dS)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&rlowerupper)r)teststest_tresultexpectedss      r/test_http2time_formatsz$DateTimeTests.test_http2time_formatsJs


,6"")06I	K	K	K	F	FAYq\\61555Yqwwyy11617799EEEYqwwyy11617799EEEE	F	Fr1c
|dD]8}|t|d|dt|9dS)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:0001-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) )assertIsNonerr)tests  r/test_http2time_garbagez$DateTimeTests.test_http2time_garbagense	N	ND 
iooo6:ddIdOOOM
N
N
N
N!	N	Nr1ctdddztdddzdS)Nz01 Jan 1970{}00:00:00 GMT!r%iz01 Jan 1970 00:00:00{}GMT!)rformatr)s r/2test_http2time_redos_regression_actually_completesz@DateTimeTests.test_http2time_redos_regression_actually_completessL	.55cGmDDEEE.55cGmDDEEEEEr1cd}||dd||dd||dddS)NcTtjt|ddSr6)r8r9rr:s r/r;z/DateTimeTests.test_iso2time.<locals>.parse_dates!;x~~..rr22r119940203T141529Z)ir"r#z1994-02-03 07:15:29 -0700z1994-02-03 19:45:29 +0530r>r?s  r/
test_iso2timezDateTimeTests.test_iso2times	3	3	3	
$6771	3	3	3	
$?@@1	3	3	3	
$?@@1	3	3	3	3	3r1cgd}d}|D]}|t||||t||||t|||dS)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:0019940203z1994-02-02 24:00:0019940203T000000Zz
  1994-02-03 z  1994-02-03T00:00:00  rC)r&rrErF)r)rGrHrKs    r/test_iso2time_formatsz#DateTimeTests.test_iso2time_formatss





	E	EAXa[[&!444Xaggii00&!''))DDDXaggii00&!''))DDDD	E	Er1c\dD](}|t|d|z)dS)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:6219800101T250000Zziso2time(%r))rQrrRs  r/test_iso2time_garbagez#DateTimeTests.test_iso2time_garbagesL
	5	5D
htnn,t3
5
5
5
5	5	5r1ctdddztdddzdS)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_regressionsL	.55c%i@@AAA.55c%i@@AAAAAr1N)
__name__
__module____qualname__r0r3r@rLrTrXr_rcrfrhr1r/rrsGGG>>>,
K
K
K"F"F"FHNNN*FFF333 EEE.555$BBBBBr1rc2eZdZdZdZdZdZdZdZdS)HeaderTestscbgdg}dD]&}|t|g|'dS)N)foobar)expiresld9Wversion0)z)foo=bar; expires=01 Jan 2040 22:23:32 GMTz+foo=bar; expires="01 Jan 2040 22:23:32 GMT"r&r	r)rJhdrs   r/test_parse_ns_headersz!HeaderTests.test_parse_ns_headerssUOOOP	@	@C
-se44h????		@	@r1cbddgg}dD]&}|t|g|'dS)Nrp)ru1)zfoo=bar; version="1"foo=bar; Version="1"rwrxs   r/test_parse_ns_headers_versionz)HeaderTests.test_parse_ns_headers_versionsW$%567	@	@C
-se44h????		@	@r1c\d}ddgg}|t|g|dS)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_namess>1<>NOP)3%00(;;;;;r1ctddgg}||d|tggddS)NrqNrrbazzfoo; bar=bazrN)r
r&)r)joineds  r/test_join_header_wordsz"HeaderTests.test_join_header_wordssT"]N$C#DEE000*B400"55555r1cddggfddggfddggfddggfddggfd	dggfd
ddggfdddggfd
dggfdddggfdgdgfddgdgdggfdddgdgdgdggfg
}|D]\}}	t|g}nP#ddl}ddl}|}|d|d|z}YnxYw|||d|d|d|ddS) Nrqrfoo=barrp	   foo   z
   foo=   )rqrNz   foo=z   foo=   ; z   foo=   ; bar= baz rfoo=bar bar=bazzfoo= bar=baz)rqzbar=bazfoo=bar;bar=bazfoo bar baz)r)rrN)rNza, b, c)aN)bN)cNz(foo; bar=baz, spam=, foo="\,\;\"", bar= )spamrN)rqz,;")rrrNrz (error -- traceback follows)

%s
When parsing: ''
Expected:     ''
Got:          ''
)r	tracebackioStringIO	print_excgetvaluer&)r)rGargexpectrIrrfs        r/test_split_header_wordsz#HeaderTests.test_split_header_wordss
m_%&
.)*+
M?+,
[M?+
+(
{m_-
$^'D&EF
..!A BC
1234
..!A BC
JJJKL
+
}EF
8n-n~.
?
@&!		KC
M+SE22
M$$$$$$$$KKMM##D!,,,=

LVffssFFFFFF	/



		s
A,,AB9cgd}|D]H\}}t|g}t|}|||d|d|d|d|d	IdS)N)
)rqrq)rr)rrq)zfoo=zfoo="")rfoo=bar; bar=baz)rr)rz
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\""rrrz'
Input was:    'r)rr
r&)r)rGrrinputress      r/test_roundtripzHeaderTests.test_roundtrips,!	!	!KC&u--E#E**CS&&
ssFFFCCC+ 
!
!
!
!	!	!r1N)	rirjrkrzr~rrrrrlr1r/rnrnsu@@@@@@<<<666   D!!!!!r1rnc eZdZgdfdZdZdS)FakeResponseNcvddl}|d||_||_dS)zD
        headers: list of RFC822-style 'Key: value' strings
        rN
)emailmessage_from_stringjoin_headers_url)r)headersurlrs    r/__init__zFakeResponse.__init__2s9	11$))G2D2DEE
			r1c|jSN)rrWs r/infozFakeResponse.info9s	4=(r1)rirjrkrrrlr1r/rr1s4!t)((((r1rc&t|||dS)NzSet-Cookie2	_interact	cookiejarrset_cookie_hdrss   r/
interact_2965r;sY_mDDDr1c&t|||dS)Nz
Set-Cookierrs   r/interact_netscaper>sY_lCCCr1c(tj|}|||dd}g}|D]}||d|t
||}||||S)zDPerform a single request / response cycle, returning Cookie: header.rrNz: )urllibrequestRequestadd_cookie_header
get_headerappendrextract_cookies)	rrrhdr_namereq
cookie_hdrrryrs	         r/rrAs
.
 
 
%
%C
$$$"--JG33888SS12222
w
$
$C
c3'''r1ceZdZdZdZdZdZdZej	e
dejdZ
ej	e
dejdZej	e
dejd	Zd
ZdS)FileCookieJarTestscrtj}t|}||j|dSr)rTESTFNrr&filenamer)rrs   r/test_constructor_with_strz,FileCookieJarTests.test_constructor_with_strOs5#""X.....r1ctjtj}t	|}||jtj|dSr)	pathlibPathrrrr&rosfspathrs   r/test_constructor_with_path_likez2FileCookieJarTests.test_constructor_with_path_likeTsI<	 011""RYx%8%899999r1cXtd}||jdSr)rrQrr)rs  r/test_constructor_with_nonez-FileCookieJarTests.test_constructor_with_noneYs+!*%%%%%r1c8Gdd}tt|fD]|}||5|t5|}t|}dddn#1swxYwYdddn#1swxYwY}dS)NceZdZdS)?FileCookieJarTests.test_constructor_with_other_types.<locals>.AN)rirjrkrlr1r/Ar^sDr1rr)intfloatsubTestassertRaises	TypeErrorr)r)rtype_instancers     r/!test_constructor_with_other_typesz4FileCookieJarTests.test_constructor_with_other_types]s9								5!_	8	8Eu--
8
8&&y1188$uwwH$h777A888888888888888
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8	8	8s5BA7+B7A;;B>A;?BB	B	ctj}t}t|dd||jdddjd	||dt}||dtj	|n#tj	|wxYw||jdddjddS)Nhttp://www.acme.com/boowww.acme.com/Tignore_discard)
rrrrr&_cookiesvaluesaveloadunlinkrs   r/test_lwp_valueless_cookiez,FileCookieJarTests.test_lwp_valueless_cookiegs#NN!3U;;;N3C8?EtLLL	'
FF8DF111A
FF8DF111X&&&&IX&&&&N3C8?EtLLLLLs<B00Cz9windows file permissions are incompatible with file modeschtj}t}t|dd	||dtj|}|t
j|j	dtj
|dS#tj
|wxYwNrrTri)rrrrrrstatr&S_IMODEst_moderr)rrsts    r/test_lwp_filepermissionsz+FileCookieJarTests.test_lwp_filepermissionsus#NN!3U;;;	'
FF8DF111""BT\"*55u===X&&&&&IX&&&&ABB1chtj}t}t|dd	||dtj|}|t
j|j	dtj
|dS#tj
|wxYwr)rrrrrrrr&rrrrs    r/test_mozilla_filepermissionsz/FileCookieJarTests.test_mozilla_filepermissionss#!3U;;;	'
FF8DF111""BT\"*55u===X&&&&&IX&&&&rcttj}ttfD]}||}tjd}dg}t|d}||||	t|d	||||
tj|n#tj|wxYw|	t|ddS)Nrz1Set-Cookie: pll_lang=en; Max-Age=31536000; path=/r<r)rrrrrrrrrr&lenrclearrr)r)rcookiejar_classrrrrs       r/test_cookie_files_are_truncatedz2FileCookieJarTests.test_cookie_files_are_truncateds# ,.>?	(	(O))A.(()?@@CJKGw(>??C
c3'''SVVQ'''	
+			 ****	 ****SVVQ'''')	(	(s
AC::Dcjtj}ttfD]o}|}	|d|d9#t$r*}||jtYd}~hd}~wwxYw	t|d5}|dttfD]-}|}|t|j|.	dddn#1swxYwYtj
|dS#tj
|wxYw)NzAfor this test to work, a file with this filename should not existrz%expected OSError for invalid filenamewzoops
)rrrrrfailOSErrorassertIsNot	__class__ropenwriterr)r)rrrexcrs      r/test_bad_magicz!FileCookieJarTests.test_bad_magics#+-==
	C
	CO!!A
C!<===		ABBBB
;
;
;  	::::::::
;	'h$$
C!!!'35E'ECCO'))A%%iBBBBC
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
X&&&&&IX&&&&sHA
B BBDAC;/D;C??DC?DD2N)rirjrkrrrrrunittestskipIf	mswindowsrskip_unless_working_chmodrrrr	rlr1r/rrNs///
:::
&&&888MMMX_Y [\\(
'
')(]\
'X_Y [\\(
'
')(]\
'X_Y [\\((()(]\(0'''''r1rceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)S)*CookieTestsct}dD]h\}}}tj|}|||}|r||S||idS)N))http://foo.bar.com/zblah.comF)rzrhubarb.blah.comF)rzrhubarb.foo.bar.comF)r.foo.bar.comT)rfoo.bar.comT)rz.bar.comT)rbar.comT)rcomT)http://foo.com/zrhubarb.foo.comF)r.foo.comT)rfoo.comT)rrT)http://foo/zrhubarb.fooF)rz.fooT)rrqT)rz	foo.localT)r.localT)http://barfoo.comrF)rrF)rrrrdomain_return_ok
assertTrueassertFalse)r)polrdomainokrrs       r/test_domain_return_okz!CookieTests.test_domain_return_oks"## 	&	&OC*n,,S11G$$VW55A
&4??1%%%%""1%%%%1	&	&r1ctj}t|}t|ddt|dd|jddd}||j||jd|jddd}||j||jd|t|dt|}|d	d	
	t|}|d	d	
tj
|jn#tj
|jwxYw|t|tjdd	zddz||t|d
ddS)Nreggsz"spam"; path=/foo/rr/foo/z"spam"zJ"spam"; path="/foo/"; domain="www.acme.com"; path_spec; discard; version=0T)ignore_expiresrzpath_specified=%sFhttp://www.acme.com/foo/z"spam"; eggs)rrrrrrQrr&namerreprrrevertrrresub)r)rrcookieold_strs     r/test_missing_valuezCookieTests.test_missing_values#X&&!3V<<<!35IJJJN+C08&,'''f---N+G4X>&,'''h/////
,	.	.	.q''	d4888	) **A
HHDH>>>QZ((((IQZ((((GGF&-/BU/J

			
	
*1.HII'	)	)	)	)	)s$&E$$E?cdD]\}}}t||}t|}t|dd	|jddd}||j|t
|dd|r4|jddd	}||jd
#t$r||YwxYwdS)N))NFr)NTr<)FFN)FTr<)TFr)TTr)rfc2109_as_netscaperfc2965http://www.example.com/zni=ni; Version=1www.example.comrnifoo=bar; Version=1rqr<)	rr
rrr&rurKeyErrorrQ)r)r2r3rupolicyrr.
cookie2965s        r/test_rfc2109_handlingz!CookieTests.test_rfc2109_handling4s$	6	<	<1')$7!!!F&!!Aa!:<NOOO
<$56s;DA  999a!:2444<!",=!>s!CE!JJ$$Z%7;;;
+
+
+!!'*****
+#	<	<sB77CCcPt}t|ddt|ddt|ddt|ddt|ddt|ddt|dd	t|dd
|jddd
}||jd||j||jt|	|j
||d|	|d|jddd}||jd|	|j||jd||j
|jddd}||j|	|j
|jddd}|jddd}||j
||j
|jddd}||j||jd|jddd
}||jdS)Nrz0spam=eggs; DoMain=.acme.com; port; blArgh="feep"zni=ni; port=80,8080http://www.acme.com:80/znini=nizfoo=bar; expires=z-spam=eggs; expires="Foo Bar 25 33:22:11 3022"z	fortytwo=z=unladenswallowholyhandgrenade	.acme.comrrblArghblarghrr6z80,8080ninirqfortytworN)r
rrr&r rdomain_specifiedportrrport_specifiedhas_nonstandard_attrrQrsassertIsNotNoner)r)rr.rqrs     r/test_ns_parserzCookieTests.test_ns_parserSsKK!3L	N	N	N!35JKKK!6	BBB!68KLLL!69?	@	@	@!3[AAA!35FGGG!35FGGGK(-f5444/000&7888.///33H==>>>44X>>???N+C067770111i000-...N+C08&+&&&.///j(-e4z.)#.u5#+&&&$,'''N+C0<V\***r***
N+C01BC&,'''''r1ct}t|ddt|dd|jdd}|d||d|dS)Nrzexpires=eggszversion=eggs; spam=eggsrrrsru)r
rrassertIn)r)rcookiess   r/test_ns_parser_special_namesz(CookieTests.test_ns_parser_special_namesss
KK!3^DDD!35NOOO*^,S1

i)))

i)))))r1cRt}ttjdz}tj|5d|g}t
jd}t|d}|	||}|
t|d|
t|dj|dddn#1swxYwYt|dd|z|
t|dttjdz
}t|dd|zt|d}|
t|d|d	||d
|t|dd|zt|dd|z|
t|d
t|dd|zt|dd|zt|d}|
t|dt|dd|
t|d||
t|d|d	|t#dddddddddddddddi}	|
|	jddS)Nz%Set-Cookie: FOO=BAR; path=/; expires=http://www.coyote.com/r<rrzspam="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)rFzwww.python.orgTrz1444312383.018307i?uV)r
rr8rcheck_no_warningsrrrrmake_cookiesr&rrsrrKassertNotInclear_session_cookiesr)
r)rfuturerrrrLnowhr.s
          r/test_expireszCookieTests.test_expiressKKty{{4/00

.t
4
4	H	HGvGGHG.(()ABBCw(@AACnnS#..GS\\1---]71:+=>>GGG
	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	!35M 6!	"	"	"Q###DIKKM**!35M6			a!788Q###

lA&&&"""	!35M 6!	"	"	"!35L 6!	"	"	"Q###!3624:6;	<	<	<!3624:6;	<	<	<a!788Q###	!6
FFFQ###	!!!Q###

lA&&&FGu&6uc':d	
44444sBC//C36C3c.td}t|}t|dd|d|jdt|}t|dd|d|jdt|}t|d	d|d
|jdt|}t|dd|d|jdt}t|dd
|d|jdt}t|dd|d|jdt}t|d	d|d|jdt}t|dd|d|jddS)NTr3rzspam="bar"; Version="1"rrzhttp://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/rQ
eggs="bar"/blahz
/blah/rhubarb)rr
rrKrrr)rrs   r/test_default_pathzCookieTests.test_default_paths!$///cNNa/1JKKK

c1:n5666cNNa35NOOO

c1:n5666cNNa;/	1	1	1

h
> :;;;cNNa</	1	1	1

&
>(BCCC
KK!3\BBB

c1:n5666KK!7FFF

c1:n5666KK!?NNN

gqz.9:::KK!@,OOO

oqz.'ABBBBBr1ct}d}d}t||||d|jd|t|||dS)Nzhttp://example.com/?spam/eggsr]rzexample.com)r
rrKrr&)r)cjurirs    r/test_default_path_with_queryz(CookieTests.test_default_path_with_querysi
[[-"c5)))

c2;}5666*2s33U;;;;;r1cdgd}|D](\}}|t||)dS)N))z/foo%2f/bar/foo%2F/bar)rfrf)
/foo%%/barrg)/fo%19o/barrh)z/fo%7do/barz/fo%7Do/bar)	/foo/bar&ri)	/foo//barrj)	~/foo/barrk)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)casesrrIs    r/test_escape_pathzCookieTests.test_escape_pathsS*!	7	7KC[--v6666	7	7r1ctjd}|t	|dtjd}|t	|dtjd}|t	|ddS)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)rrrr&rr)rs  r/test_request_pathzCookieTests.test_request_pathsn$$
:;;	
c**?	A	A	An$$
())	
c**,@AAAn$$%=>>c**C00000r1cDt}td}t|}d}t||d|jddd}dD]\}}||}tj|}	t||}
|rD|d	|
d
|||	||	|
d	|
d|||	||	dS)NT)strict_ns_set_pathzhttp://bar.comzspam=eggs; Path=/foor/foor))rsT)r&T)/foo/barT)rF)z/foobad/fooFz	spam=eggszcookie not set for zcookie set for )rr
rrrrrrKrset_ok_pathrTr)r)rstrict_ns_path_polrbase_urlr.pathr!rrrXs           r/test_path_prefix_matchz"CookieTests.test_path_prefix_match"sG!##0DIIIcNN#!X'=>>>I&v.v61
	N
	NHD"
%t%%C.((--C!!S))A
N

k1.JD.J.JKKK 2 > >vs K KLLLL  a1I41I1IJJJ  !3!?!?!L!LMMMM
	N
	Nr1c(tjdddi}|t	|dtjdddi}|t	|t
dS)Nzhttp://www.acme.com:1234/Hostzwww.acme.com:4321r1234r)rrrr&rrros  r/test_request_portzCookieTests.test_request_port:sn$$%@.46I-J%LLc**F333n$$%;.46I-J%LLc**,=>>>>>r1ctjdddi}|t	|dtjdddi}|t	|dtjd	dd
i}|t	|ddS)Nzhttp://1.1.1.1/r{www.acme.com:80r|z1.1.1.1rzirrelevant.comrz&http://www.acme.com:2345/resource.htmlzwww.acme.com:5432)rrrr&rros  r/test_request_hostzCookieTests.test_request_hostBsn$$%6.46G-H%JJ
	
c**I666n$$%;.46F-G%IIc**N;;;n$$%M.46I-J%LLc**N;;;;;r1c&|td|td|td|td|td|td|td|tddS)	Nrz1foo2.3bar4.5com192.168.1.1rN.rz..foozfoo.)rrrrWs r/test_is_HDNzCookieTests.test_is_HDNRs}--...122333
..///$$$%%%//000)))(((((r1c6|tdd|tdd|tdd|tdd|tdd|tdd|tdd|td	d	dS)
Nrr?acme.comz
acme.localr.comrrNz192.168.0.1)r&rrWs r/
test_reachzCookieTests.test_reach\s~..<<<z**J777|,,h777x(333v///sS)))rB'''}--}=====r1c|tdd|tdd|tdd|tdd|tdd|tdd|tdd|td	d
|tdd|tdd
|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdd|tdddS)Nrz.168.1.1zx.y.comzx.Y.comz.Y.comzY.comz	a.b.c.comz.c.comz
example.localrz	blah.blahrNz.rhubarb.rhubarbrr?zrhubarb.acme.comzwww.rhubarb.acme.comzy.comz.y.comrrmz.mr)rrrrrWs r/test_domain_matchzCookieTests.test_domain_matchfs]MBBCCCmZ@@AAAY	::;;;Y99:::i99:::[(;;<<<h<<===_h??@@@k266777b*<==>>>R,,---)*jAABBB*:{CCDDD)*<kJJKKK)*@+NNOOO))Y??@@@))X>>???*9g>>???)'7;;<<<*8W==>>>)(H==>>>))V<<===*9e<<===*9c::;;;*9d;;<<<*9b99:::*9c::;;;)-GGHHH*=*EEFFF*=#>>???*="==>>>>>r1ct}t|dd|t|ddS)Nzhttp://www.nasty.com/z)foo=bar; domain=friendly.org; Version="1"r)r
rr&rrs  r/test_wrong_domainzCookieTests.test_wrong_domainsL

KKa0A	C	C	CQ#####r1cHtd}t|}t|ddt|dd|t	|ddD]9}t|d	|zd
|t	|d:dS)NT)
strict_domainr9zhttp://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
rr&r)r)cprb
pseudo_tlds    r/test_strict_domainzCookieTests.test_strict_domains!t
4
4
4
b
!
!
!"5}EEE"5=	?	?	?R!$$$E	)	)Jb"6"C8
:
:
:SWWa((((	)	)r1ct}t|dd|t|d||jdddjd|t|dd|t|ddt
tj	}|||t|dd
t|ddt|d
d|t|d||jdddjd||jdddjd|t|d
dt|dd|t|dt|dd|t|ddS)Nhttp://foo.net/zns=barr<foo.netrnsrrhttp://www.foo.net/)strict_ns_domainrNhttp://foo.net/foo/zspam1=eggs; domain=foo.netzhttp://foo.net/foo/bar/zspam2=eggs; domain=.foo.netr#.foo.netrsspam1r%rtspam2zspam2=eggs; spam1=eggs; ns=barznini="ni"; domain=.netzhttp://foo.co.ukznasty=trick; domain=.co.uk)	r
rr&rrrrDomainStrictNonDomain
set_policy)r)rrs   r/test_two_component_domain_nsz(CookieTests.test_two_component_domain_nssO
KK	!.999Q###I.s3D9?GGG*1.?@@(KKK*1.CDD!	#	#	#"0FHHH	S*1.CDDbIII	!26	8	8	8	!67	9	9	9Q###J/7@F	!	!	!J/
;GDJ	!	!	!*1.GHH9	;	;	;	!.0HIIIQ###	!/1MNNNQ#####r1ct}t|dd|t|ddS)Nhttp://localhostfoo=bar; domain=localhost;r<r
rr&rrs  r/test_localhost_domainz!CookieTests.test_localhost_domainsAKK!/1MNNNQ#####r1ct}t|dd||jdddjddS)Nrrz
.localhostrrqrrr
rr&rrrs  r/test_localhost_domain_contentsz*CookieTests.test_localhost_domain_contentssOKK!/1MNNNL1#6u=CUKKKKKr1ct}t|dd||jdddjddS)Nrzfoo=bar;zlocalhost.localrrqrrrrs  r/ test_localhost_domain_contents_2z,CookieTests.test_localhost_domain_contents_2sOKK!/<<<$56s;EBH%PPPPPr1ct}t|dd|t|ddS)Nzhttp://evil.comzfoo=bar; domain=.localhostrrrs  r/test_evil_nonlocal_domainz%CookieTests.test_evil_nonlocal_domainsAKK!.0LMMMQ#####r1ct}t|dd|t|ddS)Nrzfoo=bar; domain=.evil.comrrrs  r/test_evil_local_domainz"CookieTests.test_evil_local_domainsAKK!/1LMMMQ#####r1ct}t|dd|t|ddS)Nrz foo=bar; domain=.someother.localrrrs  r/test_evil_local_domain_2z$CookieTests.test_evil_local_domain_2sAKK!/1STTTQ#####r1c|td}t|}t|dd|t	|d||jdddjd	|t|dd
|t|ddt|d
d|t	|d|t|d
d
t|dd||jdddjd|t	|d|t|dd
|t|ddt|dd|t	|dt|dd|t	|ddS)NTr[rr}r<rrrqrrz$Version=1; foo=barrrNzhttp://foo.net/fooz1spam=eggs; domain=foo.net; path=/foo; Version="1"zhttp://www.foo.net/foo/z&spam=eggs; domain=foo.net; Version="1"rr&rr%r"rz($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
rr&rrrr_s   r/!test_two_component_domain_rfc2965z-CookieTests.test_two_component_domain_rfc2965s_!$///cNN	a*,BCCCQ###I.s3E:@%HHHq*;<<.	0	0	0	
q*?@@"EEE
	a-I	K	K	KQ###q*>??.	0	0	0
	a2>	@	@	@J/8@F	!	!	!Q###q*?@@.	0	0	0q*CDDC	E	E	E	a*;	=	=	=Q###	a,?	A	A	AQ#####r1c>ttdgdg}tjd}dg}t|d}||||t|dtjd}t|d}||||t|d	tjd
}t|d
}||||t|d	tjd
}t|d
}|	||}|
|d|t|d||||
ddS)
Nrr)blocked_domainsallowed_domainsrhttp://acme.com/*Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/rrr<rPr"r)r
rrrrrrr&rrS
set_cookierr
has_header)r)rrrrrLs      r/test_domain_allowzCookieTests.test_domain_allow(s0'L+,...
/
/
/n$$%788?@7$677	#s###Q###n$$%;<<7$:;;	#s###Q###n$$%=>>7$<==	#s###Q###n$$%=>>7$<==..c**	WQZ   Q###	C   1122222r1c
tddg}t|}dg}tjd}t|d}||||t|d|	dg}||||t|d	|
tjd
}t|d
}||||t|d	tjd
}||||
d||
d|
|	dg||||t|d	tjd}t|d}|||}||d|t|d
||||
d|
|	gtjd}t|d}|||}||||t|d	tjd}||||
dtjd}|||||d|||
d|	dg}tjd}||||
dtjd}||||
ddS)NTr?)r3rrrrrrr<zhttp://www.roadrunner.net/rCookie2r"rzhttp://badacme.com/)rr
rrrrrr&rset_blocked_domainsrrrrrSrr	return_ok)r)rrrrrprLs        r/test_domain_blockzCookieTests.test_domain_blockGs!;-999S!!!?@n$$%;<<7$:;;	#s###Q#####ZL11	#s###Q###				n$$%ABB7$@AA	#s###Q###n$$%ABB	C   x00111y11222				
...	#s###Q###n$$%;<<7$:;;..c**	WQZ   Q###	C   11222				###n$$%7887$677..c**	#s###Q###n$$%788	C   x00111n$$%:;;	C   wqz37788811222##ZL11n$$%788	C   11222n$$%:;;	C   1122222r1c
dD]}dD]}t}|rtd}t}d}ntd}t}d}||d}|||d	|||||d
|d|||jdd
djd||jdd
djddS)N)TF)r%rNFr[rNTz; Version=1rfoo1=barfoo2=barz; securerrfoo1z#non-secure cookie registered securefoo2z#secure cookie registered non-secure)	r
rrrrrrsecurer)r)r
whitespacerrrvsrs        r/test_securezCookieTests.test_secures6	;	;B%
;
;
KK'-e<<<C+CBB-d;;;C'C&BS!!!,Assbb**=>>>Assrrr::FGGG  J~.s3F;B9;;;J~.s3F;B9;;;;#
;	;	;r1ct}t|}dg}tjd}t|d}||||t|dtjd}|	||
|dtjd}|	|||dtjd}|	||
|dtjd}|	|||ddS)	Nr(Set-Cookie: session=narf; secure; path=/https://www.acme.com/r<rrzwss://www.acme.com/zws://www.acme.com/)
rr
rrrrrr&rrrrrr)rrrrrs      r/test_secure_blockzCookieTests.test_secure_blocks!##S!!!=>n$$%<==7$;<<	#s###Q###n$$%<==	C   x00111n$$%;<<	C   11222n$$%:;;	C   x00111n$$%9::	C   1122222r1ctdg}t|}dg}tjd}t|d}||||t|dtjd}|	||
|dtjd}|	||
|dtjd	}|	|||dtjd
}|	||
|ddS)Nfoos)secure_protocolsrrrr<rrzfoos://www.acme.com/zfoo://www.acme.com/)
rr
rrrrrr&rrrrrrs      r/test_custom_secure_protocolsz(CookieTests.test_custom_secure_protocolss!F8<<<S!!!=>n$$%<==7$;<<	#s###Q###n$$%<==	C   11222n$$%;<<	C   11222n$$%;<<	C   x00111n$$%:;;	C   1122222r1cttd}t|ddt|d}||ddS)NTr[rrzfoo=\b"a"r; Version=1z$Version=1; foo=\\b\"a\"r)r
rrr&)r)rrXs   r/test_quote_cookie_valuez#CookieTests.test_quote_cookie_values_0>>>???a/1IJJJ!344899999r1cdd}ttd}t||dtj|}|t|d|||	|
ddS)Nhttp://www.acme.comTr[r7r<r)r
rrrrrr&rrrr)r)rrrs    r/test_missing_final_slashz$CookieTests.test_missing_final_slashs#)$77788a2333n$$S))Q###	C   x0011111r1ctd}t|}d}t||dt||}|d|dt|}d}t||dt||}|d|d	t|}d}t||d
t||}|d|d	dS)NTr[rspam=eggs; Version=1Domainz*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
rrTrKr)rrrrXs     r/test_domain_mirrorzCookieTests.test_domain_mirrors!$///cNN#a4555!S!!1A	C	C	C
cNN#aEFFF!S!!

*A/DEEEcNN#aDEEE!S!!

)1.CDDDDDr1cJtd}t|}d}t||dt||}|d|dt|}d}t||dt||}|d|d	dS)
NTr[rrrz&absent path returned with path presentzspam=eggs; Version=1; Path=/z	$Path="/"zpath not returnedrrs     r/test_path_mirrorzCookieTests.test_path_mirrors!$///cNN#a4555!S!!$LMMMcNN#a<===!S!!

k1&9:::::r1cntd}t|}d}t||dt||}|d|dt|}d}t||dt||}||dd	t|}d}t||d
t||}|d|dt|}d}t||d
t||}|d|ddS)NTr[rrPortz&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
rrTr'rKrs     r/test_port_mirrorzCookieTests.test_port_mirrorsd!$///cNN#a4555!S!!$LMMMcNN#a:;;;!S!!-H	J	J	J
cNN#a?@@@!S!!

lAM	O	O	O
cNN#aDEEE!S!!

'	 	 	 	 	 r1cttd}d}t||dt||}|d|ddS)NTr[rzfspam=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
rrrT)r)rrrXs    r/test_no_return_commentz"CookieTests.test_no_return_comment-s~)$77788#aE	F	F	F
!S!!AH	J	J	J	J	Jr1cttd}t|ddt|ddt|ddt|ddt|d	d
gd}gd}gd
}gd}t	dD]}d}|D]}||t||j||||j	||||j
||||j|||dz}dS)NTr[zhttp://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=1http://www.sol.nosbang=wallop; version=1; domain=".sol.no"; port="90,100, 80,8080"; max-age=100; Comment = "Just kidding! (\"|\\\\) ")r<rr<r<r<)rqrrqrqbang)z
blah.spam.orgrrrz.sol.no)rr^r\rrrrr<)r
rrrrangeassertIsInstancerr&rur)r rx)r)csversionsnamesdomainspathsirs        r/test_Cookie_iteratorz CookieTests.test_Cookie_iterator7s
*4888
9
9b14E	F	F	F	"9;MNNNb52	4	4	4b52	4	4	4b-K	L	L	L
#??555...222q		AA

%%a000  HQK888  q222  71:666  q222E

		r1c|tdggdg|tdggdg|tdgddgg|tdggdg|td	gd
dgg|tdggdS)
Nzfoo=bar; path=/; domain)rp)rxr)r Nrtz)foo=bar; expires=Foo Bar 12 33:22:11 2000)rp)rsNrtrqrrtzfoo=bar; expireszfoo=bar; versionrp)ruNrNrwrWs r/rzz!CookieTests.test_parse_ns_headersWs?7899AAA
B				
IJKK
B
B
BC			
	
eW%%-
./			
	
0122
B
B
BC	E	E	E	
0122/
01	3	3	3	
)2$//44444r1cXd}ttjdz}dgdgdgdgdgd|zgfD]0}||}|t|d	1d
g}||}|jddd
}||jdS)Nct}tjd}t	|d}||||S)Nr4)r
rrrrr)rrrr"s    r/cookiejar_from_cookie_headerszICookieTests.test_bad_cookie_header.<locals>.cookiejar_from_cookie_headerstsLA.(()BCCCW&?@@A
a%%%Hr1rOz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 2000r5rr)rr8r&rrrQrs)r)rrVrrr.s      r/test_bad_cookie_headerz"CookieTests.test_bad_cookie_headerrs			ty{{4/00

<=
./
./
&
/0

	(
	(G.-g66ASVVQ''''II))'22-.s3C8&.)))))r1N)+rirjrkr#r0r;rIrMrYr`rdrmrpryr~rrrrrrrrrrrrrrrrrrrrrrrrrrrzrrlr1r/rrs^&&&B)))@<<<>.(.(.(`	*	*	*555555r&C&C&CP<<<7772111 NNN0???<<< )))>>>"?"?"?H$$$))).$.$.$`$$$LLLQQQ$$$$$$$$$*$*$*$X333>A3A3A3F;;;.33383336:::222EEE.
;
;
;   >JJJ@5556*****r1rcVeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
S)LWPCookieTestscptjddz}g}ttd}tjdddi}|d	|zt|d
}|	||tjd
}|
|||dd||d
d|dt|d
}|	||tjd}|
||d}|
d||
d||dt|d}|	||tjd
}|
||d}|
d||
d||d|tjd}|
||d}|
d||
d|||ddS)Nrr<Tr[r=r{rr|zVSet-Cookie: CUSTOMER=WILE_E_COYOTE; path=/ ; expires=Wednesday, 09-Nov-%d 23:12:40 GMTrr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=/foorzSHIPPING=FEDEXr(zSHIPPING=FEDEX;)r8	localtimer
rrrrrrrrr&rrKrTr
startswith)r)
year_plus_onerrrrrXs       r/test_netscape_example_1z&LWPCookieTests.test_netscape_example_1sJ((+a/
)D999::n$$%>%'89%;;	
8:G
H	I	I	I7$:;;	#s###n$$%;<<	C   113KLLL	22NCCCMNNN7$:;;	#s###n$$%BCC	C   NN8$$

8!<<<

.222>???7$9::	#s###n$$%;<<	C   NN8$$

8!<<<

.222)1---n$$%?@@	C   NN8$$

8!<<<

.222%67788888r1ct}g}tjd}|dt|d}|||tjd}||||	dd|dt|d}|||tjd}|||
|	dddS)Nrrrrz6Set-Cookie: PART_NUMBER=RIDING_ROCKET_0023; path=/ammozhttp://www.acme.com/ammozBPART_NUMBER=RIDING_ROCKET_0023;\s*PART_NUMBER=ROCKET_LAUNCHER_0001)r
rrrrrrrr&rr'r)rrrrs     r/test_netscape_example_2z&LWPCookieTests.test_netscape_example_2sW0
KKn$$%;<<MNNN7$:;;	#s###n$$%;<<	C   11;	=	=	=	D	F	F	F7$:;;	#s###n$$%?@@	C   11=	>	>	>	>	>r1cttd}t|dd}||t|dd}||dt|dd	}||d
||d||dt|d
}||d|d|dS)NTr[zhttp://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
rrrr'rKr)rr.s   r/test_ietf_example_1z"LWPCookieTests.test_ietf_example_1%sA
)$77788,
/ACC	
   &q"E ;<<	
L	N	N	N*q"ELNN	
!5666"7	8	8	8"7	8	8	8*q"DEE!IJJJ

ov.....r1c(ttd}t|dddt|d}||dt|d}|d	||d
|dS)NTr[z&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_0001Riding_Rocket_0023)r
rrr'rKrTr
s   r/test_ietf_example_2z"LWPCookieTests.test_ietf_example_2s
)$77788	
7KN	P	P	P"q"EFF!LMMMq"CDD

,f555-v66666r1ctd}t|}d}t|dd}||t|dd}|t|dt|d	d
}|t|dt|d	d}|t|dt|d
d}|t|dt|dd}|t|dt|dd}|t|dt|dd}|t|dt|dd}|t|dt|dd}|t|dt|dd}|t|dtj}	||dt|}t|}|
|dt
j|n#t
j|wxYw||t|dS)NTr[rzmax-age=3600rz!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=1rz6blah=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=1rrz9foo9=bar; version=1; domain=".sol.no"; port; max-age=100;zhttp://www.sol.no/<oo/z"foo8=bar; version=1; path="/%3coo"r7r)rrrrr&rrrrr*rr)r)rrmax_ager.rolds       r/test_rejectionzLWPCookieTests.test_rejections-!$///$$$ q"7BDDq"7HJJQ###q"9HJJQ###q"9MOOQ###q":KMMQ###q"5 +,,	
Q###q"= +,,	
Q###q"5 +,,	
Q###
"
ABB
	
Q###q"5 .//	
Q###q":DFFQ####	'
FF8DF111q''CC(((A
FF8DF111X&&&&IX&&&&d1gg&&&&&s
A
KKcttd}t|ddt|dd}tjdtj}|d||||t|d	}||t|d
}dS)NTr[z7http://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\"?ru-http://www.acme.com/foo/%25/<<%0anewå/æøåuhttp://www.acme.com/ü)	r
rrr,compileIrKr'r)r)rr.
version_res    r/test_url_encodingz LWPCookieTests.test_url_encoding$s
)$77788a56	8	8	8
H.00Z 5rt<<


i(((,,,
FHH   q"<==r1cdtjddz}tjt	td}t
|ddt
|ddt
|dd	d
|fz}t|dd|zt|dd
|zt|dd|z|D]#}|jdkr|	dd$fd}||d}|
t|d|dt||dt|||d}|
t|d|dt|dS)Nrr<Tr[rrz 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; %srHTTPOnlyrNc	||ttd}||t	jn#t	jwxYw|S)NrTr[)rrrrrr)rbrnew_crs   r/save_and_restorez5LWPCookieTests.test_mozilla.<locals>.save_and_restoreTs
+~666()<T)J)J)JLL

.
999 ****	 ****LsA
A""A8r7zname='foo1', value='bar'zrest={'HTTPOnly': ''}Fr)r8rrrrrrrr)set_nonstandard_attrr&rrKr*)r)rrrsr.rrrs       @r/test_mozillazLWPCookieTests.test_mozilla:s((+a/
#X$7$E$E$E
G
G
Ga/8	:	:	:a/L	N	N	Na/1NOOO2m5EE!2(72	4	4	4!29GC	E	E	E!2<wF	H	H	H	<	<F{f$$++J;;;					! D))UQ'''

0$u++>>>

-tE{{;;;  E**UQ'''

0$u++>>>>>r1c\t}g}tjd}|dt|d}||||dt|d}|||tjd}|||d|	d|d|	ddS)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
rrrrrrrrKrrs     r/test_netscape_miscz!LWPCookieTests.test_netscape_miscgsKKn$$%BCC	MNNN7$=>>	#s###
	MNNN7$=>>	#s###n$$%BCC	C   

')A)ABBB

.s~~h/G/GHHHHHr1cdttd}t|ddt|dd}|d|t|ddt|d}|d||t|d	dS)
NTr[http://example/z#foo1=bar; PORT; Discard; Version=1;z$foo2=bar; domain=".local"; Version=1rzfoo3=bar; Version=1rr#)r
rrrKr&rr
s   r/test_intranet_domains_2965z)LWPCookieTests.test_intranet_domains_2965~s)$77788a*;	=	=	=q"3EGG

j&)))a*,ABBBq"344

j&)))Q#####r1cttd}t|ddt|dd}|t	|d|d|t|d}|d||t	|ddS)NFr[r$rzfoo2=bar; domain=.localr"r)r
rrr&rrKr
s   r/test_intranet_domains_nsz'LWPCookieTests.test_intranet_domains_nss)E:::;;!.
;;;"1&7#<>>Q###

j&)))"1&788

j&)))Q#####r1cttd}g}tjd}|dt
|d}|||tjd}|||	|
dd|	|
ddtjd	}|||	|
dd|	|
dddS)
NTr[zhttp://www.ants.com/z,Set-Cookie: JSESSIONID=ABCDERANDOM123; Path=rzJSESSIONID=ABCDERANDOM123rrzhttp://www.ants.com:8080)r
rrrrrrrrr&rrs     r/test_empty_pathzLWPCookieTests.test_empty_pathsc
)D999::n$$%;<<EFFF7$:;;	#s###n$$%;<<	C   114	6	6	6	22NCCCn$$%?@@	C   114	6	6	6	22NCCCCCr1c$tjddz}tjd}g}|d|d|z|d|z|d|dt
|d}t}|||ddddd	}|D]}d
|j	z}||dz||<|
|D]}d|j	z}||dz||<||d|d
||dd||dddS)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_aftersession_beforeperm_beforez	%s_beforez%s_afterr,r.r+r-)
r8rrrrrrr
rrrUr&assertNotEqual)	r)rrrrrcounterr.keys	         r/test_session_cookiesz#LWPCookieTests.test_session_cookiess((+a/
n$$%IJJ=>>>D$%	&	&	&	02?@	A	A	A1	2	2	2KLLL7$HIIKK	#s###$%!"%&"#%%	,	,F,C"3<!+GCLL	!!!	,	,Fv|+C"3<!+GCLL	
.
0FGGG11555G$45q99999r1N)rirjrkrrrrrrr r"r%r'r)r2rlr1r/rrsY9Y9Y9v1>1>1>fg/g/g/`373737jX'X'X't>>>,+?+?+?ZIII.$$$
$
$
$DDD>(:(:(:(:(:r1r__main__)4__doc__rrsysr,test.supportrSrrr8r
urllib.requestrrhttp.cookiejarrrrrr	r
rrr
rrrrrrrrrrrrrrplatformrTestCaserrnrrrrrrrrimainrlr1r/<module>r<s%""				



				""""""((((((!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\W
$	oBoBoBoBoBH%oBoBoBdd!d!d!d!d!(#d!d!d!N))))))))EEEDDD


t't't't't'*t't't'lM*M*M*M*M*(#M*M*M*`K	:K	:K	:K	:K	:X&K	:K	:K	:\zHMOOOOOr1