Your IP : 216.73.216.85


Current Path : /opt/alt/python39/lib64/python3.9/test/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/__pycache__/test_urllib2_localnet.cpython-39.opt-2.pyc

a

XC?h�e�@srddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZzddlZWney�dZYn0ej�e�Zej�ed�Zej�ed�ZGdd�dejj�ZGdd	�d	ej�ZGd
d�d�ZGdd
�d
ejj�ZGdd�dejj�Z Gdd�de	j!�Z"ej#ddd�Gdd�de	j!��Z$dd�Z%Gdd�de	j!�Z&dd�Z'e(dk�rne	�)�dS)�N)�support)�hashlib_helperzkeycert.pemzkeycert2.pemc@seZdZdd�Zdd�ZdS)�LoopbackHttpServercCs"tjj�|||�|j�d�dS)Ng�������?)�http�server�
HTTPServer�__init__�socket�
settimeout)�selfZserver_addressZRequestHandlerClass�r�?/opt/alt/python39/lib64/python3.9/test/test_urllib2_localnet.pyr!s

�zLoopbackHttpServer.__init__cCs |j��\}}|�d�||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<tj�|�d|_t��|_d|_td|�|_|jj	|_
dS)NFzHTTP/1.0)z	127.0.0.1r)�	threading�Threadr�_stop_serverZEvent�readyZprotocol_versionr�httpdZserver_port�port�r�request_handlerrrr
r9s
�z!LoopbackHttpServerThread.__init__cCsd|_|��|j��dS)NT)r�joinrZserver_close�rrrr
�stopBszLoopbackHttpServerThread.stopcCs |j��|js|j��q
dS�N)r�setrr�handle_requestrrrr
�runJs
zLoopbackHttpServerThread.runN)rrrrrr"r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�_qoprrrr
rTs
zDigestAuthHandler.__init__cCs
||_dSr)r))rZqoprrr
�set_qop[szDigestAuthHandler.set_qopcCs
||_dSr)r')rZusersrrr
�	set_users^szDigestAuthHandler.set_userscCs
||_dSr)r()rZrealmrrr
�	set_realmbszDigestAuthHandler.set_realmcCs8|jd7_t�t|j��d����}|j�|�|S)N��ascii)r%�hashlib�md5�str�encode�	hexdigestr&�append)r�noncerrr
�_generate_nonceesz!DigestAuthHandler._generate_noncecCs�|�d�}||dd�}|�d�}i}|D]P}|�d�\}}|��}|ddkrl|ddkrl|dd�}n|��}|||<q,|S)N� r-�,�=r�"���)�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}|�|�||d<||d<||d<d|}t�|�d����}d|}t�|�d����}	||d<|	|d<d	|}
t�|
�d����}||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/r0r2r3)rr@rErFrGZ
final_dictZHA1_strrHZHA2_strrIZresponse_strrJrrr
�_validate_auth|s 
�z DigestAuthHandler._validate_authcCsN|�dd�|�dd�|�dd|j|j|��f�|��|j�d�dS)	Ni�zProxy Authentication Required�Content-Type�	text/htmlzProxy-Authenticatez(Digest realm="%s", qop="%s",nonce="%s", sProxy Authentication Required.F)�
send_response�send_headerr(r)r6�end_headers�wfile�writerrrr
�_return_auth_challenge�s��z(DigestAuthHandler._return_auth_challengecCs�t|j�dkrdSd|jvr&|�|�S|�|jd�}|d|jvrT|j|d}n
|�|�S|�d�|jvrx|�|�S|j�|d�d}|j|j	fD]}|�
|||j|�r�d}q�|s�|�|�SdSdS)NrTzProxy-AuthorizationZusernamer5F)�lenr'�headersrTrD�getr&�remove�path�
short_pathrLZcommand)rrr@rEZauth_validatedrYrrr
r!�s0	

�

