Your IP : 216.73.216.52


Current Path : /opt/alt/python36/lib64/python3.6/test/__pycache__/
Upload File :
Current File : //opt/alt/python36/lib64/python3.6/test/__pycache__/test_urllib2_localnet.cpython-36.opt-2.pyc

3

��2a�a�
@s�ddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZejd�Z
yddlZWnek
rzdZYnXejje�Zejjed�Zejjed�ZGdd�dejj�ZGdd	�d	e
j�ZGd
d�d�ZGdd
�d
ejj�ZGdd�dejj�Zej e
d�Gdd�dej!��Z"ej e
d�Gdd�dej!��Z#dd�Z$ej e
d�Gdd�dej!��Z%da&dd�Z'dd�Z(e)dk�r�ej*�dS)�N)�support�	threadingzkeycert.pemzkeycert2.pemc@seZdZdd�Zdd�ZdS)�LoopbackHttpServercCs"tjjj|||�|jjd�dS)Ng�������?)�http�server�
HTTPServer�__init__�socket�
settimeout)�selfZserver_addressZRequestHandlerClass�r�:/opt/alt/python36/lib64/python3.6/test_urllib2_localnet.pyr!s
zLoopbackHttpServer.__init__cCs |jj�\}}|jd�||fS)Ng$@)r	Zacceptr
)r�requestZclient_addressrrr
�get_request*s
zLoopbackHttpServer.get_requestN)�__name__�
__module__�__qualname__rrrrrr
rs	rc@s$eZdZdd�Zdd�Zdd�ZdS)�LoopbackHttpServerThreadcCs<tjj|�d|_tj�|_d|_td|�|_|jj	|_
dS)NFzHTTP/1.0�	127.0.0.1r)rr)r�Threadr�_stop_serverZEvent�readyZprotocol_versionr�httpdZserver_port�port)r�request_handlerrrr
r9s
z!LoopbackHttpServerThread.__init__cCsd|_|j�|jj�dS)NT)r�joinrZserver_close)rrrr
�stopBszLoopbackHttpServerThread.stopcCs$|jj�x|js|jj�qWdS)N)r�setrr�handle_request)rrrr
�runJs
zLoopbackHttpServerThread.runN)rrrrrrrrrr
r6s	rc@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�DigestAuthHandlercCs"d|_g|_i|_d|_d|_dS)Nrz
Test Realm�auth)�_request_num�_nonces�_users�_realm_name�_qop)rrrr
rTs
zDigestAuthHandler.__init__cCs
||_dS)N)r&)rZqoprrr
�set_qop[szDigestAuthHandler.set_qopcCs
||_dS)N)r$)rZusersrrr
�	set_users^szDigestAuthHandler.set_userscCs
||_dS)N)r%)rZrealmrrr
�	set_realmbszDigestAuthHandler.set_realmcCs8|jd7_tjt|j�jd��j�}|jj|�|S)N��ascii)r"�hashlib�md5�str�encode�	hexdigestr#�append)r�noncerrr
�_generate_nonceesz!DigestAuthHandler._generate_noncecCs�|jd�}||dd�}|jd�}i}xX|D]P}|jd�\}}|j�}|ddkrn|ddkrn|dd�}n|j�}|||<q.W|S)	N� r*�,�=r�"���r8)�find�split�strip)rZauth_strZfirst_space_index�parts�	auth_dict�part�name�valuerrr
�_create_auth_dictks


z#DigestAuthHandler._create_auth_dictcCs�i}|j|�||d<||d<||d<d|}tj|jd��j�}d|}tj|jd��j�}	||d<|	|d<d	|}
tj|
jd��j�}||d
kS)N�password�method�uriz#%(username)s:%(realm)s:%(password)sr+z%(method)s:%(uri)s�HA1�HA2z3%(HA1)s:%(nonce)s:%(nc)s:%(cnonce)s:%(qop)s:%(HA2)s�response)�updater,r-r/r0)rr=rBrCrDZ
final_dictZHA1_strrEZHA2_strrFZresponse_strrGrrr
�_validate_auth|s
z DigestAuthHandler._validate_authcCsN|jdd�|jdd�|jdd|j|j|j�f�|j�|jjd�dS)	Ni�zProxy Authentication RequiredzContent-Typez	text/htmlzProxy-Authenticatez(Digest realm="%s", qop="%s",nonce="%s", sProxy Authentication Required.F)�
send_response�send_headerr%r&r3�end_headers�wfile�write)rrrrr
�_return_auth_challenge�sz(DigestAuthHandler._return_auth_challengecCs�t|j�dkrdSd|jkr&|j|�S|j|jd�}|d|jkrT|j|d}n
|j|�S|jd�|jkrx|j|�S|jj|d�d}x*|j|j	gD]}|j
|||j|�r�d}q�W|s�|j|�SdSdS)NrTzProxy-AuthorizationZusernamer2F)�lenr$�headersrOrA�getr#�remove�path�
short_pathrIZcommand)rrr=rBZauth_validatedrTrrr
r�s,	




