o
    Qœ_Ï  ã                   @   sö   d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
mZ zd dlZW n ey5   dZY nw edur@d dlmZ e edu d¡G d	d
„ d
ejƒƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZe edu d¡G dd„ deƒƒZdS )é    )Úmd5N)Úutf8)ÚAsyncHTTPTestCase)Úhttpclient_test)ÚApplicationÚRequestHandler)ÚCurlAsyncHTTPClientzpycurl module not presentc                   @   ó   e Zd Zdd„ ZdS )ÚCurlHTTPClientCommonTestCasec                 C   s$   t tdd�d�}|  t|t ƒ¡ |S )NF©Ú
allow_ipv6)Údefaults)r   ÚdictÚ
assertTrueÚ
isinstance)ÚselfÚclient© r   úC/usr/lib/python3/dist-packages/tornado/test/curl_httpclient_test.pyÚget_http_client   s   z,CurlHTTPClientCommonTestCase.get_http_clientN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r
      s    r
   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚDigestAuthHandlerc                 C   s   || _ || _d S ©N©ÚusernameÚpassword)r   r   r   r   r   r   Ú
initialize   s   
zDigestAuthHandler.initializec                 C   sŽ  d}d}d}| j j dd ¡}|d urµ| dd¡\}}|dks J ‚i }| d¡D ]"}| ¡  d	d¡\}	}
|
d
 dkrE|
d dkrE|
dd… }
|
||	< q'|d |ksRJ ‚|d |ksZJ ‚|d |ksbJ ‚|d | jkskJ ‚|d | j jksuJ ‚ttd| j|| j	f ƒƒ 
¡ }ttd| j j| j jf ƒƒ 
¡ }ttd|||f ƒƒ 
¡ }||d kr®|  d¡ d S |  d¡ d S |  d¡ |  dd|||f ¡ d S )NÚtestÚasdfÚ1234ÚAuthorizationú é   ÚDigestú,ú=r   ú"éÿÿÿÿÚrealmÚopaqueÚnoncer   Úuriz%s:%s:%sz%s:%sÚresponseÚokÚfaili‘  zWWW-Authenticatez*Digest realm="%s", nonce="%s", opaque="%s")ÚrequestÚheadersÚgetÚsplitÚstripr   Úpathr   r   r   Ú	hexdigestÚmethodÚwriteÚ
set_statusÚ
set_header)r   r*   r+   r,   Úauth_headerÚ	auth_modeÚparamsÚ
param_dictÚpairÚkÚvÚh1Úh2Údigestr   r   r   r3   !   sJ   
ÿþÿþ
þzDigestAuthHandler.getN)r   r   r   r   r3   r   r   r   r   r      s    r   c                   @   r	   )ÚCustomReasonHandlerc                 C   ó   |   dd¡ d S )NéÈ   úCustom reason©r:   ©r   r   r   r   r3   J   ó   zCustomReasonHandler.getN©r   r   r   r3   r   r   r   r   rF   I   ó    rF   c                   @   r	   )ÚCustomFailReasonHandlerc                 C   rG   )Ni�  rI   rJ   rK   r   r   r   r3   O   rL   zCustomFailReasonHandler.getNrM   r   r   r   r   rO   N   rN   rO   c                       sL   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	‡  Z
S )ÚCurlHTTPClientTestCasec                    s   t ƒ  ¡  |  ¡ | _d S r   )ÚsuperÚsetUpÚcreate_clientÚhttp_clientrK   ©Ú	__class__r   r   rR   U   s   
zCurlHTTPClientTestCase.setUpc                 C   s0   t dtdddœfdtdddœfdtfdtfgƒS )	Nú/digestÚfooÚbarr   ú/digest_non_asciiõ   barãƒ¦Â£ú/custom_reasonú/custom_fail_reason)r   r   rF   rO   rK   r   r   r   Úget_appY   s   ýøÿzCurlHTTPClientTestCase.get_appc                 K   s   t ddtdd�dœ|¤ŽS )NTFr   )Úforce_instancer   r   )r   r   )r   Úkwargsr   r   r   rS   g   s
   
ÿÿz$CurlHTTPClientTestCase.create_clientc                 C   ó$   | j ddddd�}|  |jd¡ d S )NrW   rE   rX   rY   ©r=   Úauth_usernameÚauth_passwordó   ok©ÚfetchÚassertEqualÚbody©r   r.   r   r   r   Útest_digest_authl   s   ÿz'CurlHTTPClientTestCase.test_digest_authc                 C   s   |   d¡}|  |jd¡ d S )Nr\   rI   )rg   rh   Úreasonrj   r   r   r   Útest_custom_reasonr   s   
z)CurlHTTPClientTestCase.test_custom_reasonc                 C   s    |   d¡}|  t|jƒd¡ d S )Nr]   zHTTP 400: Custom reason)rg   rh   ÚstrÚerrorrj   r   r   r   Útest_fail_custom_reasonv   s   
z.CurlHTTPClientTestCase.test_fail_custom_reasonc                 C   ra   )NrZ   rE   rX   r[   rb   re   rf   rj   r   r   r   Útest_digest_auth_non_asciiz   s   üz1CurlHTTPClientTestCase.test_digest_auth_non_ascii)r   r   r   rR   r^   rS   rk   rm   rp   rq   Ú__classcell__r   r   rU   r   rP   S   s    rP   )Úhashlibr   ÚunittestÚtornado.escaper   Útornado.testingr   Útornado.testr   Útornado.webr   r   ÚpycurlÚImportErrorÚtornado.curl_httpclientr   ÚskipIfÚHTTPClientCommonTestCaser
   r   rF   rO   rP   r   r   r   r   Ú<module>   s(    ÿ-