ó
¨œž[c           @` s²  d  d l  m Z m Z m Z d  d l m Z d  d l m Z d  d l m	 Z	 m
 Z
 d  d l m Z d  d l m Z d  d l m Z m Z d  d l m Z d  d	 l m Z m Z d  d
 l m Z m Z y d  d l Z Wn e k
 rí d Z n Xe d k	 rd  d l m Z n  e j e d k d ƒ d e j  f d „  ƒ  Yƒ Z! d e f d „  ƒ  YZ" d e f d „  ƒ  YZ# d e f d „  ƒ  YZ$ e j e d k d ƒ d e f d „  ƒ  Yƒ Z% d S(   i    (   t   absolute_importt   divisiont   print_function(   t   md5(   t   utf8(   t   HTTPRequestt   HTTPClientError(   t   Event(   t   ExceptionStackContext(   t   AsyncHTTPTestCaset   gen_test(   t   httpclient_test(   t   unittestt   ignore_deprecation(   t   Applicationt   RequestHandlerN(   t   CurlAsyncHTTPClients   pycurl module not presentt   CurlHTTPClientCommonTestCasec           B` s   e  Z d  „  Z RS(   c         C` s2   t  d t d t ƒ ƒ } |  j t | t  ƒ ƒ | S(   Nt   defaultst
   allow_ipv6(   R   t   dictt   Falset
   assertTruet
   isinstance(   t   selft   client(    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyt   get_http_client   s    (   t   __name__t
   __module__R   (    (    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyR      s   t   DigestAuthHandlerc           B` s   e  Z d  „  Z d „  Z RS(   c         C` s   | |  _  | |  _ d  S(   N(   t   usernamet   password(   R   R   R   (    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyt
   initialize#   s    	c         C` s+  d } d } d } |  j  j j d d  ƒ } | d  k	 rý| j d d ƒ \ } } | d k s` t ‚ i  } xo | j d ƒ D]^ } | j ƒ  j d	 d ƒ \ }	 }
 |
 d
 d k rÊ |
 d d k rÊ |
 d d !}
 n  |
 | |	 <qv W| d | k sî t ‚ | d | k st ‚ | d | k st ‚ | d |  j k s3t ‚ | d |  j  j k sOt ‚ t	 t
 d |  j | |  j f ƒ ƒ j ƒ  } t	 t
 d |  j  j |  j  j f ƒ ƒ j ƒ  } t	 t
 d | | | f ƒ ƒ j ƒ  } | | d k rí|  j d ƒ q'|  j d ƒ n* |  j d ƒ |  j d d | | | f ƒ d  S(   Nt   testt   asdft   1234t   Authorizationt    i   t   Digestt   ,t   =i    t   "iÿÿÿÿt   realmt   opaquet   nonceR   t   uris   %s:%s:%ss   %s:%st   responset   okt   faili‘  s   WWW-Authenticates*   Digest realm="%s", nonce="%s", opaque="%s"(   t   requestt   headerst   gett   Nonet   splitt   AssertionErrort   stripR   t   pathR   R   R   t	   hexdigestt   methodt   writet
   set_statust
   set_header(   R   R*   R+   R,   t   auth_headert	   auth_modet   paramst
   param_dictt   pairt   kt   vt   h1t   h2t   digest(    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyR3   '   s:     +%	(   R   R   R    R3   (    (    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyR   "   s   	t   CustomReasonHandlerc           B` s   e  Z d  „  Z RS(   c         C` s   |  j  d d ƒ d  S(   NiÈ   s   Custom reason(   R<   (   R   (    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyR3   L   s    (   R   R   R3   (    (    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyRH   K   s   t   CustomFailReasonHandlerc           B` s   e  Z d  „  Z RS(   c         C` s   |  j  d d ƒ d  S(   Ni  s   Custom reason(   R<   (   R   (    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyR3   Q   s    (   R   R   R3   (    (    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyRI   P   s   t   CurlHTTPClientTestCasec           B` s_   e  Z d  „  Z d „  Z d „  Z e d „  ƒ Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z RS(	   c         C` s&   t  t |  ƒ j ƒ  |  j ƒ  |  _ d  S(   N(   t   superRJ   t   setUpt   create_clientt   http_client(   R   (    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyRL   W   s    c         C` sP   t  d t i d d 6d d 6f d t i d d 6d d 6f d t f d	 t f g ƒ S(
   Ns   /digestt   fooR   t   barR   s   /digest_non_asciis   barãƒ¦Â£s   /custom_reasons   /custom_fail_reason(   R   R   RH   RI   (   R   (    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyt   get_app[   s
    	c         K` s   t  d t d t d t ƒ |  S(   Nt   force_instanceR   R   (   R   t   TrueR   R   (   R   t   kwargs(    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyRM   c   s    c         #` s±   g  ‰ t  ƒ  ‰  ‡  ‡ f d †  } t ƒ  6 t | ƒ # t |  j d ƒ d d „  ƒ} Wd  QXWd  QXˆ  j ƒ  |  j j | ƒ g V|  j d t	 ˆ ƒ ƒ |  j
 ˆ d d t ƒ d  S(   Nc         ` s$   ˆ j  |  | | f ƒ ˆ  j ƒ  t S(   N(   t   appendt   setRS   (   t   typt   valuet   tb(   t   error_eventt   exc_info(    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyt   error_handlerm   s    
s   /custom_reasont   prepare_curl_callbackc         S` s   d d S(   Ni   i    (    (   t   curl(    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyt   <lambda>u   s    i   i    (   R   R   R   R   t   get_urlt   waitRN   t   fetcht   assertEqualt   lent   assertIst   ZeroDivisionError(   R   R\   R1   (    (   RZ   R[   s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyt(   test_prepare_curl_callback_stack_contexth   s    	
c         C` s8   |  j  d d d d d d d ƒ} |  j | j d ƒ d  S(	   Ns   /digestR?   RG   t   auth_usernameRO   t   auth_passwordRP   R/   (   Rb   Rc   t   body(   R   R.   (    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyt   test_digest_authz   s    c         C` s&   |  j  d ƒ } |  j | j d ƒ d  S(   Ns   /custom_reasons   Custom reason(   Rb   Rc   t   reason(   R   R.   (    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyt   test_custom_reason   s    c         C` s,   |  j  d ƒ } |  j t | j ƒ d ƒ d  S(   Ns   /custom_fail_reasons   HTTP 400: Custom reason(   Rb   Rc   t   strt   error(   R   R.   (    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyt   test_fail_custom_reasonƒ   s    c      
   C` s“   |  j  d d ƒ |  _ xw t d ƒ D]i } t ƒ   |  j d ƒ } Wd  QX|  j | j d  ƒ |  j t	 t
 f ƒ  |  j d d t ƒ} Wd  QXq" Wd  S(   Nt   max_clientsi   i   u   /ãƒ¦ãƒ‹ã‚³ãƒ¼ãƒ‰t   raise_error(   RM   RN   t   rangeR   Rb   t   assertIsNotRo   R4   t   assertRaisest   UnicodeEncodeErrorR   RS   (   R   t   iR.   (    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyt   test_failed_setup‡   s    
c         C` s8   |  j  d d d d d d d ƒ} |  j | j d ƒ d  S(	   Ns   /digest_non_asciiR?   RG   Rh   RO   Ri   s   barãƒ¦Â£R/   (   Rb   Rc   Rj   (   R   R.   (    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyt   test_digest_auth_non_ascii–   s    (   R   R   RL   RQ   RM   R
   Rg   Rk   Rm   Rp   Rx   Ry   (    (    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyRJ   U   s   							(&   t
   __future__R    R   R   t   hashlibR   t   tornado.escapeR   t   tornado.httpclientR   R   t   tornado.locksR   t   tornado.stack_contextR   t   tornado.testingR	   R
   t   tornado.testR   t   tornado.test.utilR   R   t   tornado.webR   R   t   pycurlt   ImportErrorR4   t   tornado.curl_httpclientR   t   skipIft   HTTPClientCommonTestCaseR   R   RH   RI   RJ   (    (    (    s@   lib/python2.7/site-packages/tornado/test/curl_httpclient_test.pyt   <module>   s,   
)