python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
test_http_cookiejar.cpython-312.pyc

ΑeEFdZddlZddlZddlZddlZddlmZddlmZddlZddl	Z	ddl
ZddlZddl
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ejJdk(Z&Gdde	jNZ(Gd	d
e	jNZ)GddZ*d
Z+dZ,dZ-Gdde	jNZ.Gdde	jNZ/Gdde	jNZ0e1dk(re	jdyy)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_hostwin32cHeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
Zy)
DateTimeTestsc	pd}d}|jt|d|jt||zd|jt|d|zzd|jt|d|zzdt}td	}||fD]}|j|d
d|d|y)
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.12.0/bootstrap/lib/python3.12/test/test_http_cookiejar.pytest_time2isozzDateTimeTests.test_time2isozs4*@A48,.DE4#:.0FG4#:.0FG
[
v
H	GDT#G>@"E
G	Gc	pd}d}|jt|d|jt||zd|jt|d|zzd|jt|d|zzdt}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,.MNtCx08	:	
tAcEz28	:	
tAcEz28	:_
6
"H	>DN57<
>	>r1cd}|j|dd|j|dd|j|ddy)NcDtjt|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=sO	4	
M24KL	
K02IJ	
K02IJr1c
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&rlowerupper)r)teststest_tresultexpectedss      r/test_http2time_formatsz$DateTimeTests.test_http2time_formatsIs
,6")06I	K	FAYq\615Yqwwy161779EYqwwy161779E	Fr1c
fdD],}|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: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_garbagems;	ND 
io6:IdOM
N!	Nr1cxtdjddztdjddzy)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_completess4	.55cGmDE.55cGmDEr1cd}|j|dd|j|dd|j|ddy)NcDtjt|ddSr6)r8r9rr:s r/r;z/DateTimeTests.test_iso2time.<locals>.parse_dates;;x~.r22r119940203T141529Z)ir"r#z1994-02-03 07:15:29 -0700z1994-02-03 19:45:29 +0530r>r?s  r/
test_iso2timezDateTimeTests.test_iso2timesX	3	
$671	3	
$?@1	3	
$?@1	3r1c6gd}d}|D]}|jt||||jt|j||j|jt|j||jy)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}

	EAXa[&!4Xaggi0&!'')DXaggi0&!'')D	Er1cNdD] }|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:6219800101T250000Zziso2time(%r))rQrrRs  r/test_iso2time_garbagez#DateTimeTests.test_iso2time_garbages1
	5D
htn,t3
5	5r1cxtdjddztdjddzy)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_regressions4	.55c%i@A.55c%i@Ar1N)
__name__
__module____qualname__r0r3r@rLrTrXr_rcrfrhr1r/rrs<G>,
K"FHN*F3 E.5$Br1rc0eZdZdZdZdZdZdZdZy)HeaderTestscTgdg}dD]}|jt|g| y)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_headerss7OP	@C
-se4h?		@r1cTddgg}dD]}|jt|g| y)Nrp)ru1)zfoo=bar; version="1"foo=bar; Version="1"rwrxs   r/test_parse_ns_headers_versionz)HeaderTests.test_parse_ns_headers_versions?$%567	@C
-se4h?		@r1cJd}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_namess/1<>NOP)3%0(;r1c|tddgg}|j|d|jtggdy)NrqNrrbazzfoo; bar=bazrN)r
r&)r)joineds  r/test_join_header_wordsz"HeaderTests.test_join_header_wordss<"]N$C#DE0*B40"5r1cddggfddggfddggfddggfddggfd	dggfd
ddggfdddggfd
dggfdddggfdgdgfddgdgdggfdddgdgdgdggfg
}|D]/\}}	t|g}|j
||d|d|d|d1y#ddl}ddl}|j}|j	d|d|jz}YaxYw) 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_wordssX
m_%&
.)*+
M?+,
[M?+
+(
{m_-
$^'D&EF
..!A BC
1234
..!A BC
JKL
+
}EF
8n-n~.
?
@&!	KC
M+SE2
VfFF	/
	
M$KKM##D!,=

LsB?C	cgd}|D]<\}}t|g}t|}|j||d|d|d|d|d	>y)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_roundtripsV,!	!KC&u-E#E*CS&
FC+ 
!	!r1N)	rirjrkrzr~rrrrrlr1r/rnrns#@@<6 D!r1rnceZdZgdfdZdZy)FakeResponseNcdddl}|jdj||_||_y)zD
        headers: list of RFC822-style 'Key: value' strings
        rN
)emailmessage_from_stringjoin_headers_url)r)headersurlrs    r/__init__zFakeResponse.__init__1s)	11$))G2DE
	r1c|jSN)rrWs r/infozFakeResponse.info8s4==(r1)rirjrkrrrlr1r/rr0s!t)r1rct|||dS)NzSet-Cookie2	_interact	cookiejarrset_cookie_hdrss   r/
