403Webshell
Server IP : 118.27.122.248  /  Your IP : 216.73.217.130
Web Server : Apache
System : Linux web0264.sh.tyo1 4.18.0-553.79.1.lve.el7h.x86_64 #1 SMP Wed Oct 15 16:34:46 UTC 2025 x86_64
User : c9415830 ( 11735)
PHP Version : 8.4.17
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/alt/python36/lib64/python3.6/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/alt/python36/lib64/python3.6/test/__pycache__/test_http_cookiejar.cpython-36.pyc
3

�w2_�,�@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,dk�r6e+dd�dS)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@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�
DateTimeTestscCs�d}d
}|jt|�d�|jt||�d�|jt|d|�d�|jt|d|�d	�t�}td
�}x&||fD]}|j|dd||f�qtWdS)Nix+�<�iz2002-04-19 14:36:40Zz2002-04-20 14:36:40Z�z2002-04-21 14:36:40Z�z2002-04-22 14:36:40Zi �z!^\d{4}-\d\d-\d\d \d\d:\d\d:\d\dZ$zbad time2isoz format: %s %si�Q)�assertEqualr�assertRegex)�self�base�day�az�bz�text�r%�=/opt/alt/python36/lib64/python3.6/test/test_http_cookiejar.py�test_time2isozszDateTimeTests.test_time2isozcCs�d}d
}|jt|�d�|jt||�d�|jt|d|�d�|jt|d|�d	�t�}td
�}x&||fD]}|j|dd||f�qtWdS)Nix+�<rizFri, 19-Apr-2002 14:36:40 GMTzSat, 20-Apr-2002 14:36:40 GMTrzSun, 21-Apr-2002 14:36:40 GMTrzMon, 22-Apr-2002 14:36:40 GMTi �z;[a-zA-Z]{3}, \d{2}-[a-zA-Z]{3}-\d{4} \d{2}:\d{2}:\d{2} GMT$zbad time2netscape format: %s %si�Q)rrr)rr r!r"r#r$r%r%r&�test_time2netscape"s z DateTimeTests.test_time2netscapecCs<dd�}|j|d�d�|j|d�d�|j|d�d�dS)NcSstjt|��dd�S)N�)�time�gmtimer)r$r%r%r&�
parse_date9sz0DateTimeTests.test_http2time.<locals>.parse_datez01 Jan 2001���r�z	03-Feb-20��rrz	03-Feb-98��)r-r.r.rrr/)r0rrrrr/)r1rrrrr/)r)rr,r%r%r&�test_http2time8szDateTimeTests.test_http2timecCs�ddddddddd	d
ddd
dg}d}t|�}d}|j||d|||f�xR|D]J}|jt|�||�|jt|j��||j��|jt|j��||j��qNWdS)NzThu, 03 Feb 1994 00:00:00 GMTz Thursday, 03-Feb-94 00:00:00 GMTz"Thursday, 03-Feb-1994 00:00:00 GMTz03 Feb 1994 00:00:00 GMTz03-Feb-94 00:00:00 GMTz03-Feb-1994 00:00:00 GMTz03-Feb-1994 00:00 GMTz03-Feb-1994 00:00z02-Feb-1994 24:00z	03-Feb-94z03-Feb-1994z03 Feb 1994z  03   Feb   1994  0:00  z  03-Feb-1994  i�>P-z1994-02-03 00:00:00Zz%s  =>  '%s' (%s))rrr�lower�upper)r�tests�test_t�result�expected�sr%r%r&�test_http2time_formatsDs.
z$DateTimeTests.test_http2time_formatscCs.x(dD] }|jt|�d|t|�f�qWdS)N��Garbage�Mandag 16. September 1996�
01-00-1980�
01-13-1980�
00-01-1980�
32-01-1980�01-01-1980 25:00:00�01-01-1980 00:61:00�01-01-1980 00:00:62�08-Oct-3697739�
08-01-3697739�09 Feb 19942632 22:23:32 GMT� Wed, 09 Feb 1994834 22:23:32 GMTz,http2time(%s) is not None
http2time(test) %s)r;r<r=r>r?r@rArBrCrDrErFrGrH)�assertIsNoner)r�testr%r%r&�test_http2time_garbagehs$
z$DateTimeTests.test_http2time_garbagecCs(tdjdd��tdjdd��dS)Nz01 Jan 1970{}00:00:00 GMT!� �
�z01 Jan 1970 00:00:00{}GMT!i��i��)r�format)rr%r%r&�2test_http2time_redos_regression_actually_completes}sz@DateTimeTests.test_http2time_redos_regression_actually_completescCs<dd�}|j|d�d�|j|d
�d
�|j|d�d�dS)NcSstjt|��dd�S)Nr))r*r+r)r$r%r%r&r,�sz/DateTimeTests.test_iso2time.<locals>.parse_dateZ19940203T141529Z��rr���z1994-02-03 07:15:29 -0700z1994-02-03 19:45:29 +0530)rQrrrRrSrT)rQrrrRrSrT)rQrrrRrSrT)r)rr,r%r%r&�
test_iso2time�s