�
z DigestAuthHandler.handle_requestN)rrrrr*r+r,r6rDrLrTr!rrrr
r#Qsr#c@sbeZdZdZdZdZdeefZe�e�	d���
d�Zdd�Zdd	�Z
d
d�Zdd
�Zdd�ZdS)�BasicAuthHandler�testUser�testPass�Testz%s:%sr.cOs tjjj|g|�Ri|��dSr)rr�BaseHTTPRequestHandlerr)r�args�kwargsrrr
r�szBasicAuthHandler.__init__cGsdSrr�r�formatr`rrr
�log_message�szBasicAuthHandler.log_messagecCs"|�d�|�dd�|��dS)N���Content-typerN)rOrPrQrrrr
�do_HEAD�s
zBasicAuthHandler.do_HEADcCs4|�d�|�dd|j�|�dd�|��dS)Ni�zWWW-AuthenticatezBasic realm="%s"rfrN)rOrP�REALMrQrrrr
�do_AUTHHEAD�s
zBasicAuthHandler.do_AUTHHEADcCsh|j�dd�s$|��|j�d�n@|j�dd�d|jkr\|�d�|��|j�d�n|��dS)NZ
Authorization�sNo Auth header receivedzBasic resIt works)rVrWrirRrS�ENCODED_AUTHrOrQrrrr
�do_GET�s��
zBasicAuthHandler.do_GETN)rrr�USER�PASSWDrhZUSER_PASSWD�base64Z	b64encoder2�decoderkrrdrgrirlrrrr
r[�sr[c@s$eZdZdd�Zdd�Zdd�ZdS)�FakeProxyHandlercOs&||_tjjj|g|�Ri|��dSr)�digest_auth_handlerrrr_r)rrrr`rarrr
r�szFakeProxyHandler.__init__cGsdSrrrbrrr
rdszFakeProxyHandler.log_messagecCsvtj�|jd�\}}}}}}||_|j�|�rr|�dd�|�dd�|�	�|j
�td|jd��|j
�d�dS)	NrreZOKrMrNzYou've reached %s!<BR>r.sFOur apologies, but our server is down due to a sudden zombie invasion.)
�urllib�parseZurlparserYrZrrr!rOrPrQrRrS�bytes)rZscmZnetlocrY�paramsZqueryZfragmentrrr
rls��zFakeProxyHandler.do_GETN)rrrrrdrlrrrr
rq�srqcsPeZdZdZdZdZdZ�fdd�Zdd�Z�fd	d
�Z	dd�Z
d
d�Z�ZS)�BasicAuthTestsr\r]Z	Incorrectr^csTtt|���dd�}t|�|_|�|j�d|jj|_|j�	�|jj
��dS)Nc_st|i|��Sr)r[�r`rarrr
�#http_server_with_basic_auth_handler szABasicAuthTests.setUp.<locals>.http_server_with_basic_auth_handlerzhttp://127.0.0.1:%s)�superrw�setUprr�
addCleanup�stop_serverr�
server_url�startr�wait)rry��	__class__rr
r{s

zBasicAuthTests.setUpcCs|j��d|_dSr�rrrrrr
r}(s
zBasicAuthTests.stop_servercstt|���dSr)rzrw�tearDownrr�rr
r�,szBasicAuthTests.tearDowncCsztj��}|�|j|j|j|j�tj�tj�	|��z|�
tj�|j��Wn&tjj
yt|�d|j�Yn0dS)Nz!Basic auth failed for the url: %s)rsr�HTTPBasicAuthHandler�add_passwordrhr~rmrn�install_opener�build_opener�
assertTrue�urlopen�error�	HTTPError�fail�rZahrrr
�test_basic_auth_success/s
z&BasicAuthTests.test_basic_auth_successcCsRtj��}|�|j|j|j|j�tj�tj�	|��|�
tjjtjj
|j�dSr)rsrr�r�rhr~rm�INCORRECT_PASSWDr�r��assertRaisesr�r�r�r�rrr
�test_basic_auth_httperror8s
z(BasicAuthTests.test_basic_auth_httperror)
rrrrmrnr�rhr{r}r�r�r��
__classcell__rrr�r
rws	rwr0T)ZopensslcsTeZdZdZdZdZdZ�fdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Z�Z
S)�ProxyAuthTestszhttp://localhostZtesterZtest123Z	TestRealmcs�tt����dd�}��|tj���dtjd<dtjd<t��_�j�	�j
�ji��j��j
��fdd�}t|��_���j��j���jj��d�jj}tj�d	|i�}tj���_tj�|�j��_dS)
NcSstj��tj�|�dSr��os�environ�clearrK�Zold_environrrr
�restore_environJs
z-ProxyAuthTests.setUp.<locals>.restore_environrj�NO_PROXY�no_proxycst�jg|�Ri|��Sr)rqrrrxrrr
�create_fake_proxy_handlerUsz7ProxyAuthTests.setUp.<locals>.create_fake_proxy_handlerzhttp://127.0.0.1:%dr)rzr�r{r|r�r��copyr#rrr+rmrnr,rhrrr}rrr�rrsrZProxyHandlerZProxyDigestAuthHandler�proxy_digest_handlerr��opener)rr�r�Z	proxy_url�handlerr�rr
r{Gs&



�zProxyAuthTests.setUpcCs|j��d|_dSrr�rrrr
r}bs
zProxyAuthTests.stop_servercCsF|j�|j|j|j|jd�|j�d�|�t	j
j|jj
|j�dS)NZbadr$)r�r�rh�URLrmrnrrr*r�rsr�r�r��openrrrr
�-test_proxy_with_bad_password_raises_httperrorfs�
�z<ProxyAuthTests.test_proxy_with_bad_password_raises_httperrorcCs(|j�d�|�tjj|jj|j�dS�Nr$)	rrr*r�rsr�r�r�r�r�rrrr
�,test_proxy_with_no_password_raises_httperrorns

�z;ProxyAuthTests.test_proxy_with_no_password_raises_httperrorcCsb|j�|j|j|j|j�|j�d�|j�	|j��}|�
�r@q6Wd�n1sT0YdSr�)r�r�rhr�rmrnrrr*r�r��read�r�resultrrr
�test_proxy_qop_auth_worksts�z(ProxyAuthTests.test_proxy_qop_auth_workscCs�|j�|j|j|j|j�|j�d�z|j�	|j�}Wnt
jjyNYn00|�|�
�r`qVWd�n1st0YdS)Nzauth-int)r�r�rhr�rmrnrrr*r�r�rsr��URLErrorr�r�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�rmrnrhr{r}r�r�r�r�r�rrr�r
r�?sr�csG��fdd�dtjj���S)NcsBeZdZdZgZgZdZdd�Zdd�Z��fdd�Z	d	d
�Z
dS)z1GetRequestHandler.<locals>.FakeHTTPRequestHandlerz	TestHTTP/�PcSs*|��}|r&|j�|�}||d�}qdSr)�	send_headrRrS)r�bodyZdonerrr
rl�sz8GetRequestHandler.<locals>.FakeHTTPRequestHandler.do_GETcSs2|jd}|j�t|��}|��|j�|�dS)NzContent-Length)rVZrfiler��intrl�requestsr4)rZcontent_lengthZ	post_datarrr
�do_POST�s
z9GetRequestHandler.<locals>.FakeHTTPRequestHandler.do_POSTcs||j�_|j�|j���d�\}}}|�|�|D]\}}|�||d|ji�q4|rp|�dd�|�	�|S|�	�dS)Nrrrfz
text/plain)
rV�headers_receivedr�r4rY�poprOrPrrQ)rZ
response_coderVr��headerrC��FakeHTTPRequestHandler�	responsesrr
r��s
z;GetRequestHandler.<locals>.FakeHTTPRequestHandler.send_headcWsdSrr)rr`rrr
rd�sz=GetRequestHandler.<locals>.FakeHTTPRequestHandler.log_messageN)rrrZserver_versionr�r�rrlr�r�rdrr�rr
r��sr�)rrr_)r�rr�r
�GetRequestHandler�s&r�cs�eZdZ�fdd�Zd.dd�Zdd�Zd/dd	�Zd0d
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)�Zd*d+�Zd,d-�Z�ZS)1�TestUrlopencsNtt|���|�tjj�dd�}|�|tj�	��dtjd<dtjd<dS)NcSstj��tj�|�dSrr�r�rrr
r��s
z*TestUrlopen.setUp.<locals>.restore_environ�*r�r�)
rzr�r{r|rsrZ
urlcleanupr�r�r�)rr�r�rr
r{�s
zTestUrlopen.setUpNcKsxg}tjj||fi|��}zH|�|�d��|�|���|�|�d��|�|���W|��n
|��0d�	|�S)Nrei�)
rsrr��extend�	readlinesr4�readliner��closer)r�url�datara�l�frrr
r��szTestUrlopen.urlopencCs|j��d|_dSrr�rrrr
r}�s
zTestUrlopen.stop_servercCsZ|durdgdfg}t|�}t|�|_|�|j�|j��|jj��|jj}||_|S)Nres
we don't care)	r�rrr|r}rrr�r)rr�r�rrrr
�start_server�s

zTestUrlopen.start_servercKs^ttjd�s|�d�ddlm}|dur6dgdfg}t|�}||fd|i|��}|j|_|S)NZHTTPSHandlerzssl support requiredr)�make_https_serverre�
we care a bitZ
handler_class)�hasattrrsr�skipTestZtest.ssl_serversr�r�r)rr�rar�r�rrrr
�start_https_server�s
zTestUrlopen.start_https_servercCsVd}ddgdfdg|fg}|�|�}|�d|j�}|�||�|�|jddg�dS)	NsWe got here...i.)ZLocationz(http://localhost:%(port)s/somewhere_elserjre�http://localhost:%s/�/z/somewhere_else�r�r�r�assertEqualr�)r�expected_responser�r�r�rrr
�test_redirection�s��
zTestUrlopen.test_redirectioncCs@d}d}ddg|fg}|�|�}|�d|j�}|�||�dS)Nshello worldsa
hello worl
1
d
0
re)zTransfer-EncodingZchunkedr�)r�r�rr�)rr�Z
chunked_startrJr�r�rrr
�test_chunkeds�
zTestUrlopen.test_chunkedc
Cs�d}|�dg|fg�}z|�d|j�Wn8tjjyb}z|��}|��WYd}~nd}~00|�d�|�	||�|�	|j
dg�dS)NsBad bad bad...i�zhttp://localhost:%s/weeblez404 should raise URLErrorz/weeble)r�r�rrsr�r�r�r�r�r�r�)rr�r�r�r�rrr
�test_404s
zTestUrlopen.test_404cCsFd}|�dg|fg�}|�d|j�}|�||�|�|jdg�dS)N�
pycon 2008...re�http://localhost:%s/bizarre�/bizarrer��rr�r�r�rrr
�test_200"s
zTestUrlopen.test_200cCsJd}|�dg|fg�}|�d|jd�}|�||�|�|jddg�dS)Nr�rer�sget=with_feelingr�r�r�rrr
�test_200_with_parameters)s�z$TestUrlopen.test_200_with_parameterscCs8|��}tjtd�}|jd|j|d�}|�|d�dS)N�Zcafile�https://localhost:%s/bizarre��contextr�)r��ssl�create_default_context�CERT_localhostr�rr�)rr�r�r�rrr
�
test_https1szTestUrlopen.test_httpsc	Cs�|jtd�}t�dtf���|jd|jtd�}|�|d�|�t	j
j��$}|jd|jtd�Wd�n1st0Y|jtd�}|�t	j
j��$}|jd|jtd�Wd�n1s�0YWd�n1s�0YdS)N��certfilerjr�r�r�)
r�r�r�check_warnings�DeprecationWarningr�rr�r�rsr�r��CERT_fakehostname)rr�r��cmrrr
�test_https_with_cafile7s��$�z"TestUrlopen.test_https_with_cafilec	Cs�|jtd�}t�dtf��R|�tjj��$}|j	d|j
dd�Wd�n1sT0YWd�n1sr0YdS)Nr�rjr�T)Z	cadefault)r�r�rr�r�r�rsr�r�r�r)rr�r�rrr
�test_https_with_cadefaultHs�z%TestUrlopen.test_https_with_cadefaultcs�tdur|�d�tjs"|�d�d��fdd�}t�tj�}|�|�|j|td�}tjtd�}|j	d|j
|d�|��d	�dS)
Nzssl module requiredzSNI support required in OpenSSLcs|�dSrr)Zssl_sockZserver_nameZinitial_context�Zsni_namerr
�cb_sniVsz*TestUrlopen.test_https_sni.<locals>.cb_sni)r�r�r�zhttps://localhost:%sr�Z	localhost)r�r�ZHAS_SNIZ
SSLContextZPROTOCOL_TLS_SERVERZset_servername_callbackr�r�r�r�rr�)rr�r�r�rr�r
�test_https_sniPs


zTestUrlopen.test_https_snicCsd|��}tjjd|jddid�}tj�|��Wd�n1sD0Y|�|jdd�dS)Nr�ZRangezbytes=20-39�rV)r�rsr�Requestrr�r�r��rr�Zreqrrr
�test_sending_headers`s�z TestUrlopen.test_sending_headerscCsv|��}tjjd|jddid�}tj�|��Wd�n1sD0Y|�d|j���|�	d|j���dS)Nr�z
X-SoMe-hEaderZfoobarr�z
X-Some-Header)
r�rsrr�rr�ZassertInr��keysZassertNotInr�rrr
�test_sending_headers_camelhs�z&TestUrlopen.test_sending_headers_camelcCsn|��}tj�d|j��@}dD]}|�t||�d|�q |�|��d�Wd�n1s`0YdS)N�http://localhost:%s)r�r��info�geturlz3object returned from urlopen lacks the %s attributezcalling 'read' failed)r�rsrr�rr�r�r�)rr��open_url�attrrrr
�
test_basicqs�zTestUrlopen.test_basiccCsl|��}tj�d|j�}|�|��}Wd�n1s<0Y|�|tjj	d�|�
|��d�dS)Nr�zEobject returned by 'info' is not an instance of email.message.MessageZplain)r�rsrr�rr�ZassertIsInstance�email�messageZMessager�Zget_content_subtype)rr�r�Zinfo_objrrr
�	test_infoys�&�zTestUrlopen.test_infocCs\|��}tj�d|j�}|�|��}Wd�n1s<0Y|�|d|j�dS)Nr�)r�rsrr�rr�r�)rr�r�r�rrr
�test_geturl�s
&zTestUrlopen.test_geturlcCsBd}|�dg|fg�}tj�d|j�}|D]}|�||�q,dS)Nr�rer�)r�rsrr�rr�)rr�r�r��linerrr
�test_iteration�s
zTestUrlopen.test_iterationc
Cs�ddddddg}d�|�}|�dg|fg�}tj�d	|j�}t|�D]0\}}|�|||d
|t||�t|�f�qJ|�|dt|��dS)NsWe
sgot
shere
s	verylong i �
r�rer�zQFetched line number %s doesn't match expected:
    Expected length was %s, got %sr-)	rr�rsrr�r�	enumerater�rU)r�linesr�r�r��indexr�rrr
�test_line_iteration�s
��zTestUrlopen.test_line_iterationcCs�|�dgdfdgdfg�}tj��}tj�d|j�}|�d|j�|�|d�	d��|�d|j�|�d|�
d��|�|d�	d��|�d	|j�|�d
|�
d��dS)Nresanyr��1zus-ascii�1zContent-lengthZ
1234567890s
1234567890Z10)r�rsrr�r�rr�r�r�r2Z
get_header)rr�r�rrrr
�test_issue16464�s�
zTestUrlopen.test_issue16464)N)N)N)rrrr{r�r}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr�rrr�r
r��s,	




	r�cCs t��}tjtjg|�R�dSr)rZthreading_setup�unittestZaddModuleCleanupZthreading_cleanup)�thread_inforrr
�setUpModule�sr�__main__)*ror�r�Zurllib.parsersZurllib.requestZhttp.serverrrrr/�testrZtest.supportrr��ImportErrorrY�dirname�__file__�hererr�r�rrrrrr#r_r[rqZTestCaserwZrequires_hashdigestr�r�r�rr�mainrrrr
�<module>s>
y,!(M+{