interact_2965r:sY_mDDr1ct|||dS)Nz
Set-Cookierrs   r/interact_netscaper=sY_lCCr1ctjj|}|j||j	dd}g}|D]}|j|d|t
||}|j|||S)zDPerform a single request / response cycle, returning Cookie: header.rrNz: )urllibrequestRequestadd_cookie_header
get_headerappendrextract_cookies)	rrrhdr_namereq
cookie_hdrrryrs	         r/rr@s{
..
 
 
%C
$"-JG38S123
w
$C
c3'r1c eZdZdZdZdZdZdZeje
dejdZ
eje
dejdZeje
dejd	Zd
Zy)FileCookieJarTestscrtj}t|}|j|j|yr)rTESTFNrr&filenamer)rrs   r/test_constructor_with_strz,FileCookieJarTests.test_constructor_with_strNs+##"X.r1ctjtj}t	|}|j|jtj|yr)	pathlibPathrrrr&rosfspathrs   r/test_constructor_with_path_likez2FileCookieJarTests.test_constructor_with_path_likeSs=<<	 0 01"RYYx%89r1cPtd}|j|jyr)rrQrr)rs  r/test_constructor_with_nonez-FileCookieJarTests.test_constructor_with_noneXs!**%r1cGdd}tt|fD]N}|j|5|jt5|}t|}ddddddPy#1swYxYw#1swYgxYw)NceZdZy)?FileCookieJarTests.test_constructor_with_other_types.<locals>.AN)rirjrkrlr1r/Ar]sr1rr)intfloatsubTestassertRaises	TypeErrorr)r)rtype_instancers     r/!test_constructor_with_other_typesz4FileCookieJarTests.test_constructor_with_other_types\s		5!_	8Eu-
8&&y18$wH$h7A8
8
8	888
8
8s#A6A*A6*A3/A66A?	ctj}t}t|dd|j	|j
dddjd	|j|dt}|j|dtj||j	|j
dddjdy#tj|wxYw)Nhttp://www.acme.com/boowww.acme.com/Tignore_discard)
rrrrr&_cookiesvaluesaveloadunlinkrs   r/test_lwp_valueless_cookiez,FileCookieJarTests.test_lwp_valueless_cookiefs##N!3U;N3C8?EEtL	'
FF8DF1A
FF8DF1X&N3C8?EEtL
X&s0C

C$z9windows file permissions are incompatible with file modesc`tj}t}t|dd	|j	|dtj|}|jt
j|jdtj|y#tj|wxYwNrrTri)rrrrrrstatr&S_IMODEst_moderr)rrsts    r/test_lwp_filepermissionsz+FileCookieJarTests.test_lwp_filepermissionsts##N!3U;	'
FF8DF1"BT\\"**5u=X&IX&ABB-c`tj}t}t|dd	|j	|dtj|}|jt
j|jdtj|y#tj|wxYwr)rrrrrrrr&rrrrs    r/test_mozilla_filepermissionsz/FileCookieJarTests.test_mozilla_filepermissionss##!3U;	'
FF8DF1"BT\\"**5u=X&IX&rc"tj}ttfD]}||}tj
j
d}dg}t|d}|j|||jt|d	|j|j|j|jtj||jt|dy#tj|wxYw)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'SVQ'	
+	  *SVQ')	($  *s
AC77Dc@tj}ttfD]-}|}	|j	d|jd/	t|d5}|jdttfD]*}|}|jt|j|,	dddtj|y#t$r*}|j|jtYd}~d}~wwxYw#1swYUxYw#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##+-==
	CO!A
