Your IP : 216.73.217.129


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



��YfRM�(@szddlmZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZmZGdd�d�Z
e
�e_Gdd�d�Zd	d
�Zded�fd
ed�fded�fded�fded�fdifdifdifdddgifded�fded�fded�fdddgifdddgifdddgifddd gifd!ed�fd"ed#�fd$dd%gdd&gifd'dd%d(gifd)d*d+gd,d-gd.d/gifd0d*d+gd,d-gd.d/gifd1d*d+gd,d-gd.d/gifd2d3d4gd5d6gd7d8gd9d:gd;d<gd=d>gd?d@gdAdBgifdCdDdEgdFdGgdHdIgdJd+gdKdLgdMdNgifgZdOdP�ZdQdR�ZdSdT�ZdUdV�ZGdWdX�dXej�ZdYZdZZd[Zd\Zd]Zed^krvej�dS)_�)�check_warningsN)�
namedtuple)�StringIO�BytesIOc@seZdZgZejZdS)�HackedSysModuleN)�__name__�
__module__�__qualname__�argv�sys�stdin�r
r
�2/opt/alt/python35/lib64/python3.5/test/test_cgi.pyrsrc@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�ComparableExceptioncCs
||_dS)N)�err)�selfrr
r
r�__init__szComparableException.__init__cCs
t|j�S)N)�strr)rr
r
r�__str__szComparableException.__str__cCs;t|t�stS|jj|jko:|jj|jkS)N)�
isinstance�	Exception�NotImplementedr�	__class__�args)rZanExcr
r
r�__eq__szComparableException.__eq__cCst|j|�S)N)�getattrr)r�attrr
r
r�__getattr__ szComparableException.__getattr__N)rrr	rrrrr
r
r
rrsrcCs�i}|dkr/d}d|d<||d<n^|dkr}t|jd��}d|d<d|d<tt|��|d<ntd	|��ytj||d
d�SWn/tk
r�}zt|�SWYdd}~XnXdS)N�GET�REQUEST_METHOD�QUERY_STRING�POSTzlatin-1z!application/x-www-form-urlencoded�CONTENT_TYPE�CONTENT_LENGTHzunknown method: %sZstrict_parsing�)	r�encoder�len�
ValueError�cgi�parserr)Zbuf�method�env�fprr
r
r�do_test#s



r-�zbad query field: ''�&z&&�;z;&;�=z=&=z=;=z=a�az&=az=a&z=&azbad query field: 'a'zb=a�bzb+=azb za=b=aza=+b=az b=az&b=azb&=azbad query field: 'b'za=a+b&b=b+cza bzb cza=a+b&a=b+azb azx=1&y=2.0&z=2-3.%2b0�x�1�yz2.0�zz2-3.+0zx=1;y=2.0&z=2-3.%2b0zx=1;y=2.0;z=2-3.%2b0z�Hbc5161168c542333633315dee1182227:key_store_seqid=400006&cuyer=r&view=bustomer&order_id=0bb2e248638833d48cb7fed300000f1b&expire=964546263&lobale=en-US&kid=130003.300038&ss=envz1Hbc5161168c542333633315dee1182227:key_store_seqidZ400006Zcuyer�rZexpireZ	964546263Zkidz
130003.300038Zlobalezen-USZorder_idZ 0bb2e248638833d48cb7fed300000f1bZssr+ZviewZbustomerzQgroup_id=5470&set=custom&_assigned_to=31392&_status=1&_category=100&SUBMIT=BrowseZSUBMITZBrowseZ_assigned_toZ31392Z	_categoryZ100Z_statusZgroup_idZ5470�setZcustomcCst|dt�S)N�key)�sorted�repr)�seqr
r
r�normdsr>cCsdd�|D�S)NcSsg|]}|d�qS)rr
)�.0�pr
r
r�
<listcomp>hs	zfirst_elts.<locals>.<listcomp>r
)�listr
r
r�
first_eltsgsrCcCsdd�|D�S)NcSs(g|]}|d|ddf�qS)rr$r
)r?r@r
r
rrAks	z%first_second_elts.<locals>.<listcomp>r
)rBr
r
r�first_second_eltsjsrDcCs�d}t|j|��}|jd�tjd|d|d|�}i}xKt|�j�D]7\}}t|t�r�|j	|�p�|j
||<q_W|S)Nzlatin-1rr,�environ�encoding)rr%�seekr(�FieldStorage�dict�itemsrrBZgetlist�value)�datarErFZ
fake_stdinZform�result�k�vr
r
r�
gen_resultms
/rPc@s$eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdddd d!gd"d#d$d%iZd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2S)3�CgiTestscCs�ttjd��}dtjd�ddi}tj||�}ddgddgd	d
gddgi}|j||�dS)
N�latin1�boundaryzCONTENT-LENGTH�558�submits Add �ids1234�files
Testing 123.
�title�)r�POSTDATAr%�BOUNDARYr(Zparse_multipart�assertEqual)rr,r+rMZexpectedr
r
r�test_parse_multipart{szCgiTests.test_parse_multipartcCs�tj�}|j|�|jdt|��|jt|�t|j���|jjt	dd�d��|j
|�dS)NrHZMockFieldStorage�nameZ
fieldvalue)r(rH�assertFalse�assertInr<r\rB�keys�appendr�
assertTrue)r�fsr
r
r�test_fieldstorage_properties�s
"z%CgiTests.test_fieldstorage_propertiescCsj|jttjddddi�|jttjdd�tjddd	i�}|jtt|�dS)
Nznot-a-file-objrEr�PUTZfooZbarZheaderszcontent-typez
text/plain)ZassertRaises�	TypeErrorr(rH�bool)rrdr
r
r�test_fieldstorage_invalid�s