z DigestAuthHandler.handle_requestN)rrrrr'r(r)r3rArIrOrrrrr
r Qsr c@sbeZdZdZdZdZdeefZejej	d��j
d�Zdd�Zdd	�Z
d
d�Zdd
�Zdd�ZdS)�BasicAuthHandler�testUser�testPass�Testz%s:%sr+cOstjjj|f|�|�dS)N)rr�BaseHTTPRequestHandlerr)r�args�kwargsrrr
r�szBasicAuthHandler.__init__cGsdS)Nr)r�formatr[rrr
�log_message�szBasicAuthHandler.log_messagecCs"|jd�|jdd�|j�dS)N��zContent-typez	text/html)rJrKrL)rrrr
�do_HEAD�s
zBasicAuthHandler.do_HEADcCs4|jd�|jdd|j�|jdd�|j�dS)Ni�zWWW-AuthenticatezBasic realm="%s"zContent-typez	text/html)rJrK�REALMrL)rrrr
�do_AUTHHEAD�s
zBasicAuthHandler.do_AUTHHEADcCsh|jjdd�s$|j�|jjd�n@|jjdd�d|jkr\|jd�|j�|jjd�n|j�dS)NZ
Authorization�sNo Auth header receivedzBasic r_sIt works)rQrRrbrMrN�ENCODED_AUTHrJrL)rrrr
�do_GET�s
zBasicAuthHandler.do_GETN)rrr�USER�PASSWDraZUSER_PASSWD�base64Z	b64encoder/�decoderdrr^r`rbrerrrr
rV�srVc@s$eZdZdd�Zdd�Zdd�ZdS)�FakeProxyHandlercOs ||_tjjj|f|�|�dS)N)�digest_auth_handlerrrrZr)rrkr[r\rrr
r�szFakeProxyHandler.__init__cGsdS)Nr)rr]r[rrr
r^szFakeProxyHandler.log_messagecCsvtjj|jd�\}}}}}}||_|jj|�rr|jdd�|jdd�|j	�|j
jtd|jd��|j
jd�dS)	Nrr_ZOKzContent-Typez	text/htmlzYou've reached %s!<BR>r+sFOur apologies, but our server is down due to a sudden zombie invasion.)
�urllib�parseZurlparserTrUrkrrJrKrLrMrN�bytes)rZscmZnetlocrT�paramsZqueryZfragmentrrr
reszFakeProxyHandler.do_GETN)rrrrr^rerrrr
rj�srjz!Threading required for this test.csPeZdZdZdZdZdZ�fdd�Zdd�Z�fd	d
�Z	dd�Z
d
d�Z�ZS)�BasicAuthTestsrWrXZ	IncorrectrYcsTtt|�j�dd�}t|�|_|j|j�d|jj|_|jj	�|jj
j�dS)Nc_s
t||�S)N)rV)r[r\rrr
�#http_server_with_basic_auth_handler!szABasicAuthTests.setUp.<locals>.http_server_with_basic_auth_handlerzhttp://127.0.0.1:%s)�superrp�setUprr�
addCleanup�stop_serverr�
server_url�startr�wait)rrq)�	__class__rr
rss

zBasicAuthTests.setUpcCs|jj�d|_dS)N)rr)rrrr
ru)s
zBasicAuthTests.stop_servercstt|�j�dS)N)rrrp�tearDown)r)ryrr
rz-szBasicAuthTests.tearDowncCs|tjj�}|j|j|j|j|j�tjjtjj	|��y|j
tjj|j��Wn(tjj
k
rv|jd|j�YnXdS)Nz!Basic auth failed for the url: %s)rlr�HTTPBasicAuthHandler�add_passwordrarvrfrg�install_opener�build_opener�
assertTrue�urlopen�error�	HTTPError�fail)r�ahrrr
�test_basic_auth_success0s
z&BasicAuthTests.test_basic_auth_successcCsRtjj�}|j|j|j|j|j�tjjtjj	|��|j
tjjtjj
|j�dS)N)rlrr{r|rarvrf�INCORRECT_PASSWDr}r~�assertRaisesr�r�r�)rr�rrr
�test_basic_auth_httperror9s
z(BasicAuthTests.test_basic_auth_httperror)
rrrrfrgr�rarsrurzr�r��
__classcell__rr)ryr
rps	rpcsTeZdZdZdZdZdZ�fdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Z�Z
S)�ProxyAuthTestszhttp://localhostZtesterZtest123Z	TestRealmcs�tt��j�dd�}�j|tjj��dtjd<dtjd<t��_�jj	�j
�ji��jj�j
��fdd�}t|��_�j�j��jj��jjj�d�jj}tjjd	|i�}tjj��_tjj|�j��_dS)
NcSstjj�tjj|�dS)N)�os�environ�clearrH)�old_environrrr
�restore_environKs
z-ProxyAuthTests.setUp.<locals>.restore_environrc�NO_PROXY�no_proxycst�jf|�|�S)N)rjrk)r[r\)rrr
�create_fake_proxy_handlerVsz7ProxyAuthTests.setUp.<locals>.create_fake_proxy_handlerzhttp://127.0.0.1:%dr)rrr�rsrtr�r��copyr rkr(rfrgr)rarrrurwrrxrrlrZProxyHandlerZProxyDigestAuthHandler�proxy_digest_handlerr~�opener)rr�r�Z	proxy_url�handler)ry)rr
rsHs$



zProxyAuthTests.setUpcCs|jj�d|_dS)N)rr)rrrr
rucs
zProxyAuthTests.stop_servercCsF|jj|j|j|j|jd�|jjd�|jt	j
j|jj
|j�dS)NZbadr!)r�r|ra�URLrfrgrkr'r�rlr�r�r��open)rrrr
�-test_proxy_with_bad_password_raises_httperrorgs
z<ProxyAuthTests.test_proxy_with_bad_password_raises_httperrorcCs(|jjd�|jtjj|jj|j�dS)Nr!)	rkr'r�rlr�r�r�r�r�)rrrr
�,test_proxy_with_no_password_raises_httperroros
z;ProxyAuthTests.test_proxy_with_no_password_raises_httperrorcCsN|jj|j|j|j|j�|jjd�|jj	|j�}x|j
�r@q6W|j�dS)Nr!)r�r|rar�rfrgrkr'r�r��read�close)r�resultrrr
�test_proxy_qop_auth_worksus
z(ProxyAuthTests.test_proxy_qop_auth_workscCst|jj|j|j|j|j�|jjd�y|jj	|j�}Wnt
jjk
rTd}YnX|rpx|j
�rfq\W|j�dS)Nzauth-int)r�r|rar�rfrgrkr'r�r�rlr��URLErrorr�r�)rr�rrr
�0test_proxy_qop_auth_int_works_or_throws_urlerror~s

z?ProxyAuthTests.test_proxy_qop_auth_int_works_or_throws_urlerror)rrrr�rfrgrarsrur�r�r�r�r�rr)ryr
r�@s	r�csG��fdd�dtjj���S)NcsBeZdZdZgZgZdZdd�Zdd�Z��fdd�Z	d	d
�Z
dS)z1GetRequestHandler.<locals>.FakeHTTPRequestHandlerz	TestHTTP/�PcSs.|j�}x |r(|jj|�}||d�}q
WdS)N)�	send_headrMrN)r�body�donerrr
re�sz8GetRequestHandler.<locals>.FakeHTTPRequestHandler.do_GETcSs2|jd}|jjt|��}|j�|jj|�dS)NzContent-Length)rQZrfiler��intre�requestsr1)rZcontent_lengthZ	post_datarrr
�do_POST�s
z9GetRequestHandler.<locals>.FakeHTTPRequestHandler.do_POSTcs�|j�_|jj|j��jd�\}}}|j|�x&|D]\}}|j||d|ji�q6W|rt|jdd�|j	�|S|j	�dS)NrrzContent-typez
text/plain)
rQ�headers_receivedr�r1rT�poprJrKrrL)rZ
response_coderQr��headerr@)�FakeHTTPRequestHandler�	responsesrr
r��s
z;GetRequestHandler.<locals>.FakeHTTPRequestHandler.send_headcWsdS)Nr)rr[rrr
r^�sz=GetRequestHandler.<locals>.FakeHTTPRequestHandler.log_messageN)rrrZserver_versionr�r�rrer�r�r^r)r�r�rr
r��sr�)rrrZ)r�r)r�r�r
�GetRequestHandler�s&r�cs�eZdZ�fdd�Zd*dd�Zdd�Zd+dd	�Zd,d
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Z�ZS)-�TestUrlopencs@tt|�j�dd�}|j|tjj��dtjd<dtjd<dS)NcSstjj�tjj|�dS)N)r�r�r�rH)r�rrr
r��s
z*TestUrlopen.setUp.<locals>.restore_environ�*r�r�)rrr�rsrtr�r�r�)rr�)ryrr
rs�s

zTestUrlopen.setUpNc
Kslg}tjj||f|�}z@|j|jd��|j|j��|j|jd��|j|j��Wd|j�Xdj	|�S)Nr_i�)
rlrr��extend�	readlinesr1�readliner�r�r)r�url�datar\�l�frrr
r��s
zTestUrlopen.urlopencCs|jj�d|_dS)N)rr)rrrr
ru�s
zTestUrlopen.stop_servercCsZ|dkrdgdfg}t|�}t|�|_|j|j�|jj�|jjj�|jj}||_|S)Nr_s
we don't care)	r�rrrtrurwrrxr)rr�r�rrrr
�start_server�s

zTestUrlopen.start_servercKs^ttjd�s|jd�ddlm}|dkr6dgdfg}t|�}||fd|i|��}|j|_|S)NZHTTPSHandlerzssl support requiredr)�make_https_serverr_s
we care a bitZ
handler_class)�hasattrrlr�skipTestZtest.ssl_serversr�r�r)rr�r\r�r�rrrr
�start_https_server�s
zTestUrlopen.start_https_servercCsVd}dd
gdfdg|fg}|j|�}|jd|j�}|j||�|j|jdd	g�dS)NsWe got here...i.�Location�(http://localhost:%(port)s/somewhere_elsercr_zhttp://localhost:%s/�/z/somewhere_else)r�r�)r�r�r�assertEqualr�)r�expected_responser�r�r�rrr
�test_redirection�s
zTestUrlopen.test_redirectioncCs@d}d}ddg|fg}|j|�}|jd|j�}|j||�dS)Nshello worldsa
hello worl
1
d
0
r_�Transfer-Encoding�chunkedzhttp://localhost:%s/)r�r�)r�r�rr�)rr�Z
chunked_startrGr�r�rrr
�test_chunkeds
zTestUrlopen.test_chunkedcCs�d}|jdg|fg�}y|jd|j�Wn6tjjk
r`}z|j�}|j�WYdd}~XnX|jd�|j	||�|j	|j
dg�dS)NsBad bad bad...i�zhttp://localhost:%s/weeblez404 should raise URLErrorz/weeble)r�r�rrlr�r�r�r�r�r�r�)rr�r�r�r�rrr
�test_404s
zTestUrlopen.test_404cCsFd}|jdg|fg�}|jd|j�}|j||�|j|jdg�dS)Ns
pycon 2008...r_zhttp://localhost:%s/bizarrez/bizarre)r�r�rr�r�)rr�r�r�rrr
�test_200"s
zTestUrlopen.test_200cCsJd}|jdg|fg�}|jd|jd�}|j||�|j|jddg�dS)Ns
pycon 2008...r_zhttp://localhost:%s/bizarresget=with_feelingz/bizarre)r�r�rr�r�)rr�r�r�rrr
�test_200_with_parameters)sz$TestUrlopen.test_200_with_parameterscCs8|j�}tjtd�}|jd|j|d�}|j|d�dS)N)�cafilezhttps://localhost:%s/bizarre)�contexts
we care a bit)r��ssl�create_default_context�CERT_localhostr�rr�)rr�r�r�rrr
�
test_https1szTestUrlopen.test_httpscCs�|jtd�}tjdtf���|jd|jtd�}|j|d�|jt	j
j��}|jd|jtd�WdQRX|jtd�}|jt
j��}|jd|jtd�WdQRXWdQRXdS)N)�certfilerczhttps://localhost:%s/bizarre)r�s
we care a bit)r�r�r�check_warnings�DeprecationWarningr�rr�r�rlr�r��CERT_fakehostnamer�ZCertificateError)rr�r��cmrrr
�test_https_with_cafile7sz"TestUrlopen.test_https_with_cafilecCsX|jtd�}tjdtf��4|jtjj��}|j	d|j
dd�WdQRXWdQRXdS)N)r�rczhttps://localhost:%s/bizarreT)Z	cadefault)r�r�rr�r�r�rlr�r�r�r)rr�r�rrr
�test_https_with_cadefaultHs
z%TestUrlopen.test_https_with_cadefaultcs�tdkr|jd�tjs"|jd�d��fdd�}tjtj�}|j|�|j|td�}tjtd�}|j	d|j
|d�|j�d	�dS)
Nzssl module requiredzSNI support required in OpenSSLcs|�dS)Nr)Zssl_sockZserver_nameZinitial_context)�sni_namerr
�cb_sniVsz*TestUrlopen.test_https_sni.<locals>.cb_sni)r�r�)r�zhttps://localhost:%s)r�Z	localhost)r�r�ZHAS_SNIZ
SSLContextZPROTOCOL_TLSZset_servername_callbackr�r�r�r�rr�)rr�r�r�r)r�r
�test_https_sniPs