C!<=		AB
	C	'h$
C!'35E'ECO')A%%iBC
C
X&
;  	::
;
C
C
X&s<CDAC:&D	C7
 C22C7:D?DDN)rirjrkrrrrrunittestskipIf	mswindowsrskip_unless_working_chmodrrrr	rlr1r/rrMs/
:
&8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*y))*CookieTestsct}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)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_oksg"# 	&OC*nn,,S1G$$VW5A4??1%""1%1	&r1cxtj}t|}t|ddt|dd|jddd}|j|j|j|jd|jddd}|j|j|j|jd|jt|dt|}|jd	d	
	t|}|jd	d	
tj|j|jt|tj dd	zddz||jt|d
dy#tj|jwxYw)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<!35IJN+C08&,,'f-N+G4X>&,,'h//
,	.q'	d48	) *A
HHDH>QZZ(GFF&-/BU/J
	
	
*1.HI'	)
QZZ(sF!F9cdD]\}}}t||}t|}t|dd	|jddd}|j	|j
|t
|dd|sn|jddd	}|j	|j
d
y#t$r|j|YwxYw)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_handling3s	6	<1')$7!F&!Aa!:<NO
<$56s;DA  9a!:24!",=!>s!CE!JJ$$Z%7%7;5	<"
+!!'*
+sB%%CCct}t|ddt|ddt|ddt|ddt|ddt|ddt|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|jy)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_parserRs{K!3L	N!35JK!6	B!68KL!69?	@!3[A!35FG!35FGK(-f54//0&78../33H=>44X>?N+C067001i0--.N+C08&++&../jj(-e4zz.)#.u5#++&$,,'N+C0<V\\*r*
N+C01BC&,,'r1ct}t|ddt|dd|jdd}|jd||jd|y)Nrzexpires=eggszversion=eggs; spam=eggsrrrsru)r
rrassertIn)r)rcookiess   r/test_ns_parser_special_namesz(CookieTests.test_ns_parser_special_namessU
K!3^D!35NO**^,S1

i)

i)r1c@t}ttjdz}tj|5d|g}t
jjd}t|d}|j||}|jt|d|jt|dj|dddt|dd|z|jt|dttjdz
}t|dd|zt|d}|jt|d|jd	||jd
|t|dd|zt|dd|z|jt|d
t|dd|zt|dd|zt|d}|jt|dt|dd|jt|d|j!|jt|d|jd	|t#dddddddddddddddi}	|j|	jdy#1swYxYw)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Ktyy{4/0

.
.t
4	H>vhGHG..(()ABCw(@ACnnS#.GS\1-]71:+=+=>G
	H	!35M 6!	"Q#DIIKM*!35M6	a!78Q#

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

lA&FGu&6uc':d	
4a	H	Hs
BJJctd}t|}t|dd|jd|jdt|}t|dd|jd|jdt|}t|d	d|jd
|jdt|}t|dd|jd|jdt}t|dd
|jd|jdt}t|dd|jd|jdt}t|d	d|jd|jdt}t|dd|jd|jdy)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_pathsw!$/cNa/1JK

c1::n56cNa35NO

c1::n56cNa;/	1

h

> :;cNa</	1

&

>(BC
K!3\B

c1::n56K!7F

c1::n56K!?N

gqzz.9:K!@,O

oqzz.'ABr1ct}d}d}t||||jd|jd|j	t|||y)Nzhttp://example.com/?spam/eggsr]rzexample.com)r
rrKrr&)r)cjurirs    r/test_default_path_with_queryz(CookieTests.test_default_path_with_querysN
[-"c5)

c2;;}56*2s3U;r1cVgd}|D] \}}|jt||"y)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_paths3*!	7KC[-v6	7r1c`tjjd}|jt	|dtjjd}|jt	|dtjjd}|jt	|dy)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_pathsnn$$
:;	
c*?	Ann$$
()	
c*,@Ann$$%=>c*C0r1ct}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))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!s!#0DIcN#!X'=>I&v.v61
	NHD"