zDateTimeTests.test_iso2timec
Cstddddddddd	d
g
}d}xR|D]J}|jt|�||�|jt|j��||j��|jt|j��||j��q"WdS)Nz1994-02-03 00:00:00 -0000z1994-02-03 00:00:00 +0000z1994-02-03 00:00:00z
1994-02-03z1994-02-03T00:00:00Z19940203z1994-02-02 24:00:00Z19940203T000000Zz
  1994-02-03 z  1994-02-03T00:00:00  i�>P-)rrr3r4)rr5r6r9r%r%r&�test_iso2time_formats�s
z#DateTimeTests.test_iso2time_formatscCs&x dD]}|jt|�d
|�qWdS)Nr;r<� Thursday, 03-Feb-94 00:00:00 GMT�
1980-00-01�
1980-13-01�
1980-01-00�
1980-01-32�1980-01-01 25:00:00�1980-01-01 00:61:00�01-01-1980 00:00:62�01-01-1980T00:00:62�19800101T250000Zziso2time(%r))r;r<rWrXrYrZr[r\r]r^r_r`)rIr)rrJr%r%r&�test_iso2time_garbage�s
z#DateTimeTests.test_iso2time_garbagecCs(tdjdd��tdjdd��dS)Nz1994-02-03{}14:15:29 -0100!rLrMr)z1994-02-03 14:15:29{}-0100!i@Bi@B)rrO)rr%r%r&�$test_iso2time_performance_regression�sz2DateTimeTests.test_iso2time_performance_regressionN)
�__name__�
__module__�__qualname__r'r(r2r:rKrPrUrVrarbr%r%r%r&rs$rc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�HeaderTestscCs0d	d
dgg}xdD]}|jt|g�|�qWdS)
N�foo�bar�expires�d9W�version�0�)foo=bar; expires=01 Jan 2040 22:23:32 GMT�+foo=bar; expires="01 Jan 2040 22:23:32 GMT")rgrh)rirj)rkrl)rmrn)rr)rr8�hdrr%r%r&�test_parse_ns_headers�s
z!HeaderTests.test_parse_ns_headerscCs.ddgg}xd	D]}|jt|g�|�qWdS)
Nrgrhrk�1�foo=bar; version="1"�foo=bar; Version="1")rgrh)rkrq)rrrs)rr)rr8ror%r%r&�test_parse_ns_headers_version�s

z)HeaderTests.test_parse_ns_headers_versioncCs$d}ddgg}|jt|g�|�dS)Nz expires=01 Jan 2040 22:23:32 GMTri�01 Jan 2040 22:23:32 GMTrkrl)riru)rkrl)rr)rror8r%r%r&�#test_parse_ns_headers_special_names�s
z/HeaderTests.test_parse_ns_headers_special_namescCs0tddgg�}|j|d�|jtgg�d�dS)Nrgrh�bazzfoo; bar=bazr;)rgN)rhrw)rr)rZjoinedr%r%r&�test_join_header_words�sz"HeaderTests.test_join_header_wordscCs"ddggfddggfddggfddggfddggfddggfd	d d!ggfdd"d#ggfdd$ggfdd%d&ggfdd'd(d)ggfdd*gd+gd,ggfdd-d.gd/gd0gd1ggfg
}xv|D]n\}}yt|g�}Wn<ddl}ddl}|j�}|jd|�d|j�}YnX|j||d|||f��q�WdS)2Nrgzfoo=barrhz	   foo   z
   foo=   r;z   foo=z   foo=   ; z   foo=   ; bar= baz rwzfoo=bar bar=bazzfoo= bar=baz�bar=bazzfoo=bar;bar=bazzfoo bar bazza, b, c�a�b�cz(foo; bar=baz, spam=, foo="\,\;\"", bar= �spam�,;"rz (error -- traceback follows)

%sz:
When parsing: '%s'
Expected:     '%s'
Got:          '%s'
)rgN)rgrh)rgN)rgr;)rgr;)rgr;)rgr;)rhrw)rgrh)rhrw)rgry)rgrh)rhrw)rgN)rhN)rwN)rzN)r{N)r|N)rgN)rhrw)r}r;)rgr~)rhr;)r�	traceback�io�StringIO�	print_exc�getvaluer)rr5�arg�expectr7rr��fr%r%r&�test_split_header_words�s2






z#HeaderTests.test_split_header_wordscCs`ddddddddd d!d"d#d$g
}x<|D]4\}}t|g�}t|�}|j||d||||f�q$WdS)%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'
)rgrg)r�r�)r�rg)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)rrr)rr5r�r��input�resr%r%r&�test_roundtrip	s*
zHeaderTests.test_roundtripN)	rcrdrerprtrvrxr�r�r%r%r%r&rf�s	
"rfc@s"eZdZgdfdd�Zdd�ZdS)�FakeResponseNcCs$ddl}|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__,szFakeResponse.__init__cCs|jS)N)r�)rr%r%r&�info3szFakeResponse.info)rcrdrer�r�r%r%r%r&r�+sr�cGst|||d�S)NzSet-Cookie2)�	_interact)�	cookiejarr��set_cookie_hdrsr%r%r&�
interact_29655sr�cGst|||d�S)Nz
Set-Cookie)r�)r�r�r�r%r%r&�interact_netscape8sr�c	Cs`tjj|�}|j|�|jdd�}g}x|D]}|jd||f�q,Wt||�}|j||�|S)zDPerform a single request / response cycle, returning Cookie: header.r	r;z%s: %s)�urllib�request�Request�add_cookie_header�
get_header�appendr��extract_cookies)	r�r�r�Zhdr_name�reqZ
cookie_hdrr�ror�r%r%r&r�;s


r�c@seZdZdd�Zdd�ZdS)�FileCookieJarTestscCs�tjj}t�}t|dd�|j|jdddjd�z&|j|dd�t�}|j	|dd�Wdyt
j|�Wntk
r�YnXX|j|jdddjd�dS)Nzhttp://www.acme.com/Zboozwww.acme.com�/T)�ignore_discard)
rJ�support�TESTFNrr�r�_cookies�value�save�load�os�unlink�OSError)r�filenamer|r%r%r&�test_lwp_valueless_cookieIsz,FileCookieJarTests.test_lwp_valueless_cookiecCs�tjj}xbttfD]V}|�}y|jdd�Wn0tk
r\}z|j|jt	�WYdd}~XqX|j
d�qWzLt|d��8}|jd�x&ttfD]}|�}|j
t	|j|�q�WWdQRXWdytj|�Wntk
r�YnXXdS)NzAfor this test to work, a file with this filename should not exist)r�z%expected OSError for invalid filename�wzoops
)rJr�r�rr
r�r�ZassertIsNot�	__class__rZfail�open�writeZassertRaisesr�r�)rr�Zcookiejar_classr|�excr�r%r%r&�test_bad_magicXs$ 
"z!FileCookieJarTests.test_bad_magicN)rcrdrer�r�r%r%r%r&r�Hsr�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�CookieTestscCsPt�}xDd*D]<\}}}tjj|�}|j||�}|r>|j|�q|j|�qWdS)+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�rgT�r�r�T�r�r�T�r�r�F�r�r�F)r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�)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_okcCstjj}t|�}t|dd�t|dd�|jddd}|j|j�|j|j	d�|jddd}|j|j�|j|j	d�|jt
|�d�t|�}|jd	d	d
�zt|�}|j
d	d	d
�Wdtj|j�X|jt|�tjdd	dd|��|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=0T)Zignore_expiresr�zpath_specified=%sFzhttp://www.acme.com/foo/z"spam"; eggs)rJr�r�r
r�r�rIr�r�namer�reprr�Zrevertr�r�r��re�sub)rr�r|�cookieZold_strr%r%r&�test_missing_value�s0
zCookieTests.test_missing_valuec
Cs�x�dD]�\}}}t||d�}t|�}t|dd�y|jdd	d
}Wntk
rd|j|�YqX|j|j|�t|dd�|r|jdd	d}|j|jd�qWdS)NFrTr.)�rfc2109_as_netscape�rfc2965zhttp://www.example.com/zni=ni; Version=1zwww.example.comr��nizfoo=bar; Version=1rg�NFr�NTr.�FFN�FTr.�TFr�TTr)rrrrrr)	rr
r�r��KeyErrorrIrrkr�)rr�rrk�policyr|r�Z
cookie2965r%r%r&�test_rfc2109_handling�s,z!CookieTests.test_rfc2109_handlingcCs�t�}t|dd�t|dd�t|dd�t|dd�t|dd�t|dd�t|dd	�t|dd
�|jddd
}|j|jd�|j|j�|j|jt�|j	|j
�|j|jd��|j	|jd��|jddd}|j|jd�|j	|j�|j|jd�|j|j
�|jddd}|j|j�|j	|j
�|jddd}|jddd}|j|j
�|j|j
�|jddd}|j|j�|j|jd�|jddd
}|j|j�dS)Nzhttp://www.acme.com/z0spam=eggs; DoMain=.acme.com; port; blArgh="feep"zni=ni; port=80,8080zhttp://www.acme.com:80/znini=nizfoo=bar; expires=z-spam=eggs; expires="Foo Bar 25 33:22:11 3022"z	fortytwo=z=unladenswallowZholyhandgrenadez	.acme.comr�r}ZblArghZblarghzwww.acme.comrz80,8080ZninirgZfortytwor;)r
r�r�rr�r�Zdomain_specifiedZportrr�Zport_specifiedZhas_nonstandard_attrrIriZassertIsNotNoner�)rr|r�rgr}r%r%r&�test_ns_parsersDzCookieTests.test_ns_parsercCsHt�}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)rr|�cookiesr%r%r&�test_ns_parser_special_names1sz(CookieTests.test_ns_parser_special_namescCsjt�}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)rr|�futureZnow�hr�r%r%r&�test_expires<sF

zCookieTests.test_expirescCs6tdd�}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)NT)rzhttp://www.acme.com/zspam="bar"; Version="1"r�zwww.acme.comzhttp://www.acme.com/blahzeggs="bar"; Version="1"z http://www.acme.com/blah/rhubarbz/blah/z!http://www.acme.com/blah/rhubarb/z/blah/rhubarb/z
spam="bar"z
eggs="bar"z/blahz
/blah/rhubarb)rr
r�rr�r�)rr�r|r%r%r&�test_default_pathls6
zCookieTests.test_default_pathcCsBt�}d}d}t|||�|jd|jd�|jt||�|�dS)Nzhttp://example.com/?spam/eggsz
eggs="bar"r�zexample.com)r
r�rr�r)r�cjZurir�r%r%r&�test_default_path_with_query�sz(CookieTests.test_default_path_with_queryc
CsBddddddddddddg}x |D]\}}|jt|�|�q"WdS)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)rr)rr)rr)rr)rr)rr)rr)r r )r!r")r#r$)r%r&)r'r()rr)rZcasesr�r7r%r%r&�test_escape_path�szCookieTests.test_escape_pathcCsXtjjd�}|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_pathcCs�t�}tdd�}t|�}d}t||d�|jddd}x�dD]|\}}|�|��}tjj|�}	t||�}
|r�|jd
|
d|���|j|j	||	��q@|j
d
|
d|���|j|j	||	��q@WdS)NT)Zstrict_ns_set_pathzhttp://bar.comzspam=eggs; Path=/foozbar.com�/foor}�/foo/�/foo/barr�F�/foobad/fooz	spam=eggszcookie not set for zcookie set for �r+T�r,T�r-T�r�F�r.F)r/r0r1r2r3)rr
r�r�r�r�r�rr�Zset_ok_pathrr�)rr�Zstrict_ns_path_polr|Zbase_urlr��pathr�r�r�rr%r%r&�test_path_prefix_match�s&

z"CookieTests.test_path_prefix_matchcCsLtjjdddid�}|jt|�d�tjjdddid�}|jt|�t�dS)Nzhttp://www.acme.com:1234/�Hostzwww.acme.com:4321)r�Z1234zhttp://www.acme.com/)r�r�r�rrr)rr�r%r%r&�test_request_port�szCookieTests.test_request_portcCsptjjdddid�}|jt|�d�tjjdddid�}|jt|�d�tjjd	dd
id�}|jt|�d�dS)Nzhttp://1.1.1.1/r6zwww.acme.com:80)r�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�szCookieTests.test_request_hostcCst|jtd��|jtd��|jtd��|jtd��|jtd��|jtd��|jtd��|jtd��dS)	Nzfoo.bar.comz1foo2.3bar4.5comz192.168.1.1r;�.z.foo.bar.comz..foozfoo.)r�rr�)rr%r%r&�test_is_HDN�szCookieTests.test_is_HDNcCs�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd	�d	�dS)
Nzwww.acme.comz	.acme.comzacme.comz
acme.localz.localz.comr9r;z192.168.0.1)rr)rr%r%r&�
test_reachszCookieTests.test_reachcCs�|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtd	d
��|jtdd��|jtdd
��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��|jtdd��dS)Nz192.168.1.1z.168.1.1zx.y.comzx.Y.comz.Y.comzY.comz	a.b.c.comz.c.comz
example.localz.localz	blah.blahr;z.rhubarb.rhubarbzacme.comz	.acme.comzrhubarb.acme.comzwww.rhubarb.acme.comzy.comz.y.comz.comr��mz.mr9)r�rr�r)rr%r%r&�test_domain_matchs>zCookieTests.test_domain_matchcCs&t�}t|dd�|jt|�d�dS)Nzhttp://www.nasty.com/z)foo=bar; domain=friendly.org; Version="1"r)r
r�rr)rr|r%r%r&�test_wrong_domain/szCookieTests.test_wrong_domaincCsntdd�}t|d�}t|dd�t|dd�|jt|�d�x,dD]$}t|d|d
�|jt|�d�qBWdS)NT)Z
strict_domain)r	zhttp://example.co.uk/zno=problemoz!okey=dokey; Domain=.example.co.ukr�.co.uk�.org.za�.tx.us�.name.uszhttp://example.%s/zspam=eggs; Domain=.co.uk)r?r@rArB)rr
r�rr)rZcprZ
pseudo_tldr%r%r&�test_strict_domain9s



zCookieTests.test_strict_domaincCs8t�}t|dd�|jt|�d�|j|jdddjd�|jt|d�d�|jt|d�d�ttjd	�}|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_domainr;zhttp://foo.net/foo/zspam1=eggs; domain=foo.netzhttp://foo.net/foo/bar/zspam2=eggs; domain=.foo.netrz.foo.netz/fooZspam1r�z/foo/barZspam2zspam2=eggs; spam1=eggs; ns=barznini="ni"; domain=.netzhttp://foo.co.ukznasty=trick; domain=.co.uk�)	r
r�rrr�r�rZDomainStrictNonDomain�
set_policy)rr|r�r%r%r&�test_two_component_domain_nsGs4

z(CookieTests.test_two_component_domain_nscCs4tdd�}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)NT)rzhttp://foo.net/zfoo=bar; Version="1"r.zfoo.netr�rgrhz$Version=1; foo=barzhttp://www.foo.net/r;zhttp://foo.net/fooz1spam=eggs; domain=foo.net; path=/foo; Version="1"zhttp://www.foo.net/foo/z&spam=eggs; domain=foo.net; Version="1"z.foo.netz/foo/r}r�rzhttp://foo.net/foo/z($Version=1; spam=eggs; $Domain="foo.net"z#ni="ni"; domain=".net"; Version="1"zhttp://foo.co.uk/z'nasty=trick; domain=.co.uk; Version="1"r)rr
r�rrr�r�)rr�r|r%r%r&�!test_two_component_domain_rfc2965ws8
z-CookieTests.test_two_component_domain_rfc2965cCsttdgdgd�d�}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)
Nzacme.comzwww.acme.com)�blocked_domainsZallowed_domains)r	zhttp://acme.com/z*Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/rzhttp://www.acme.com/r.zhttp://www.coyote.com/rr	)r
rr�r�r�r�r�rr�make_cookies�
set_cookier�r��
has_header)rr|r�r�r�r
r%r%r&�test_domain_allow�s.




zCookieTests.test_domain_allowcCs�tddgd�}t|d�}dg}tjjd�}t|d�}|j||�|jt|�d�|j	dg�}|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	dg�}tjjd�}|j|�|j|j
d��tjjd�}|j|�|j|j
d��dS)NTz	.acme.com)rrI)r	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�rrZset_blocked_domains�clearr�r�rLrJrKr�Z	return_ok)rr�r|r�r�r��pr
r%r%r&�test_domain_block�sh











zCookieTests.test_domain_blockcCs�x�dD]�}x�dD]�}t�}|r2tdd�}t}d}ntdd�}t}d}|j|�d}|||d||f�|||d	||f�|j|jd
ddjd
�|j|jd
ddjd�qWqWdS)NTFrLr;)rz; 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)rLr;)	r
rr�r�rFr�r�Zsecurer�)rrDZ
whitespacer|r��intZvsr�r%r%r&�test_secures(




zCookieTests.test_securecCs6ttdd�d�}t|dd�t|d�}|j|d�dS)NT)r)r	zhttp://www.acme.com/zfoo=\b"a"r; Version=1z$Version=1; foo=\\b\"a\"r)r
rr�r)rr|rr%r%r&�test_quote_cookie_values
z#CookieTests.test_quote_cookie_valuecCsXd}ttdd��}t||d�tjj|�}|jt|�d�|j|�|j	|j
d��dS)Nzhttp://www.acme.comT)rzfoo=bar; Version=1r.r	)r
rr�r�r�r�rrr�r�rL)rr�r|r�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)NT)rzhttp://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�rr)rr�r|r�rr%r%r&�test_domain_mirror,s"



zCookieTests.test_domain_mirrorcCsntdd�}t|�}d}t||d�t||�}|jd|d�t|�}d}t||d�t||�}|jd|d	�dS)
NT)rzhttp://foo.bar.com/zspam=eggs; Version=1ZPathz&absent path returned with path presentzspam=eggs; Version=1; Path=/z	$Path="/"zpath not returned)rr
r�rr)rr�r|r�rr%r%r&�test_path_mirrorCs


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)NT)rzhttp://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�rrr)rr�r|r�rr%r%r&�test_port_mirrorRs0




zCookieTests.test_port_mirrorcCs:ttdd��}d}t||d�t||�}|jd|d�dS)NT)rzhttp://foo.bar.com/zfspam=eggs; Version=1; Comment="does anybody read these?"; CommentURL="http://foo.bar.net/comment.html"�Commentz:Comment or CommentURL cookie-attributes returned to server)r
rr�r)rr|r�rr%r%r&�test_no_return_commentqs
z"CookieTests.test_no_return_commentcCsttdd��}t|dd�t|dd�t|dd�t|dd�t|d	d
�dddddg}d
ddddg}dddddg}dddddg}x~td�D]r}d}xh|D]`}|j|t�|j|j||�|j|j	||�|j|j
||�|j|j||�|d}q�Wq�WdS)NT)rzhttp://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.rZbangrgr}z.sol.noz
blah.spam.orgzwww.acme.comr�z/blahz/blah/rE)r
rr�r��rangeZassertIsInstancer	rrkr�r�r4)rZcsZversions�namesZdomains�paths�ir|r%r%r&�test_Cookie_iterator{s.
z CookieTests.test_Cookie_iteratorcCs�|jtdg�ddddgg�|jtd	g�dddgg�|jtdg�ddgg�|jtdg�dddgg�|jtdg�ddgg�|jtd
g�g�dS)Nzfoo=bar; path=/; domainrgrhr4r�r�rkrlz)foo=bar; expires=Foo Bar 12 33:22:11 2000rizfoo=bar; expireszfoo=bar; versionr;)rgrh)r4r�)r�N)rkrl)rgrh)riN)rkrl)rgN)rkrl)rgrh)riN)rkrl)rgrh)rkN)rr)rr%r%r&rp�s"z!CookieTests.test_parse_ns_headerscCs�dd�}ttj�d�}x@dgdgdgdgdgd	|ggD]}||�}|jt|�d
�q:Wdg}||�}|jdd
d}|j|j�dS)NcSs,t�}tjjd�}t|d�}|j||�|S)Nzhttp://www.example.com/)r
r�r�r�r�r�)r�r|r�r�r%r%r&�cookiejar_from_cookie_headers�s