z"CgiTests.test_fieldstorage_invalidcCsytj��ftjddt�|jdtjd��|jdtjd��|jdtjdd	��WdQRXdS)
N�ignorezcgi\.escapeztest &amp; stringz
test & stringz&lt;test string&gt;z
<test string>z&quot;test string&quot;z
"test string"T)�warnings�catch_warnings�filterwarnings�DeprecationWarningr\r(�escape)rr
r
r�test_escape�s
zCgiTests.test_escapecCspxitD]a\}}t|d�}|j||dt|��t|d�}|j||dt|��d|i}tjd|�}t|t�r|jt|�t|��|j	|j
�|j
��|j|jdd�d�xy|j
�D]k}||}|j||�t|�d	krG|j|j|�|�q�|j|j|�|d
�q�WqWdS)NrzError parsing %s method GETr!zError parsing %s method POSTr rEznonexistent field�defaultr$r)
�parse_strict_test_casesr-r\r<r(rHrrIr&ZassertCountEqualra�getvaluer`)rZorig�expect�dr+rdr:Z
expect_valr
r
r�test_strict�s"
zCgiTests.test_strictcCs�tjd�t�t_tjdd�tjdd�|jtjj�d�tjj	tj
�r�dt_tj
t_tjdd�|jtj
�tjd�dS)NZTestingz%szTesting initlog 1z
Testing log 2z Testing initlog 1
Testing log 2
z
Testing log 3z
Testing log 4)r(�logrZlogfpZinitlogr\rs�os�path�exists�devnullZlogfile�
addCleanupZcloselog)rr
r
r�test_log�s
	zCgiTests.test_logcCs�Gdd�d�}|tjd��}|j|j�|jddd�|jd�dd	i}tjd
|d|�}|j|jj�|j	|j
d�|j�dS)
Nc@s7eZdZdd�Zddd�Zdd�ZdS)z=CgiTests.test_fieldstorage_readline.<locals>.TestReadlineFilecSs||_d|_dS)Nr)rW�numcalls)rrWr
r
rr�s	zFCgiTests.test_fieldstorage_readline.<locals>.TestReadlineFile.__init__NcSs6|jd7_|r%|jj|�S|jj�SdS)Nr$)r~rW�readline)r�sizer
r
rr�szFCgiTests.test_fieldstorage_readline.<locals>.TestReadlineFile.readlinecSs?|jd}t||�}t|t�s;t|||�|S)NrW)�__dict__rr�int�setattr)rr^rWr2r
r
rr�s

zICgiTests.test_fieldstorage_readline.<locals>.TestReadlineFile.__getattr__)rrr	rrrr
r
r
r�TestReadlineFile�sr�zwb+�x�irrrfr,rE�)�tempfileZ
TemporaryFiler|�close�writerGr(rHrWZ
assertGreaterr~)rr��fr+rdr
r
r�test_fieldstorage_readline�s
z#CgiTests.test_fieldstorage_readlinec		Cs/ddddjt�ddi}ttjd��}tj|d|d	d�}|jt|j	�d
�ddd
dddiddd
dddiddd
dddiddd
dddig}xdt
t|j	��D]M}xD||j�D]2\}}t|j	||�}|j||�q�Wq�WdS)Nrr!r"z multipart/form-data; boundary={}r#rTzlatin-1rErF�r^rV�filenamerK�1234rXr.rWztest.txts
Testing 123.
rUz Add )
�formatr[rrZr%r(rHr\r&rB�rangerJr)	rr+r,rdrtr4rN�exp�gotr
r
r�test_fieldstorage_multipart�sz$CgiTests.test_fieldstorage_multipartc		Cs3ddddjt�ddi}tdtjd��}tj|d	|d
d�}|jt|j	�d�dd
ddddiddddddiddddddiddddddig}xdt
t|j	��D]M}xD||j�D]2\}}t|j	||�}|j||�q�Wq�WdS)Nrr!r"z multipart/form-data; boundary={}r#Z560s
zlatin-1rErFr�r^rVr�rKr�rXr.rWztest.txts
Testing 123.
rUz Add )
r�r[rrZr%r(rHr\r&rBr�rJr)	rr+r,rdrtr4rNr�r�r
r
r�.test_fieldstorage_multipart_leading_whitespace�sz7CgiTests.test_fieldstorage_multipart_leading_whitespacec
Csddddjt�ddi}x�ddgD]�}ttj|��}tj|d	|d
|�}|jt|j	�d�dd
ddddig}xdt
t|j	��D]M}xD||j�D]2\}}t|j	||�}	|j|	|�q�Wq�Wq.WdS)Nrr!r"z multipart/form-data; boundary={}r#rTz
iso-8859-1zutf-8rErFr$r^rVr�rKuçñ€)
r�r[r�POSTDATA_NON_ASCIIr%r(rHr\r&rBr�rJr)
rr+rFr,rdrtr4rNr�r�r
r
r�%test_fieldstorage_multipart_non_asciisz.CgiTests.test_fieldstorage_multipart_non_asciicsod}d�_�fdd�}|d|d�|d|dd�|d|ddd|d�dS)	Nr$�csfdjdd�|}dtt|��ddddi}�jt||�d	|jd
�i�dS)Nzp---123
Content-Disposition: form-data; name="upload"; filename="fake.txt"
Content-Type: text/plain

%s
---123--
�
z
r#r"z"multipart/form-data; boundary=-123rr!�uploadrR)�replacerr&r\rPr%)�contentrLrE)rr
r�check!sz;CgiTests.test_fieldstorage_multipart_maxline.<locals>.checkr4�
r6i)ZmaxDiff)rZmaxliner�r
)rr�#test_fieldstorage_multipart_maxlines	z,CgiTests.test_fieldstorage_multipart_maxlinec
Csddddjt�dttt��i}ttjd��}tj|d|dd�}|j	t|j
�d	�|j	|j
d
jd�|j	|j
d
jd�|j	|j
d
jd�|j
d
j}|j	t|�d	�ddddddiddddddig}x^t
t|��D]J}xA||j�D]/\}}t|||�}	|j	|	|�qDWq-WdS)Nrr!r"z multipart/form-data; boundary={}r#zlatin-1rErFr�rzsubmit-name�Larryr$�filesr^r�z	file1.txtrKs... contents of file1.txt ...z	file2.gifs...contents of file2.gif...)r��BOUNDARY_W3rr&�POSTDATA_W3rr%r(rHr\rBr^rKr�rJr)
rr+r,rdr�rtr4rNr�r�r
r
r�test_fieldstorage_multipart_w3c4s"z(CgiTests.test_fieldstorage_multipart_w3ccCs�d}d}ddddj|�dtt|��i}t|jd��}tj|d	|d
d�}|jt|j�d�|j|jdj	d
�|j|jdj
d�dS)NZJfISa01z_--JfISa01
Content-Disposition: form-data; name="submit-name"
Content-Length: 5

Larry
--JfISa01rr!r"z multipart/form-data; boundary={}r#zlatin-1rErFr$rzsubmit-namer�)r�rr&rr%r(rHr\rBr^rK)rr[rZr+r,rdr
r
r�%test_fieldstorage_part_content_lengthIsz.CgiTests.test_fieldstorage_part_content_lengthcCs�td	�}ddi}tjd|d|��)}|jj�}|j|jj�WdQRX|j|jj�|j|d
�|j	t
d��|jj�WdQRXdS)Nr��
rrfr,rEr4zI/O operation on closed files
xxxxxxxxxxZ
xxxxxxxxxx)rr(rHrW�readr_�closedrcr\ZassertRaisesRegexr')rr,r+rdr�r
r
r�$test_fieldstorage_as_context_manager[sz-CgiTests.test_fieldstorage_as_context_managerZkey1Zvalue1Zkey2Zvalue2xZvalue2yZkey3Zvalue3Zkey4Zvalue4cCsVd}dtt|��ddddddi}t||�}|j|j|�dS)	Nz$key2=value2x&key3=value3&key4=value4r#r"z!application/x-www-form-urlencodedr zkey1=value1&key2=value2yrr!)rr&rPr\�
_qs_result)rrLrErOr
r
r�testQSAndUrlEncodelszCgiTests.testQSAndUrlEncodecCsVd}dtt|��ddddddi}t||�}|j|j|�dS)	Nz�---123
Content-Disposition: form-data; name="key2"

value2y
---123
Content-Disposition: form-data; name="key3"

value3
---123
Content-Disposition: form-data; name="key4"

value4
---123--
r#r"z"multipart/form-data; boundary=-123r zkey1=value1&key2=value2xrr!)rr&rPr\r�)rrLrErOr
r
r�testQSAndFormDatawszCgiTests.testQSAndFormDatacCsud}dtt|��ddddddi}|jj�}|jd	d
i�t||�}|j||�dS)NaE---123
Content-Disposition: form-data; name="key2"

value2y
---123
Content-Disposition: form-data; name="key3"

value3
---123
Content-Disposition: form-data; name="key4"

value4
---123
Content-Disposition: form-data; name="upload"; filename="fake.txt"
Content-Type: text/plain

this is the content of the fake file

---123--
r#r"z"multipart/form-data; boundary=-123r zkey1=value1&key2=value2xrr!r�s%this is the content of the fake file
)rr&r��copy�updaterPr\)rrLrErMrOr
r
r�testQSAndFormDataFile�s
zCgiTests.testQSAndFormDataFilecCsRtdtf��9|jddgddgddgitjd��WdQRXdS)	Nz=cgi.parse_qs is deprecated, use urllib.parse.parse_qs insteadr2�A1�B�B3r3�B2za=A1&b=B2&B=B3)rrnr\r(Zparse_qs)rr
r
r�test_deprecated_parse_qs�s
$z!CgiTests.test_deprecated_parse_qscCs@tdtf��'|jd	d
dgtjd��WdQRXdS)Nz?cgi.parse_qsl is deprecated, use urllib.parse.parse_qsl insteadr2r�r3r�r�r�za=A1&b=B2&B=B3)r2r�)r3r�)r�r�)rrnr\r(Z	parse_qsl)rr
r
r�test_deprecated_parse_qsl�s
z"CgiTests.test_deprecated_parse_qslcCsW|jtjd�dif�|jtjd�dif�|jtjd�dddif�|jtjd�dddif�|jtjd�dddd	d
if�|jtjd�dd
dif�|jtjd�dd
dif�|jtjd�dd
dddif�|jtjd�dddd
dif�dS)Nz
text/plainztext/vnd.just.made.this.up ; ztext/vnd.just.made.this.upztext/plain;charset=us-ascii�charsetzus-asciiztext/plain ; charset="us-ascii"z,text/plain ; charset="us-ascii"; another=optZanotherZoptz attachment; filename="silly.txt"Z
attachmentr�z	silly.txtz#attachment; filename="strange;name"zstrange;namez-attachment; filename="strange;name";size=123;r�Z123z-form-data; name="files"; filename="fo\"o;bar"z	form-datar^r�zfo"o;bar)r\r(Zparse_header)rr
r
r�test_parse_header�s6

zCgiTests.test_parse_headerN)rrr	r]rerirprvr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r
r
r
rrQys0		%"rQz6---------------------------721837373350705526688164684a-----------------------------721837373350705526688164684
Content-Disposition: form-data; name="id"

1234
-----------------------------721837373350705526688164684
Content-Disposition: form-data; name="title"


-----------------------------721837373350705526688164684
Content-Disposition: form-data; name="file"; filename="test.txt"
Content-Type: text/plain

Testing 123.

-----------------------------721837373350705526688164684
Content-Disposition: form-data; name="submit"

 Add 
-----------------------------721837373350705526688164684--
u�-----------------------------721837373350705526688164684
Content-Disposition: form-data; name="id"

çñ€
-----------------------------721837373350705526688164684
ZAaB03xa�--AaB03x
Content-Disposition: form-data; name="submit-name"

Larry
--AaB03x
Content-Disposition: form-data; name="files"
Content-Type: multipart/mixed; boundary=BbC04y

--BbC04y
Content-Disposition: file; filename="file1.txt"
Content-Type: text/plain

... contents of file1.txt ...
--BbC04y
Content-Disposition: file; filename="file2.gif"
Content-Type: image/gif
Content-Transfer-Encoding: binary

...contents of file2.gif...
--BbC04y--
--AaB03x--
�__main__)Ztest.supportrr(rxrr�Zunittestrk�collectionsr�iorrrrr-r'rrr>rCrDrPZTestCaserQr[rZr�r�r�r�mainr
r
r
r�<module>s�			$$$												�e