Jtf%C..((-C!!S)A

k10CD6.JK 2 > >vs KL  a?4&1IJ  !3!?!?!LM
	Nr1ctjjdddi}|jt	|dtjjdddi}|jt	|t
y)Nzhttp://www.acme.com:1234/Hostzwww.acme.com:4321r1234r)rrrr&rrros  r/test_request_portzCookieTests.test_request_port9synn$$%@.46I-J%Lc*F3nn$$%;.46I-J%Lc*,=>r1cxtjjdddi}|jt	|dtjjdddi}|jt	|dtjjd	dd
i}|jt	|dy)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_hostAsnn$$%6.46G-H%J
	
c*I6nn$$%;.46F-G%Ic*N;nn$$%M.46I-J%Lc*N;r1c|jtd|jtd|jtd|jtd|jtd|jtd|jtd|jtdy)	Nrz1foo2.3bar4.5com192.168.1.1rN.rz..foozfoo.)rrrrWs r/test_is_HDNzCookieTests.test_is_HDNQs}-.123
./$%/0)(r1c|jtdd|jtdd|jtdd|jtdd|jtdd|jtdd|jtdd|jtd	d	y)
Nrr?acme.comz
acme.localr.comrrNz192.168.0.1)r&rrWs r/
test_reachzCookieTests.test_reach[s~.<z*J7|,h7x(3v/sS)rB'}-}=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)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_matches]MBCmZ@AY	:;Y9:i9:[(;<h<=_h?@k267b*<=>R,-)*jAB*:{CD)*<kJK)*@+NO))Y?@))X>?*9g>?)'7;<*8W=>)(H=>))V<=*9e<=*9c:;*9d;<*9b9:*9c:;)-GH*=*EF*=#>?*="=>r1cht}t|dd|jt|dy)Nzhttp://www.nasty.com/z)foo=bar; domain=friendly.org; Version="1"r)r
rr&rrs  r/test_wrong_domainzCookieTests.test_wrong_domains0

Ka0A	CQ#r1ctd}t|}t|ddt|dd|jt	|ddD]-}t|d	|zd
|jt	|d/y)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
b
!"5}E"5=	?R!$E	)Jb"6"C8
:SWa(	)r1ct}t|dd|jt|d|j|jdddj
d|jt|dd|jt|ddt
tj	}|j||jt|dd
t|ddt|d
d|jt|d|j|jdddj
d|j|jdddj
d|jt|d
dt|dd|jt|dt|dd|jt|dy)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_nss
K	!.9Q#I.s3D9??G*1.?@(K*1.CD!	#"0FFH	S*1.CDbI	!26	8	!67	9Q#J/7@FF	!J/
;GDJJ	!*1.GH9	;	!.0HIQ#	!/1MNQ#r1cht}t|dd|jt|dy)Nhttp://localhostfoo=bar; domain=localhost;r<r
rr&rrs  r/test_localhost_domainz!CookieTests.test_localhost_domains+K!/1MNQ#r1ct}t|dd|j|jdddjdy)Nrrz
.localhostrrqrrr
rr&rrrs  r/test_localhost_domain_contentsz*CookieTests.test_localhost_domain_contentss@K!/1MNL1#6u=CCUKr1ct}t|dd|j|jdddjdy)Nrzfoo=bar;zlocalhost.localrrqrrrrs  r/ test_localhost_domain_contents_2z,CookieTests.test_localhost_domain_contents_2s@K!/<$56s;EBHH%Pr1cht}t|dd|jt|dy)Nzhttp://evil.comzfoo=bar; domain=.localhostrrrs  r/test_evil_nonlocal_domainz%CookieTests.test_evil_nonlocal_domains+K!.0LMQ#r1cht}t|dd|jt|dy)Nrzfoo=bar; domain=.evil.comrrrs  r/test_evil_local_domainz"CookieTests.test_evil_local_domains+K!/1LMQ#r1cht}t|dd|jt|dy)Nrz foo=bar; domain=.someother.localrrrs  r/test_evil_local_domain_2z$CookieTests.test_evil_local_domain_2s+K!/1STQ#r1ctd}t|}t|dd|jt	|d|j|j
dddjd	|jt|dd
|jt|ddt|d
d|jt	|d|jt|d
d
t|dd|j|j
dddjd|jt	|d|jt|dd
|jt|ddt|dd|jt	|dt|dd|jt	|dy)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!$/cN	a*,BCQ#I.s3E:@@%Hq*;<.	0	
q*?@"E
	a-I	KQ#q*>?.	0
	a2>	@J/8@FF	!Q#q*?@.	0q*CDC	E	a*;	=Q#	a,?	AQ#r1cttdgdg}tjj	d}dg}t|d}|j