zTestUrlopen.test_https_snic
CsP|j�}tjjd|jddid�}tjj|��WdQRX|j|jdd�dS)Nzhttp://localhost:%s/ZRangezbytes=20-39)rQ)r�rlrZRequestrr�r�r�)rr�Zreqrrr
�test_sending_headers`s
z TestUrlopen.test_sending_headersc
Csb|j�}tjjd|j�}x"dD]}|jt||�d|�q Wz|j|j�d�Wd|j�XdS)	Nzhttp://localhost:%sr�r��info�geturlz3object returned from urlopen lacks the %s attributezcalling 'read' failed)r�r�r�r�)	r�rlrr�rrr�r�r�)rr��open_url�attrrrr
�
test_basichs
zTestUrlopen.test_basiccCsX|j�}tjjd|j�}|�|j�}WdQRX|j|tjj	d�|j
|j�d�dS)Nzhttp://localhost:%szEobject returned by 'info' is not an instance of email.message.MessageZplain)r�rlrr�rr�ZassertIsInstance�email�messageZMessager�Zget_content_subtype)rr�r�Zinfo_objrrr
�	test_infosszTestUrlopen.test_infocCsH|j�}tjjd|j�}|�|j�}WdQRX|j|d|j�dS)Nzhttp://localhost:%s)r�rlrr�rr�r�)rr�r�r�rrr
�test_geturl~s
zTestUrlopen.test_geturlcCsFd}|jdg|fg�}tjjd|j�}x|D]}|j||�q.WdS)Ns
pycon 2008...r_zhttp://localhost:%s)r�rlrr�rr�)rr�r�r��linerrr
�test_iteration�s

zTestUrlopen.test_iterationc	Cs�ddddddg}dj|�}|jdg|fg�}tjjd	|j�}x<t|�D]0\}}|j|||d
|t||�t|�f�qLW|j|dt|��dS)NsWe
sgot
shere
s	verylong i �
r�r_zhttp://localhost:%szQFetched line number %s doesn't match expected:
    Expected length was %s, got %sr*)	rr�rlrr�r�	enumerater�rP)r�linesr�r�r��indexr�rrr
�test_line_iteration�s
zTestUrlopen.test_line_iteration)N)N)N)rrrrsr�rur�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr)ryr
r��s(





r�cCstj�adS)N)rZthreading_setup�threads_keyrrrr
�setUpModule�sr�cCstrtjt�dS)N)r�rZthreading_cleanuprrrr
�tearDownModule�sr��__main__)+rhr�r�Zurllib.parserlZurllib.requestZhttp.serverrZunittestr,Ztestr�
import_modulerr��ImportErrorrT�dirname�__file__�hererr�r�rrrrrr rZrVrjZ
skipUnlessZTestCaserpr�r�r�r�r�r�r�mainrrrr
�<module>sD

y,!
(
N+
`