
    R?g                     f   S SK Jr  S SKrS SKJr  S SKJr  S SKJr  S SK	J
r
Jr   S SKr\b  S SKJr  \R                   " \SL S5       " S	 S
\R"                  5      5       r " S S\5      r " S S\5      r " S S\5      r\R                   " \SL S5       " S S\5      5       rg! \ a    Sr Nf = f)    )md5N)utf8)AsyncHTTPTestCase)httpclient_test)ApplicationRequestHandler)CurlAsyncHTTPClientzpycurl module not presentc                       \ rS rSrS rSrg)CurlHTTPClientCommonTestCase   c                 d    [        [        SS9S9nU R                  [        U[         5      5        U$ )NF
allow_ipv6)defaults)r	   dict
assertTrue
isinstance)selfclients     C/usr/lib/python3/dist-packages/tornado/test/curl_httpclient_test.pyget_http_client,CurlHTTPClientCommonTestCase.get_http_client   s*    $de.DE
6+>?@     N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r      s    r   r   c                        \ rS rSrS rS rSrg)DigestAuthHandler   c                     Xl         X l        g Nusernamepassword)r   r&   r'   s      r   
initializeDigestAuthHandler.initialize   s      r   c           
      *   SnSnSnU R                   R                  R                  SS 5      nUGb  UR                  SS5      u  pVUS:X  d   e0 nUR                  S5       H@  nUR	                  5       R                  S	S5      u  pU
S
   S:X  a  U
S   S:X  a  U
SS n
XU	'   MB     US   U:X  d   eUS   U:X  d   eUS   U:X  d   eUS   U R
                  :X  d   eUS   U R                   R                  :X  d   e[        [        U R
                  < SU< SU R                  < 35      5      R                  5       n[        [        U R                   R                  < SU R                   R                  < 35      5      R                  5       n[        [        U< SU< SU< 35      5      R                  5       nXS   :X  a  U R                  S5        g U R                  S5        g U R                  S5        U R                  SSU< SU< SU< S35        g )Ntestasdf1234Authorization    Digest,=r   "realmopaquenoncer&   uri:responseokfaili  zWWW-AuthenticatezDigest realm="z
", nonce="z", opaque=")requestheadersgetsplitstripr&   pathr   r   r'   	hexdigestmethodwrite
set_status
set_header)r   r6   r7   r8   auth_header	auth_modeparams
param_dictpairkvh1h2digests                 r   r@   DigestAuthHandler.get!   s   ll**..E" + 1 1#q 9I(((JS)zz|))#q1Q43;1R5C<!BA !1	 *
 g&%///h'6111g&%///j)T]]:::e$(9(99994==%GHik   3 3T\\5F5FGHik  Br:;<FFHFJ//

4 

6"OOC OO"@EufUr   )r'   r&   N)r   r   r   r   r(   r@   r   r   r   r   r!   r!      s    !%r   r!   c                       \ rS rSrS rSrg)CustomReasonHandlerI   c                 (    U R                  SS5        g )N   Custom reasonrG   r   s    r   r@   CustomReasonHandler.getJ       _-r   r   Nr   r   r   r   r@   r   r   r   r   rU   rU   I       .r   rU   c                       \ rS rSrS rSrg)CustomFailReasonHandlerN   c                 (    U R                  SS5        g )Ni  rY   rZ   r[   s    r   r@   CustomFailReasonHandler.getO   r]   r   r   Nr^   r   r   r   ra   ra   N   r_   r   ra   c                   L   ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	rU =r$ )
CurlHTTPClientTestCaseS   c                 L   > [         TU ]  5         U R                  5       U l        g r$   )supersetUpcreate_clienthttp_client)r   	__class__s    r   rj   CurlHTTPClientTestCase.setUpU   s    --/r   c                 `    [        S[        SSS.4S[        SSS.4S[        4S[        4/5      $ )	N/digestfoobarr%   /digest_non_ascii   barユ£/custom_reason/custom_fail_reason)r   r!   rU   ra   r[   s    r   get_appCurlHTTPClientTestCase.get_appY   sK    -Eu/UV'%!&J?
 "#67&(?@	
 	
r   c                 ,    [        SS[        SS9S.UD6$ )NTFr   )force_instancer   r   )r	   r   )r   kwargss     r   rk   $CurlHTTPClientTestCase.create_clientg   s&    " 
$%*@
DJ
 	
r   c                 `    U R                  SSSSS9nU R                  UR                  S5        g )Nrp   rR   rq   rr   rJ   auth_usernameauth_password   okfetchassertEqualbodyr   r;   s     r   test_digest_auth'CurlHTTPClientTestCase.test_digest_authl   s4    ::e  
 	.r   c                 ^    U R                  S5      nU R                  UR                  S5        g )Nru   rY   )r   r   reasonr   s     r   test_custom_reason)CurlHTTPClientTestCase.test_custom_reasonr   s%    ::.//:r   c                 p    U R                  S5      nU R                  [        UR                  5      S5        g )Nrv   zHTTP 400: Custom reason)r   r   strerrorr   s     r   test_fail_custom_reason.CurlHTTPClientTestCase.test_fail_custom_reasonv   s+    ::34X^^,.GHr   c                 `    U R                  SSSSS9nU R                  UR                  S5        g )Nrs   rR   rq   rt   r~   r   r   r   s     r   test_digest_auth_non_ascii1CurlHTTPClientTestCase.test_digest_auth_non_asciiz   s7    ::$	  
 	.r   )rl   )r   r   r   r   rj   rw   rk   r   r   r   r   r   __classcell__)rm   s   @r   rf   rf   S   s,    0


/;I/ /r   rf   )hashlibr   unittesttornado.escaper   tornado.testingr   tornado.testr   tornado.webr   r   pycurlImportErrortornado.curl_httpclientr	   skipIfHTTPClientCommonTestCaser   r!   rU   ra   rf   r   r   r   <module>r      s       - ( 3 
; 
4!<=?#K#K  >* *Z.. .
.n .
 
4!<=-/. -/ >-/Q  Fs   B% %B0/B0