|||jt|dtjj	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)
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'sx0'L+,.
/nn$$%78?@7$67	#s#Q#nn$$%;<7$:;	#s#Q#nn$$%=>7$<=	#s#Q#nn$$%=>7$<=..c*	WQZ Q#	C 12r1ctddg}t|}dg}tjj	d}t|d}|j
|||jt|d|jdg}|j
|||jt|d	|jtjj	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|jgtjj	d}t|d}|j||}|j
|||jt|d	tjj	d}|j||j|jdtjj	d}|j||j!|j#|d||j!|jd|jdg}tjj	d}|j||j!|jdtjj	d}|j||j!|jdy)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_blockFsy!;-9S!?@nn$$%;<7$:;	#s#Q###ZL1	#s#Q#		nn$$%AB7$@A	#s#Q#nn$$%AB	C x01y12		
.	#s#Q#nn$$%;<7$:;..c*	WQZ Q#	C 12		#nn$$%787$67..c*	#s#Q#nn$$%78	C x01nn$$%:;	C wqz37812##ZL1nn$$%78	C 12nn$$%:;	C 12r1c
dD]}dD]}t}|rtd}t}d}ntd}t}d}|j	|d}|||d	|||||d
|d||j|jdd
djd|j|jdd
djdy)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_secures	;B%
;
K-e<C+CB-d;C'C&BS!,Asb*=>Asr:FG  JJ~.s3F;BB9;JJ~.s3F;BB9;#
;	;r1cft}t|}dg}tjj	d}t|d}|j
|||jt|dtjj	d}|j||j|jdtjj	d}|j||j|jdtjj	d}|j||j|jdtjj	d}|j||j|jdy)	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_blocksJ!#S!=>nn$$%<=7$;<	#s#Q#nn$$%<=	C x01nn$$%;<	C 12nn$$%:;	C x01nn$$%9:	C 12r1cltdg}t|}dg}tjj	d}t|d}|j
|||jt|dtjj	d}|j||j|jdtjj	d}|j||j|jdtjj	d	}|j||j|jdtjj	d
}|j||j|jdy)Nfoos)secure_protocolsrrrr<rrzfoos://www.acme.com/zfoo://www.acme.com/)
rr
rrrrrr&rrrrrrs      r/test_custom_secure_protocolsz(CookieTests.test_custom_secure_protocolssN!F8<S!=>nn$$%<=7$;<	#s#Q#nn$$%<=	C 12nn$$%;<	C 12nn$$%;<	C x01nn$$%:;	C 12r1cttd}t|ddt|d}|j|dy)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/1IJ!3489r1c"d}ttd}t||dtjj|}|j
t|d|j||j|jdy)Nhttp://www.acme.comTr[r7r<r)r
rrrrrr&rrrr)r)rrrs    r/test_missing_final_slashz$CookieTests.test_missing_final_slashso#)$78a23nn$$S)Q#	C x01r1crtd}t|}d}t||dt||}|jd|dt|}d}t||dt||}|j	d|d	t|}d}t||d
t||}|j	d|d	y)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!$/cN#a45!S!1A	C
cN#aEF!S!