zICookieTests.test_bad_cookie_header.<locals>.cookiejar_from_cookie_headersizSet-Cookie: z
Set-Cookie2: z-Set-Cookie2: a=foo; path=/; Version=1; domainzSet-Cookie: b=foo; max-age=oopszSet-Cookie: b=foo; version=spamzSet-Cookie:; Expires=%srz3Set-Cookie: c=foo; expires=Foo Bar 12 33:22:11 2000zwww.example.comr�r|)rr*rrr�rIri)rr`rr�r|r�r%r%r&�test_bad_cookie_header�sz"CookieTests.test_bad_cookie_headerN)#rcrdrer�r�r
rrrrrr)r*r5r7r8r:r;r=r>rCrGrHrMrQrSrTrUrVrWrXrZr_rprar%r%r%r&r�rs@/! 00(


$
0,C

 r�c@sleZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�LWPCookieTestscCs�tj�dd}g}ttdd��}tjjdddid�}|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.T)rzhttp://www.acme.com:80/r6zwww.acme.com:80)r�zVSet-Cookie: CUSTOMER=WILE_E_COYOTE; path=/ ; expires=Wednesday, 09-Nov-%d 23:12:40 GMTzhttp://www.acme.com/r	zCUSTOMER=WILE_E_COYOTErNz$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rr��
startswith)r�
year_plus_oner�r|r�r�rr%r%r&�test_netscape_example_1�sJ%











z&LWPCookieTests.test_netscape_example_1cCs�t�}g}tjjd�}|jd�t|d�}|j||�tjjd�}|j|�|j|j	d�d�|jd�t|d�}|j||�tjjd�}|j|�|j
|j	d�d�dS)Nzhttp://www.acme.com/z4Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/r	z PART_NUMBER=ROCKET_LAUNCHER_0001z6Set-Cookie: PART_NUMBER=RIDING_ROCKET_0023; path=/ammozhttp://www.acme.com/ammozBPART_NUMBER=RIDING_ROCKET_0023;\s*PART_NUMBER=ROCKET_LAUNCHER_0001)r
r�r�r�r�r�r�r�rr�r)rr|r�r�r�r%r%r&�test_netscape_example_26s$




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)NT)rzhttp://www.acme.com/acme/loginz3Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"z!http://www.acme.com/acme/pickitemz=Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"z=^\$Version="?1"?; Customer="?WILE_E_COYOTE"?; \$Path="/acme"$z!http://www.acme.com/acme/shippingz+Shipping="FedEx"; Version="1"; Path="/acme"z^\$Version="?1"?;z7Part_Number="?Rocket_Launcher_0001"?;\s*\$Path="\/acme"z-Customer="?WILE_E_COYOTE"?;\s*\$Path="\/acme"z http://www.acme.com/acme/processz%Shipping="?FedEx"?;\s*\$Path="\/acme"Z
WILE_E_COYOTE)r
rr�r�rr)rr|r�r%r%r&�test_ietf_example_1is"

z"LWPCookieTests.test_ietf_example_1cCsXttdd��}t|ddd�t|d�}|j|d�t|d�}|jd	|�|jd
|�dS)NT)rz&http://www.acme.com/acme/ammo/specificz=Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"z@Part_Number="Riding_Rocket_0023"; Version="1"; Path="/acme/ammo"z!http://www.acme.com/acme/ammo/...z(Riding_Rocket_0023.*Rocket_Launcher_0001zhttp://www.acme.com/acme/parts/ZRocket_Launcher_0001ZRiding_Rocket_0023)r
rr�rrr)rr|r�r%r%r&�test_ietf_example_2�s


z"LWPCookieTests.test_ietf_example_2cCs�tdd�}t|d�}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}z2|j	|dd�t
|�}t|d�}|j|dd�Wdytj
|�Wntk
�r�YnXX|j|t
|��dS)NT)r)r	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! (\"|\\\\) "rEz9foo9=bar; version=1; domain=".sol.no"; port; max-age=100;rNzhttp://www.sol.no/<oo/z"foo8=bar; version=1; path="/%3coo"r))r�)rrr�r�rrrJr�r�r�r�r�r�r�r�)rr�r|Zmax_ager�r��oldr%r%r&�test_rejections`


	
zLWPCookieTests.test_rejectioncCsnttdd��}t|dd�t|dd�}tjdtj�}|jd|�|j||�t|d	�}|j|�t|d
�}dS)NT)rz7http://www.acme.com/foo%2f%25/%3c%3c%0Anew%C3%A5/%C3%A5zfoo  =   bar; version    =   1u/http://www.acme.com/foo%2f%25/<<%0anewå/æøåz bar=baz; path="/foo/"; version=1z^\$version=\"?1\"?zfoo=baru-http://www.acme.com/foo/%25/<<%0anewå/æøåuhttp://www.acme.com/ü)	r
rr�r��compile�Irrr�)rr|r�Z
version_rer%r%r&�test_url_encodingis
z LWPCookieTests.test_url_encodingcs�tj�dd}tjj�t�tdd�d�}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.T)r)r	zhttp://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; %scsXz,|j|d�t�tdd��}|j|d�Wdytj��Wntk
rPYnXX|S)N)r�T)r)r�r
rr�r�r�r�)rr��new_c)r�r%r&�save_and_restore�sz5LWPCookieTests.test_mozilla.<locals>.save_and_restorer)zname='foo1', value='bar'FrE)
r*rcrJr�r�r
rr�r�rrrr�)rrer|rirpror%)r�r&�test_mozillas.