*A/DEcN#aDE!S!

)1.CDr1ctd}t|}d}t||dt||}|jd|dt|}d}t||dt||}|j	d|d	y)
NTr[rrrz&absent path returned with path presentzspam=eggs; Version=1; Path=/z	$Path="/"zpath not returnedrrs     r/test_path_mirrorzCookieTests.test_path_mirrors~!$/cN#a45!S!$LMcN#a<=!S!

k1&9:r1ctd}t|}d}t||dt||}|jd|dt|}d}t||dt||}|j	|dd	t|}d}t||d
t||}|jd|dt|}d}t||d
t||}|jd|dy)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_mirror
s!$/cN#a45!S!$LMcN#a:;!S!-H	J
cN#a?@!S!

lAM	O
cN#aDE!S!

'	 r1cttd}d}t||dt||}|jd|dy)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,sN)$78#aE	F
!S!AH	Jr1c0ttd}t|ddt|ddt|ddt|ddt|d	d
gd}gd}gd
}gd}t	dD]}d}|D]}|j|t|j|j|||j|j|||j|j|||j|j|||dz}y)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_iterator6s"
*48
9b14E	F	"9;MNb52	4b52	4b-K	L
#5.2q	AA
%%a0  HQK8  q2  71:6  q2E

	r1cr|jtdggdg|jtdggdg|jtdgddgg|jtdggdg|jtd	gd
dgg|jtdggy)
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_headersVs789A
B		
IJK
BC	
	
eW%-
./	
	
012
BC	E	
012/
01	3	
)2$/4r1c2d}ttjdz}dgdgdgdgdgd|zgfD]%}||}|jt|d	'd
g}||}|jddd
}|j|jy)Nct}tjjd}t	|d}|j|||S)Nr4)r
rrrrr)rrrr"s    r/cookiejar_from_cookie_headerszICookieTests.test_bad_cookie_header.<locals>.cookiejar_from_cookie_headersss@A..(()BCCW&?@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_headerqs	tyy{4/0

<=
./
./
&
/0

	(G.g6ASVQ'
	( II)'2-.s3C8&..)r1N)+rirjrkr#r0r;rIrMrYr`rdrmrpryr~rrrrrrrrrrrrrrrrrrrrrrrrrrrzrrlr1r/rrs^&B)@<>.(`	*55r&CP<721 N0?< )>"?H$).$`$LQ$$$*$X3>A3F;.3836:2E.
; >J@56*r1rcTeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZy
)LWPCookieTestscrtjddz}g}ttd}tj
j
dddi}|jd	|zt|d
}|j||tj
j
d
}|j||j|jdd|j|jd
d|jdt|d
}|j||tj
j
d}|j||jd}|jd||jd||jdt|d}|j||tj
j
d
}|j||jd}|jd||jd||jd|tj
j
d}|j||jd}|jd||jd||j|j!dy)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_1sQJ(+a/
)D9:nn$$%>%'89%;	
8:G
H	I7$:;	#s#nn$$%;<	C 13KL	2NCMN7$:;	#s#nn$$%BC	C NN8$

8!<

.2>?7$9:	#s#nn$$%;<	C NN8$

8!<

.2)1-nn$$%?@	C NN8$

8!<

.2%678r1cZt}g}tjjd}|j	dt|d}|j
||tjjd}|j||j|jdd|j	dt|d}|j
||tjjd}|j||j|jddy)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_2s0
Knn$$%;<MN7$:;	#s#nn$$%;<	C 1;	=	D	F7$:;	#s#nn$$%?@	C 1=	>r1cttd}t|dd}|j|t|dd}|j	|dt|dd	}|j	|d
|j	|d|j	|dt|d
}|j	|d|jd|y)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$s
)$78,
/AC	
 &q"E ;<	
L	N*q"ELN	
!56"7	8"7	8*q"DE!IJ

ov.r1cttd}t|dddt|d}|j|dt|d}|j	d	||jd
|y)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_2sz
)$78	
7KN	P"q"EF!LMq"CD

,f5-v6r1ctd}t|}d}t|dd}|j|t|dd}|j	t|dt|d	d
}|j	t|dt|d	d}|j	t|dt|d
d}|j	t|dt|dd}|j	t|dt|dd}|j	t|dt|dd}|j	t|dt|dd}|j	t|dt|dd}|j	t|dt|dd}|j	t|dtj}	|j|dt|}t|}|j|dt
j||j	|t|y#t
j|wxYw)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_rejectionsc!$/$ q"7BDq"7HJQ#q"9HJQ#q"9MOQ#q":KMQ#q"5 +,	
Q#q"= +,	
Q#q"5 +,	
Q#
"
AB
	
Q#q"5 ./	
Q#q":DFQ###	'
FF8DF1q'CC(A
FF8DF1X&d1g&
X&s=IIcDttd}t|ddt|dd}tjdtj
}|j
d||j||t|d	}|j|t|d
}y)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
)$78a56	8
H.0ZZ 5rtt<


i(,
FH q"<=r1ctjddz}tjt	td}t
|ddt
|ddt
|dd	d
|fz}t|dd|zt|dd
|zt|dd|z|D]$}|jdk(s|jdd&fd}||d}|jt|d|jdt||jdt|||d}|jt|d|jdt|y)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	|j|ttd}|j|t	j
|S#t	j
wxYw)NrTr[)rrrrrr)rbrnew_crs   r/save_and_restorez5LWPCookieTests.test_mozilla.<locals>.save_and_restoreSs^
+~6()<T)JL

.
9  *L  *s:AA+r7zname='foo1', value='bar'zrest={'HTTPOnly': ''}Fr)r8rrrrrrrr)set_nonstandard_attrr&rrKr*)r)rrrsr.rrrs       @r/test_mozillazLWPCookieTests.test_mozilla9sc(+a/
##X$7$E
Ga/8	:a/L	Na/1NO2m5EE!2(72	4!29GC	E!2<wF	H	<F{{f$++J;	<	!D)UQ'

0$u+>

-tE{; E*UQ'

0$u+>r1ct}g}tjjd}|j	dt|d}|j
|||j	dt|d}|j
||tjjd}|j||jd|jd|jd|jdy)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_miscfsKnn$$%BC	MN7$=>	#s#
	MN7$=>	#s#nn$$%BC	C 

')AB

.s~~h/GHr1cttd}t|ddt|dd}|jd|t|ddt|d}|jd||j	t|d	y)
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)$78a*;	=q"3EG

j&)a*,ABq"34

j&)Q#r1c.ttd}t|ddt|dd}|jt	|d|jd|t|d}|jd||jt	|dy)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&78

j&)Q#r1cttd}g}tjj	d}|jdt
|d}|j||tjj	d}|j||j|jdd|j|jddtjj	d	}|j||j|jdd|j|jddy)
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_paths

)D9:nn$$%;<EF7$:;	#s#nn$$%;<	C 14	6	2NCnn$$%?@	C 14	6	2NCr1ctjddz}tjj	d}g}|jd|jd|z|jd|z|jd|jdt
|d}t}|j||ddddd	}|D]}d
|jz}||dz||<|j|D]}d|jz}||dz||<|j|d|d
|j|dd|j|ddy)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/
nn$$%IJ=>D$%	&	02?@	A1	2KL7$HIK	#s#$%!"%&"#%	,F,C"3<!+GCL	,	
!	,Fv||+C"3<!+GCL	,
	
.
0FG115G$45q9r1N)rirjrkrrrrrrr r"r%r'r)r2rlr1r/rrsIY9v1>fg/`37jX't>,+?ZI.$
$D>(:r1r__main__)3__doc__rrsysr,test.supportrrr8r
urllib.requestrrhttp.cookiejarrrrrr	r
rrr
rrrrrrrrrrrrrrplatformrTestCaserrnrrrrrrrrimainrlr1r/<module>r<s"	
	"(!!!!!!!\\W
$	oBH%%oBdd!(##d!N))ED
t'**t'lM*(##M*`K	:X&&K	:\zHMMOr1