zLWPCookieTests.test_mozillacCs�t�}g}tjjd�}|jd�t|d�}|j||�|jd�t|d�}|j||�tjjd�}|j|�|jd|j	d��|jd|j	d��dS)Nzhttp://foo.bar.acme.com/fooz4Set-Cookie: Customer=WILE_E_COYOTE; domain=.acme.comzhttp://www.acme.com/fooz4Set-Cookie: PART_NUMBER=3,4; domain=foo.bar.acme.comzPART_NUMBER=3,4r	zCustomer=WILE_E_COYOTE)
r
r�r�r�r�r�r�r�rr�)rr|r�r�r�r%r%r&�test_netscape_misc�s



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



zLWPCookieTests.test_empty_pathc	Cstj�dd}tjjd�}g}|jd�|jd|�|jd|�|jd�|jd�t|d�}t�}|j||�ddddd	�}x&|D]}d
|j	}||d||<q�W|j
�x&|D]}d|j	}||d||<q�W|j|d|d
�|j|dd�|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="/")�
session_after�
perm_after�session_before�perm_beforez	%s_beforez%s_afterrwryrvrx)
r*rcr�r�r�r�r�r
r�r�rrZassertNotEqual)	rrer�r�r�r|Zcounterr��keyr%r%r&�test_session_cookies�s6







z#LWPCookieTests.test_session_cookiesN)rcrdrerfrgrhrirkrnrqrrrsrtrur{r%r%r%r&rb�s[3p5[)rbcCstjjttttt�dS)N)rJr�Zrun_unittestrrfr�r�rb)�verboser%r%r&�	test_main#sr}�__main__T)r|)N)-�__doc__r�r�Ztest.supportrJr*ZunittestZurllib.requestr�Zhttp.cookiejarrrrrrrrr	r
rrr
rrrrrrrrrrrZTestCaserrfr�r�r�r�r�r�rbr}rcr%r%r%r&�<module>s<d3g

*lO
	


Youez - 2016 - github.com/yon3zu
LinuXploit