
[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
 m Z m Z m Z m Z d  d l m Z d  d l m Z d  d l m Z d  d l 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# m$ Z$ m% Z% d  d l& m' Z' m( Z( m) Z) m* Z* d  d l+ m, Z, m- Z- m. Z. m/ Z/ d  d l0 m1 Z1 m2 Z2 m3 Z3 m4 Z5 m6 Z6 m7 Z7 m8 Z8 m9 Z9 m: Z: m; Z; m< Z< m= Z= m> Z> m? Z? m@ Z@ mA ZA mB ZB mC ZC mD ZD mE ZE d  d lF ZF d  d lG ZG d  d lH ZH d  d lI ZI d  d lJ ZK d  d lL ZL d  d lM mN ZN d  d lO ZO d  d lP ZP d  d lQ ZQ d  d lR ZR d  d lS ZS e/ rd  d lT jU ZV n d  d lW ZV g  ZX d   ZY d   ZZ d e" f d     YZ[ d e[ f d     YZ\ d e2 f d     YZ] d e2 f d     YZ^ d e' j_ f d     YZ` d  e' j_ f d!     YZa d" e[ f d#     YZb d$ e[ f d%     YZc d& e2 f d'     YZd d( e[ f d)     YZe d* e2 f d+     YZf d, e[ f d-     YZg d. e2 f d/     YZh d0 e[ f d1     YZi d2 e2 f d3     YZj d4 e2 f d5     YZk d6 e2 f d7     YZl d8 e2 f d9     YZm d: e2 f d;     YZn d< e2 f d=     YZo d> e2 f d?     YZp d@ e2 f dA     YZ4 dB e2 f dC     YZq dD e2 f dE     YZr dF e2 f dG     YZs dH e2 f dI     YZt eZ dJ e[ f dK     Y Zu dL e[ f dM     YZv eZ dN e[ f dO     Y Zw eZ dP e[ f dQ     Y Zx eZ dR e[ f dS     Y Zy eZ dT e[ f dU     Y Zz eZ dV e[ f dW     Y Z{ eZ dX e[ f dY     Y Z| eZ dZ e[ f d[     Y Z} eZ d\ e[ f d]     Y Z~ eZ d^ e\ f d_     Y Z d` e\ f da     YZ eZ db e\ f dc     Y Z eZ dd e\ f de     Y Z eZ df e\ f dg     Y Z eZ dh e\ f di     Y Z eZ dj e[ f dk     Y Z eZ dl e\ f dm     Y Z eZ dn e[ f do     Y Z eZ dp e\ f dq     Y Z dr e f ds     YZ eZ dt e\ f du     Y Z eZ dv e\ f dw     Y Z eZ dx e\ f dy     Y Z eZ dz e\ f d{     Y Z d| e\ f d}     YZ eZ d~ e\ f d     Y Z eZ d e[ f d     Y Z eZ d e\ f d     Y Z d e\ f d     YZ eZ d e\ f d     Y Z d e\ f d     YZ eZ d e\ f d     Y Z eZ d e[ f d     Y Z eZ d e[ f d     Y Z eZ d e[ f d     Y Z eZ d e[ f d     Y Z d e[ f d     YZ eB d e2 f d     Y Z d e f d     YZ d e e[ f d     YZ e( d e e[ f d     Y Z eZ d e\ f d     Y Z d e\ f d     YZ d e' j_ f d     YZ eZ d e\ f d     Y Z eZ d e\ f d     Y Z eZ d e\ f d     Y Z eZ d e[ f d     Y Z eZ d e[ f d     Y Z eZ d e\ f d     Y Z d e' j_ f d     YZ d e# f d     YZ d e' j_ f d     YZ d e[ f d     YZ d S(   i    (   t   absolute_importt   divisiont   print_function(   t   Future(   t   gen(   t   json_decodet   utf8t
   to_unicodet   recursive_unicodet
   native_strt   to_basestring(   t   HTTPClientError(   t   format_timestamp(   t   IOLoop(   t   IOStream(   t   locale(   t   Event(   t   app_logt   gen_log(   t   SimpleAsyncHTTPClient(   t
   DictLoader(   t   AsyncHTTPTestCaset   AsyncTestCaset	   ExpectLogt   gen_test(   t   unittestt   skipBefore35t	   exec_testt   ignore_deprecation(   t
   ObjectDictt   unicode_typet   timedelta_to_secondst   PY3(   t   Applicationt   RequestHandlert   StaticFileHandlert   RedirectHandlert	   HTTPErrort   MissingArgumentErrort   ErrorHandlert   authenticatedt   asynchronoust   urlt   _create_signature_v1t   create_signed_valuet   decode_signed_valuet   get_signature_key_versiont   UIModulet   Finisht   stream_request_bodyt   removeslasht   addslasht   GZipContentEncodingN(   t   BytesIOc          G` s   t  j j t  j j t  |   S(   N(   t   ost   patht   joint   dirnamet   __file__(   t   a(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   relpath.   s    c         C` s   t  j |   |  S(   N(   t   wsgi_safe_testst   append(   t   cls(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt	   wsgi_safe2   s    t   WebTestCasec           B` s)   e  Z d  Z d   Z d   Z d   Z RS(   s   Base class for web tests that also supports WSGI mode.

    Override get_handlers and get_app_kwargs instead of get_app.
    Append to wsgi_safe to have it run in wsgi_test as well.
    c         C` s%   t  |  j   |  j    |  _ |  j S(   N(   R!   t   get_handlerst   get_app_kwargst   app(   t   self(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   get_app=   s    c         C` s   t     d  S(   N(   t   NotImplementedError(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB   A   s    c         C` s   i  S(   N(    (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRC   D   s    (   t   __name__t
   __module__t   __doc__RF   RB   RC   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRA   7   s   		t   SimpleHandlerTestCasec           B` s   e  Z d  Z d   Z RS(   s   Simplified base class for tests that work with a single handler class.

    To use, define a nested class named ``Handler``.
    c         C` s   d |  j  f g S(   Nt   /(   t   Handler(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB   M   s    (   RH   RI   RJ   RB   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRK   H   s   t   HelloHandlerc           B` s   e  Z d    Z RS(   c         C` s   |  j  d  d  S(   Nt   hello(   t   write(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   getR   s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRN   Q   s   t   CookieTestRequestHandlerc           B` s,   e  Z d  d d  Z d   Z d d  Z RS(   t
   0123456789c         C` sX   i  |  _  | d  k r3 t d t d |   |  _ n! t d t d | d |   |  _ d  S(   Nt   settingst   cookie_secrett   key_version(   t   _cookiest   NoneR   t   dictt   application(   RE   RU   RV   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   __init__X   s
    	c         C` s   |  j  j |  S(   N(   RW   RQ   (   RE   t   name(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt
   get_cookiea   s    c         C` s   | |  j  | <d  S(   N(   RW   (   RE   R\   t   valuet   expires_days(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt
   set_cookied   s    N(   RH   RI   RX   R[   R]   R`   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRR   V   s   		t   SecureCookieV1Testc           B` s#   e  Z d    Z d   Z d   Z RS(   c         C` sB   t    } | j d d d d |  j | j d d d d  d  S(   Nt   foot   bart   versioni   t   min_version(   RR   t   set_secure_cookiet   assertEqualt   get_secure_cookie(   RE   t   handler(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_round_tripj   s    	c      	   C` s-  t    } | j d t j d  d d | j d } t j d |  } |  j |  | j d  } | j d  } |  j	 t
 | j j d d d |  |  |  j	 t
 | j j d d d	 d
 |  |  t d t |  t |  f  | j d <t t d  ' |  j | j d d d d  k  Wd  QXd  S(   NRb   t   d76df8e7aefcRd   i   s   12345678\|([0-9]+)\|([0-9a-f]+)i   RU   t   12345678t   1234t   5678s   1234|5678%s|%ss   Cookie timestamp in futureRe   (   RR   Rf   t   binasciit   a2b_hexRW   t   ret   matcht
   assertTruet   groupRg   R+   RZ   RT   R   R
   R   R   Rh   RX   (   RE   Ri   t   cookieRr   t	   timestampt   sig(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt&   test_cookie_tampering_future_timestampp   s*    	#c         C` sB   t    } | j d d d d |  j | j d d d d  d  S(   NRb   s   Rd   i   Re   (   RR   Rf   Rg   Rh   (   RE   Ri   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_arbitrary_bytes   s    	(   RH   RI   Rj   Rx   Ry   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRa   i   s   		t   SecureCookieV2Testc           B` sI   e  Z i d  d 6d d 6Z d   Z d   Z d   Z d   Z d   Z RS(	   t   ajklasdf0ojaisdfi    t   aslkjasaolwkjsdfi   c         C` sB   t    } | j d d d d |  j | j d d d d  d  S(   NRb   Rc   Rd   i   Re   (   RR   Rf   Rg   Rh   (   RE   Ri   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRj      s    	c         C` sE   t  d |  j d d  } | j d d  |  j | j d  d  d  S(   NRU   RV   i    Rb   Rc   (   RR   t   KEY_VERSIONSRf   Rg   Rh   (   RE   Ri   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_key_version_roundtrip   s    	c         C` sE   t  d |  j d d  } | j d d  |  j | j d  d  d  S(   NRU   RV   i   Rb   Rc   (   RR   R}   Rf   Rg   Rh   (   RE   Ri   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt,   test_key_version_roundtrip_differing_version   s    	c         C` si   t  d |  j d d  } | j d d  t  d |  j d d  } | j | _ |  j | j d  d  d  S(   NRU   RV   i    Rb   Rc   i   (   RR   R}   Rf   RW   Rg   Rh   (   RE   Ri   t   new_handler(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt"   test_key_version_increment_version   s    		c         C` s   t  d |  j d d  } | j d d  |  j j   } | j d  t  d | d d  } | j | _ |  j | j d  d   d  S(   NRU   RV   i    Rb   Rc   i   (	   RR   R}   Rf   t   copyt   popRW   Rg   Rh   RX   (   RE   Ri   t   new_key_versionsR   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt#   test_key_version_invalidate_version   s    		(   RH   RI   R}   Rj   R~   R   R   R   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRz      s   
					t   FinalReturnTestc           B` s,   e  Z d    Z d   Z d   Z d   Z RS(   c         ` sT   |    d t  f   f d     Y} d t  f   f d     Y} d | f d | f g S(   Nt   FinishHandlerc           ` s    e  Z e j   f d     Z RS(   c         3` s   |  j      _   j Vd  S(   N(   t   finisht   final_return(   RE   (   t   test(    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ      s    (   RH   RI   R   t	   coroutineRQ   (    (   R   (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR      s   t   RenderHandlerc           ` s)   e  Z d    Z e j   f d    Z RS(   c         S` s   t  i d d 6 S(   Nt   his   foo.html(   R   (   RE   R7   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   create_template_loader   s    c         ` s   |  j  d    _ d  S(   Ns   foo.html(   t   renderR   (   RE   (   R   (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ      s    (   RH   RI   R   R   R   RQ   (    (   R   (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR      s   	s   /finishs   /render(   R"   (   RE   R   R   (    (   R   s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB      s
    	c         C` s   t  d d  S(   Nt   template_pathR   (   RY   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRC      s    c         C` sX   |  j  |  j d   } |  j | j d  |  j |  j t  |  j |  j j    d  S(   Ns   /finishi   (	   t   fetcht   get_urlRg   t   codet   assertIsInstanceR   R   Rs   t   done(   RE   t   response(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt    test_finish_method_return_future   s    c         C` sB   |  j  |  j d   } |  j | j d  |  j |  j t  d  S(   Ns   /renderi   (   R   R   Rg   R   R   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt    test_render_method_return_future   s    (   RH   RI   RB   RC   R   R   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR      s   			t
   CookieTestc           B` sY   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 RS(	   c   	   	   C` s   d t  f d     Y} d t  f d     Y} d t  f d     Y} d t  f d     Y} d	 t  f d
     Y} d t  f d     Y} d t  f d     Y} d t  f d     Y} d | f d | f d | f d | f d | f d | f d | f d | f g S(   Nt   SetCookieHandlerc           B` s   e  Z d    Z RS(   c         S` s4   |  j  d d  |  j  d d  |  j  d d  d  S(   Nt   strt   asdft   unicodeu   qwert   bytest   zxcv(   R`   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ      s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR      s   t   GetCookieHandlerc           B` s   e  Z d    Z RS(   c         S` s   |  j  |  j d d   d  S(   NRb   t   default(   RP   R]   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ      s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR      s   t   SetCookieDomainHandlerc           B` s   e  Z d    Z RS(   c         S` s    |  j  d d d d d d d  S(   Nt   unicode_argst   blaht   domainu   foo.comR7   u   /foo(   R`   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ      s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR      s   t   SetCookieSpecialCharHandlerc           B` s   e  Z d    Z RS(   c         S` s4   |  j  d d  |  j  d d  |  j  d d  d  S(   Nt   equalss   a=bt	   semicolons   a;bt   quotes   a"b(   R`   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ      s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR      s   t   SetCookieOverwriteHandlerc           B` s   e  Z d    Z RS(   c         S` s@   |  j  d d d d |  j  d d d d |  j  d d  d  S(   NR;   t   bR   s   example.comt   ct   dt   e(   R`   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR     s   t   SetCookieMaxAgeHandlerc           B` s   e  Z d    Z RS(   c         S` s   |  j  d d d d d  S(   NRb   Rc   t   max_agei
   (   R`   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   
  s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR   	  s   t   SetCookieExpiresDaysHandlerc           B` s   e  Z d    Z RS(   c         S` s   |  j  d d d d d  S(   NRb   Rc   R_   i
   (   R`   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR     s   t   SetCookieFalsyFlagsc           B` s   e  Z d    Z RS(   c         S` s\   |  j  d d d t |  j  d d d t |  j  d d d t |  j  d d d t d  S(   NR;   t   1t   secureR   R   t   httponlyR   (   R`   t   Truet   False(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR     s   s   /sets   /gets   /set_domains   /special_chars   /set_overwrites   /set_max_ages   /set_expires_dayss   /set_falsy_flags(   R"   (	   RE   R   R   R   R   R   R   R   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB      s     							c         C` s>   |  j  d  } |  j t | j j d   d d d g  d  S(   Ns   /sets
   Set-Cookies   bytes=zxcv; Path=/s   str=asdf; Path=/s   unicode=qwer; Path=/(   R   Rg   t   sortedt   headerst   get_list(   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_set_cookie"  s
    c         C` s   |  j  d d i d d 6} |  j | j d  |  j  d d i d d 6} |  j | j d  |  j  d d i d d 6} |  j | j d  d  S(	   Ns   /getR   s   foo=bart   CookieRc   s	   foo="bar"s   /=exception;R   (   R   Rg   t   body(   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_get_cookie*  s    c         C` s2   |  j  d  } |  j | j j d  d g  d  S(   Ns   /set_domains
   Set-Cookies,   unicode_args=blah; Domain=foo.com; Path=/foo(   R   Rg   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_set_cookie_domain4  s    c         C` s   |  j  d  } t | j j d   } |  j t |  d  |  j | d d  |  j | d d  |  j | d d k | d  d d d d d d  g } xY | D]Q \ } } t j d |  |  j  d d i | d 6} |  j | j	 t
 |   q Wd  S(!   Ns   /special_chars
   Set-Cookiei   i    s   equals="a=b"; Path=/i   s   quote="a\"b"; Path=/i   s   semicolon="a;b"; Path=/s   semicolon="a\073b"; Path=/s   foo=a=bs   a=bs	   foo="a=b"s	   foo="a;b"s   "as
   foo=a\073bs   a\073bs   foo="a\073b"s   a;bs
   foo="a\"b"s   a"bs	   trying %rs   /getR   R   (   s   semicolon="a;b"; Path=/s   semicolon="a\073b"; Path=/(   s   foo=a=bs   a=b(   s	   foo="a=b"s   a=b(   s	   foo="a;b"s   "a(   s
   foo=a\073bs   a\073b(   s   foo="a\073b"s   a;b(   s
   foo="a\"b"s   a"b(   R   R   R   R   Rg   t   lenRs   t   loggingt   debugR   R   (   RE   R   R   t   datat   headert   expected(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_cookie_special_char9  s$    	c         C` sA   |  j  d  } | j j d  } |  j t |  d d g  d  S(   Ns   /set_overwrites
   Set-Cookies   a=e; Path=/s   c=d; Domain=example.com; Path=/(   R   R   R   Rg   R   (   RE   R   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_set_cookie_overwriteP  s    c         C` s>   |  j  d  } | j j d  } |  j t |  d g  d  S(   Ns   /set_max_ages
   Set-Cookies   foo=bar; Max-Age=10; Path=/(   R   R   R   Rg   R   (   RE   R   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_set_cookie_max_ageV  s    c         C` s   |  j  d  } | j j d  } t j d |  } |  j |  t j j   t j d d  } t j t	 j
 j | j   d  d    } |  j t t | |   d k   d  S(   Ns   /set_expires_dayss
   Set-Cookies(   foo=bar; expires=(?P<expires>.+); Path=/t   daysi
   t   expiresi   (   R   R   RQ   Rq   Rr   t   assertIsNotNonet   datetimet   utcnowt	   timedeltat   emailt   utilst	   parsedatet	   groupdictRs   t   absR   (   RE   R   R   Rr   R   t   header_expires(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_set_cookie_expires_days\  s    #c         C` s   |  j  d  } t | j j d   } |  j | d j   d  |  j | d j   d  |  j | d j   d  |  j | d	 j   d
  d  S(   Ns   /set_falsy_flagss
   Set-Cookiei    s   a=1; path=/; securei   s   b=1; path=/i   s   c=1; httponly; path=/i   s   d=1; path=/(   R   R   R   R   Rg   t   lower(   RE   R   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_set_cookie_false_flagsg  s    (   RH   RI   RB   R   R   R   R   R   R   R   R   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR      s   	;		
					t   AuthRedirectRequestHandlerc           B` s)   e  Z d    Z d   Z e d    Z RS(   c         C` s   | |  _  d  S(   N(   t	   login_url(   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt
   initializes  s    c         C` s   |  j  S(   N(   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   get_login_urlv  s    c         C` s   |  j  d  d  S(   Ni  (   t
   send_error(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   y  s    (   RH   RI   R   R   R(   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR   r  s   		t   AuthRedirectTestc           B` s#   e  Z d    Z d   Z d   Z RS(   c         C` s.   d t  t d d  f d t  t d d  f g S(   Ns	   /relativeR   s   /logins	   /absolutes   http://example.com/login(   R   RY   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB     s    c         C` sL   |  j  |  j d  d t } |  j | j d  |  j | j d d  d  S(   Ns	   /relativet   follow_redirectsi.  t   Locations   /login?next=%2Frelative(   R   R   R   Rg   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_relative_auth_redirect  s    	c         C` s_   |  j  |  j d  d t } |  j | j d  |  j t j d | j d  | j d  d  S(   Ns	   /absoluteR   i.  sI   http://example.com/login\?next=http%3A%2F%2F127.0.0.1%3A[0-9]+%2FabsoluteR   (	   R   R   R   Rg   R   Rs   Rq   Rr   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_absolute_auth_redirect  s    	(   RH   RI   RB   R   R   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR     s   		t   ConnectionCloseHandlerc           B` s,   e  Z d    Z e j d    Z d   Z RS(   c         C` s   | |  _  d  S(   N(   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR     s    c         c` s%   |  j  j   t   } | j   Vd  S(   N(   R   t   on_handler_waitingR   t   wait(   RE   t   never_finish(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    	c         C` s   |  j  j   d  S(   N(   R   t   on_connection_close(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR     s    (   RH   RI   R   R   R   RQ   R   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR     s   	t   ConnectionCloseTestc           B` s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C` s   d t  t d |   f g S(   NRL   R   (   R   RY   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB     s    c         C` sa   t  j  t  j t  j d  } | j d |  j   f  t |  |  _ |  j j d  |  j   d  S(   Ni    s	   127.0.0.1s   GET / HTTP/1.0

(	   t   sockett   AF_INETt   SOCK_STREAMt   connectt   get_http_portR   t   streamRP   R   (   RE   t   s(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_connection_close  s
    c         C` s   t  j d  |  j j   d  S(   Ns   handler waiting(   R   R   R   t   close(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR     s    c         C` s   t  j d  |  j   d  S(   Ns   connection closed(   R   R   t   stop(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR     s    (   RH   RI   RB   R   R   R   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR     s   			t   EchoHandlerc           B` s   e  Z d    Z RS(   c      	   G` sA  x |  j  j D] } t |  t k r> t d t |    n  xC |  j  j | D]1 } t |  t k rO t d t |    qO qO WxB |  j |  D]1 } t |  t k r t d t |    q q Wq Wx9 | D]1 } t |  t k r t d t |    q q W|  j t	 d |  j  j
 d | d t |  j  j    d  S(   Ns   incorrect type for key: %rs   incorrect type for value: %rs   incorrect type for path arg: %rR7   t	   path_argst   args(   t   requestt	   argumentst   typeR   t	   ExceptionR   t   get_argumentsR   RP   RY   R7   R   (   RE   R   t   keyR^   t   arg(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s"    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR     s   t   RequestEncodingTestc           B` s>   e  Z d    Z d   Z d   Z d   Z d   Z d   Z RS(   c         C` s   d t  f d t  f g S(   Ns   /group/(.*)s   /slashes/([^/]*)/([^/]*)(   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB     s    	c         C` s   t  |  j |  j  S(   N(   R   R   R   (   RE   R7   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt
   fetch_json  s    c         C` sp   |  j  |  j d  t d d d d g d i    |  j  |  j d  t d d d d g d i d g d 6  d  S(   Ns
   /group/%3FR7   R   t   ?R   s   /group/%3F?%3F=%3F(   Rg   R   RY   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_group_question_mark  s    c         C` s?   |  j  |  j d  i d d 6d g d 6i d g d 6d 6 d  S(   Ns   /group/%C3%A9?arg=%C3%A9u   /group/%C3%A9u   pathu   éu	   path_argsu   argu   args(   Rg   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_group_encoding  s    

c      	   C` sl   |  j  |  j d  t d d d d d g d i    |  j  |  j d  t d d d d d	 g d i    d  S(
   Ns   /slashes/foo/barR7   R   Rb   Rc   R   s   /slashes/a%2Fb/c%2Fds   a/bs   c/d(   Rg   R   RY   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_slashes  s    
c         C` s'   t  t d   |  j d  Wd  QXd  S(   Ns   .*Invalid unicodes   /group/?arg=%25%e9(   R   R   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt
   test_error  s    (   RH   RI   RB   R   R   R   R  R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR     s   					t   TypeCheckHandlerc           B` s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C` sj  i  |  _  |  j d |  j   t  |  j d |  j d  t  |  j d t |  j j    d t	  |  j d t |  j j
    d j t	  t |  j j    d g k r t d |  j j     n  |  j d	 |  j d  t  |  j d
 |  j d  t	  |  j d |  j t  |  j d |  j   t	  |  j d |  j d d  t	  |  j d |  j   t	  d  S(   Nt   statust   argumentRb   t
   cookie_keyi    t   cookie_valueR   s%   unexpected values for cookie keys: %rRh   R]   t
   xsrf_tokent   xsrf_form_htmlt   reverse_urlt	   typecheckt   request_summary(   t   errorst
   check_typet
   get_statust   intt   get_argumentR   t   listt   cookiest   keysR   t   valuesR^   R   Rh   R   R]   R  R	  R
  t   _request_summary(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   prepare  s    	&)c         C` s'   |  j  d | t  |  j |  j  d  S(   Nt   path_component(   R  R   RP   R  (   RE   R  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    c         C` s'   |  j  d | t  |  j |  j  d  S(   NR  (   R  R   RP   R  (   RE   R  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   post  s    c         C` s6   t  |  } | | k r2 d | | f |  j | <n  d  S(   Ns   expected %s, got %s(   R   R  (   RE   R\   t   objt   expected_typet   actual_type(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s    (   RH   RI   R  RQ   R  R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s   			t   DecodeArgHandlerc           B` s   e  Z d d   Z d   Z RS(   c         C` sf   t  |  t k r+ t d t  |    n  d |  j j k r^ | j t |  j j d d   S| Sd  S(   Ns   unexpected type for value: %rt   encodingi    (   R   R   R   R   R   t   decodeR   (   RE   R^   R\   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   decode_argument'  s
    !c         C` s=   d   } |  j  i | |  d 6| |  j d   d 6 d  S(   Nc         S` sW   t  |   t k r+ d t t j |    g St  |   t k rG d |  g St d   d  S(   NR   R   s   unknown type(   R   R   R	   Ro   t   b2a_hexR   R   (   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   describe1  s
    
R7   Rb   t   query(   RP   R  (   RE   R   R"  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   0  s    	N(   RH   RI   RX   R   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  &  s   	t   LinkifyHandlerc           B` s   e  Z d    Z RS(   c         C` s   |  j  d d d d  S(   Ns   linkify.htmlt   messages   http://example.com(   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   =  s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR$  <  s   t   UIModuleResourceHandlerc           B` s   e  Z d    Z RS(   c         C` s   |  j  d d d d g d  S(   Ns	   page.htmlt   entriesi   i   (   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   B  s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR&  A  s   t   OptionalPathHandlerc           B` s   e  Z d    Z RS(   c         C` s   |  j  i | d 6 d  S(   NR7   (   RP   (   RE   R7   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   G  s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR(  F  s   t   FlowControlHandlerc           B` s9   e  Z e    e d     Z Wd QXd   Z d   Z RS(   c         C` s4   |  j  d  t    |  j d |  j  Wd  QXd  S(   NR   t   callback(   RP   R   t   flusht   step2(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   O  s    
Nc         C` s4   |  j  d  t    |  j d |  j  Wd  QXd  S(   Nt   2R*  (   RP   R   R+  t   step3(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR,  U  s    
c         C` s   |  j  d  |  j   d  S(   Nt   3(   RP   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR.  Z  s    (   RH   RI   R   R)   RQ   R,  R.  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR)  K  s   
	t   MultiHeaderHandlerc           B` s   e  Z d    Z RS(   c         C` sD   |  j  d d  |  j  d d  |  j d d  |  j d d  d  S(	   Ns   x-overwriteR   s   X-Overwritei   s   x-multii   s   X-Multit   4(   t
   set_headert
   add_header(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   `  s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR0  _  s   R$   c           B` s   e  Z d    Z RS(   c         C` s   |  j  d d   d  k	 r= |  j d d t |  j  d   nI |  j  d d   d  k	 rz |  j d d t |  j  d   n t d   d  S(   Nt	   permanentRL   R  s(   didn't get permanent or status arguments(   R  RX   t   redirectR  R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   h  s
    %%(   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR$   g  s   t   EmptyFlushCallbackHandlerc           B` s   e  Z e j d     Z RS(   c         c` sJ   |  j    V|  j    V|  j d  |  j    V|  j    V|  j d  d  S(   Nt   ot   k(   R+  RP   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   r  s    (   RH   RI   R   R   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR6  q  s   t   HeaderInjectionHandlerc           B` s   e  Z d    Z RS(   c         C` s_   y  |  j  d d  t d   Wn8 t k
 rZ } d t |  k rT |  j d  q[   n Xd  S(   Ns   X-Foos   foo
X-Bar: bazs   Didn't get expected exceptions   Unsafe header valuet   ok(   R2  R   t
   ValueErrorR   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR9    s   t   GetArgumentHandlerc           B` s   e  Z d    Z RS(   c         C` sk   |  j  d d   d k r$ |  j } n- |  j  d d   d k rH |  j } n	 |  j  } |  j | d d   d  S(   Nt   sourceR#  R   Rb   R   (   R  RX   t   get_query_argumentt   get_body_argumentR   (   RE   t   method(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s    	(   RH   RI   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR<    s   t   GetArgumentsHandlerc           B` s   e  Z d    Z RS(   c      	   C` sA   |  j  t d |  j d  d |  j d  d |  j d    d  S(   NR   Rb   R#  R   (   R   RY   R   t   get_query_argumentst   get_body_arguments(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s    (   RH   RI   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRA    s   t   WSGISafeWebTestc           B` s   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   s   WebTest.COOKIE_SECRETc         C` s=   t  i d d 6d d 6d d 6 } t d | d d	 d
 |  j  S(   Ns   {% module linkify(message) %}s   linkify.htmlsv   <html><head></head><body>
{% for e in entries %}
{% module Template("entry.html", entry=e) %}
{% end %}
</body></html>s	   page.htmlsY  {{ set_resources(embedded_css=".entry { margin-bottom: 1em; }",
                 embedded_javascript="js_embed()",
                 css_files=["/base.css", "/foo.css"],
                 javascript_files="/common.js",
                 html_head="<meta>",
                 html_body='<script src="/analytics.js"/>') }}
<div class="entry">...</div>s
   entry.htmlt   template_loadert
   autoescapet   xhtml_escapeRU   (   R   RY   t   COOKIE_SECRET(   RE   t   loader(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRC     s    c         C` s$   t  t |   j   t j j   d  S(   N(   t   superRD  t   tearDownR"   t   _template_loaderst   clear(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRK    s    c         C` s   t  d t d d t  d t d d t  d t  t  d t  t  d t  t  d	 t  t  d
 t  t  d t  t  d t i d d 6 t  d t i d d 6t	 d 6 t  d t i d d 6 t  d t
  t  d t  t  d t  g } | S(   Ns   /typecheck/(.*)R\   R  s   /decode_arg/(.*)t
   decode_args   /decode_arg_kw/(?P<arg>.*)s   /linkifys   /uimodule_resourcess   /optional_path/(.+)?s   /multi_headers	   /redirects   /web_redirect_permanents   /web_redirect_newpathR*   s   /web_redirectR4  s   //web_redirect_double_slashs   /header_injections   /get_arguments   /get_arguments(   R*   R  R  R$  R&  R(  R0  R$   t   WebRedirectHandlerR   R9  R<  RA  (   RE   t   urls(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB     s"    		c         O` s)   |  j  | |   } | j   t | j  S(   N(   R   t   rethrowR   R   (   RE   R   t   kwargsR   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR     s    
c         C` s   t  t |  j d d   } |  j d d i d | d 6} t | j  } |  j | i   |  j d d d d i d | d 6d	 d
 } d  S(   NR   t   qwers   /typecheck/asdf?foo=barR   s   asdf=R   R@  t   POSTR   s   foo=bar(   R   R,   RH  R   R   R   Rg   (   RE   R  R   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt
   test_types  s    c         C` s   d d d g } x` | D]X } |  j  |  } | j   t | j  } |  j | i d d g d 6d d g d 6 q W|  j  d  } | j   t | j  } |  j | i d	 d
 g d 6d	 d
 g d 6 d  S(   Ns,   /decode_arg/%C3%A9?foo=%C3%A9&encoding=utf-8s'   /decode_arg/%E9?foo=%E9&encoding=latin1s*   /decode_arg_kw/%E9?foo=%E9&encoding=latin1u   unicodeu   éu   pathu   querys   /decode_arg/%C3%A9?foo=%C3%A9u   bytesu   c3a9(   R   RQ  R   R   Rg   (   RE   RP  t   req_urlR   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_decode_argument  s    	

c         C` s^   t  t d  I |  j d  } |  j | j d  |  j d  } |  j | j d  Wd  QXd  S(   Ns   .*Invalid unicode.*s   /typecheck/invalid%FFi  s   /typecheck/invalid?foo=%FF(   R   R   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt$   test_decode_argument_invalid_unicode  s
    c         C` ss   d d g } x` | D]X } |  j  |  } | j   t | j  } |  j | i d d g d 6d d g d 6 q Wd  S(   Ns6   /decode_arg/1%20%2B%201?foo=1%20%2B%201&encoding=utf-8s0   /decode_arg/1%20+%201?foo=1+%2B+1&encoding=utf-8u   unicodeu   1 + 1u   pathu   query(   R   RQ  R   R   Rg   (   RE   RP  RV  R   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_decode_argument_plus  s    	
c         C` s   |  j  |  j j d d  d  |  j  |  j j d d  d  |  j  |  j j d d  d  |  j  |  j j d d  d	  |  j  |  j j d d
  d  d  S(   NRN  Rb   s   /decode_arg/fooi*   s   /decode_arg/42s   s   /decode_arg/%E9u   és   /decode_arg/%C3%A9s   1 + 1s   /decode_arg/1%20%2B%201(   Rg   RD   R
  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_reverse_url  s    c         C` s&   |  j  d  } |  j | j d  d  S(   Ns   /linkifys3   <a href="http://example.com">http://example.com</a>(   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_uimodule_unescaped  s    c         C` s&   |  j  d  } |  j | j d  d  S(   Ns   /uimodule_resourcess  <html><head><link href="/base.css" type="text/css" rel="stylesheet"/><link href="/foo.css" type="text/css" rel="stylesheet"/>
<style type="text/css">
.entry { margin-bottom: 1em; }
</style>
<meta>
</head><body>


<div class="entry">...</div>


<div class="entry">...</div>

<script src="/common.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
js_embed()
//]]>
</script>
<script src="/analytics.js"/>
</body></html>(   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_uimodule_resources  s    c         C` sD   |  j  |  j d  i d d 6 |  j  |  j d  i d  d 6 d  S(   Ns   /optional_path/foou   foou   paths   /optional_path/(   Rg   R   RX   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_optional_path5  s    c         C` sL   |  j  d  } |  j | j d d  |  j | j j d  d d g  d  S(   Ns   /multi_headers   x-overwriteR-  s   x-multiR/  R1  (   R   Rg   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_multi_header;  s    c         C` s|   |  j  d d t } |  j | j d  |  j  d d t } |  j | j d  |  j  d d t } |  j | j d  d  S(   Ns   /redirect?permanent=1R   i-  s   /redirect?permanent=0i.  s   /redirect?status=307i3  (   R   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_redirect@  s    c         C` s   |  j  d d t } |  j | j d  |  j | j d d  |  j  d d t } |  j | j d  |  j | j d d  d  S(   Ns   /web_redirect_permanentR   i-  R   s   /web_redirect_newpaths   /web_redirecti.  (   R   R   Rg   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_web_redirectH  s    c         C` sC   |  j  d d t } |  j | j d  |  j | j d d  d  S(   Ns   //web_redirect_double_slashR   i-  R   s   /web_redirect_newpath(   R   R   Rg   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_web_redirect_double_slashP  s    c         C` s&   |  j  d  } |  j | j d  d  S(   Ns   /header_injectionR:  (   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_header_injectionU  s    c      	   C` s  |  j  d  } |  j | j d  |  j  d  } |  j | j d  |  j  d  } |  j | j d  t j t d d   } |  j  d d	 d
 d | } |  j | j d  |  j  d d	 d
 d | } |  j t | j  t d d d g d d g d d g   d  S(   Ns   /get_argument?foo=barRc   s   /get_argument?foo=t    s   /get_argumentR   Rb   RO   R@  RT  R   s   /get_arguments?foo=barR#  (   R   Rg   R   t   urllib_parset	   urlencodeRY   R   (   RE   R   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_get_argumentY  s    	c         C` s   t  j t d d   } |  j d d d d | } |  j | j d  |  j d d d d | } |  j | j d	  |  j d
 d d d | } |  j | j d  d  S(   NRb   RO   s"   /get_argument?source=query&foo=barR@  RT  R   Rc   s   /get_argument?source=query&foo=Rc  s   /get_argument?source=queryR   (   Rd  Re  RY   R   Rg   R   (   RE   R   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_get_query_argumentsn  s    c         C` s   t  j t d d   } |  j d d d d | } |  j | j d  t  j t d d   } |  j d d d d | } |  j | j d  t  j t    } |  j d d d d | } |  j | j d  d  S(	   NRb   Rc   s#   /get_argument?source=body&foo=helloR@  RT  R   Rc  R   (   Rd  Re  RY   R   Rg   R   (   RE   R   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_get_body_arguments|  s    c         C` sQ   |  j  d  } |  j d | j j d d   |  j d | j j d d   d  S(   Ns   /get_arguments   Accept-Encodingt   VaryRc  t   gzips   Content-Encoding(   R   t   assertNotInR   RQ   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_no_gzip  s    (   RH   RI   RH  RC   RK  RB   R   RU  RW  RX  RY  RZ  R[  R\  R]  R^  R_  R`  Ra  Rb  Rf  Rg  Rh  Rl  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRD    s,   																				t   NonWSGIWebTestsc           B` s#   e  Z d    Z d   Z d   Z RS(   c         C` s   d t  f d t f g S(   Ns   /flow_controls   /empty_flush(   R)  R6  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB     s    	c         C` s    |  j  |  j d  j d  d  S(   Ns   /flow_controlt   123(   Rg   R   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_flow_control  s    c         C` s&   |  j  d  } |  j | j d  d  S(   Ns   /empty_flushR:  (   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_empty_flush  s    (   RH   RI   RB   Ro  Rp  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRm    s   		t   ErrorResponseTestc           B` s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C` sj   d t  f d     Y} d t  f d     Y} d t  f d     Y} t d |  t d |  t d	 |  g S(
   Nt   DefaultHandlerc           B` s   e  Z d    Z RS(   c         S` s<   |  j  d d   r0 t t |  j  d     n  d d d  S(   NR  i   i    (   R  RX   R%   R  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRr    s   t   WriteErrorHandlerc           B` s   e  Z d    Z d   Z RS(   c         S` s=   |  j  d d   r1 |  j t |  j  d    n d d d  S(   NR  i   i    (   R  RX   R   R  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    c         [` sP   |  j  d d  d | k r; |  j d | d d j  n |  j d |  d  S(   Ns   Content-Types
   text/plaint   exc_infos   Exception: %si    s
   Status: %d(   R2  RP   RH   (   RE   t   status_codeRR  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   write_error  s    (   RH   RI   RQ   Rv  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRs    s   	t   FailedWriteErrorHandlerc           B` s   e  Z d    Z d   Z RS(   c         S` s   d d d  S(   Ni   i    (    (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    c         [` s   t  d   d  S(   Ns   exception in write_error(   R   (   RE   Ru  RR  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRv    s    (   RH   RI   RQ   Rv  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRw    s   	s   /defaults   /write_errors   /failed_write_error(   R"   R*   (   RE   Rr  Rs  Rw  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB     s    c         C` s   t  t d   |  j d  } |  j | j d  |  j d | j k  |  j d  } |  j | j d  |  j d | j k  |  j d  } |  j | j d	  |  j d
 | j k  Wd  QXd  S(   Ns   Uncaught exceptions   /defaulti  s   500: Internal Server Errors   /default?status=503i  s   503: Service Unavailables   /default?status=435i  s   435: Unknown(   R   R   R   Rg   R   Rs   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_default  s    c         C` s   t  t d  o |  j d  } |  j | j d  |  j d | j  |  j d  } |  j | j d  |  j d | j  Wd  QXd  S(   Ns   Uncaught exceptions   /write_errori  s   Exception: ZeroDivisionErrors   /write_error?status=503i  s   Status: 503(   R   R   R   Rg   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_write_error  s    c         C` sO   t  t d  : |  j d  } |  j | j d  |  j d | j  Wd  QXd  S(   Ns   Uncaught exceptions   /failed_write_errori  Rc  (   R   R   R   Rg   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_failed_write_error  s    (   RH   RI   RB   Rx  Ry  Rz  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRq    s   	!		
t   StaticFileTestc           B` sj  e  Z d  Z e j j e j j e  d  Z d   Z	 d   Z
 d   Z d   Z d   Z d   Z d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z  d   Z! d   Z" d   Z# d   Z$ d   Z% d   Z& d    Z' e( j) e j* d! k d"  d#    Z+ RS($   t    f71d20196d4caf35b6a670db8c70b03dt   staticc         C` sv   d t  f d     Y} d | f d     Y} d t  f d     Y} d | f d | f d	 | f d
 t t d d  f g S(   Nt   StaticUrlHandlerc           B` s   e  Z d    Z RS(   c         S` s8   t  |  j d d   } |  j |  j | d |  d  S(   Nt   include_versioni   (   R  R  RP   t
   static_url(   RE   R7   t   with_v(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR~    s   t   AbsoluteStaticUrlHandlerc           B` s   e  Z e Z RS(    (   RH   RI   R   t   include_host(    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s   t   OverrideStaticUrlHandlerc           B` s   e  Z d    Z RS(   c   
      S` s   t  |  j d   } | |  _ |  j |  } |  j | d | } | | k rb |  j t t   S|  j j d } t	 |  } | j
 | d |  } | j
 | d |  } | r | d k o | d k }	 n | d k o | d k }	 |  j t |	   d  S(   NR  s   ://i    i(   t   boolR  R  R  RP   R   R   R   t   protocolR   t   find(
   RE   R7   t
   do_includet   regular_urlt   override_urlR  t   protocol_lengtht   check_regulart   check_overridet   result(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    
(   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s   s   /static_url/(.*)s   /abs_static_url/(.*)s   /override_static_url/(.*)s   /root_static/(.*)R7   RL   (   R"   R#   RY   (   RE   R~  R  R  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB     s    			c         C` s   t  d t d   S(   Nt   static_pathR}  (   RY   R<   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRC     s    c         C` sj   |  j  d  } |  j d | j k  |  j  d  } |  j d | j k  |  j | j j d  d  d  S(   Ns   /robots.txts   Disallow: /s   /static/robots.txts   Content-Types
   text/plain(   R   Rs   R   Rg   R   RQ   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_static_files  s
    c         C` s   |  j  d  } |  j | j j d  d  |  j  d  } |  j | j j d  d  |  j  d  } |  j | j j d  t d	  k  d  S(
   Ns   /static/sample.xml.gzs   Content-Types   application/gzips   /static/sample.xml.bz2s   application/octet-streams   /static/sample.xmls   text/xmls   application/xml(   s   text/xmls   application/xml(   R   Rg   R   RQ   Rs   t   set(   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_static_compressed_files  s    c         C` s-   |  j  d  } |  j | j d |  j  d  S(   Ns   /static_url/robots.txts   /static/robots.txt?v=(   R   Rg   R   t   robots_txt_hash(   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_static_url#  s    c         C` s@   |  j  d  } |  j | j t |  j d   d |  j  d  S(   Ns   /abs_static_url/robots.txtRL   s   static/robots.txt?v=(   R   Rg   R   R   R   R  (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_absolute_static_url(  s    c         C` s&   |  j  d  } |  j | j d  d  S(   Ns(   /static_url/robots.txt?include_version=0s   /static/robots.txt(   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_relative_version_exclusion0  s    c         C` s9   |  j  d  } |  j | j t |  j d  d   d  S(   Ns,   /abs_static_url/robots.txt?include_version=0RL   s   static/robots.txt(   R   Rg   R   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_absolute_version_exclusion4  s    c         C` s   |  j  t  |  j  t  d  S(   N(   t   _trigger_include_host_checkR   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_include_host_override9  s    c         C` sB   d } |  j  | t |   } |  j | j t t t    d  S(   Ns/   /override_static_url/robots.txt?include_host=%s(   R   R  Rg   R   R   R   R   (   RE   R  R7   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  =  s    c      	   O` s   |  j  d d | |  } |  j  d d | |  } t   } x? t j | j | j  D]% } | j d  rR | j |  qR qR Wx^ | D]V } |  j | j j |  | j j |  d | | j j |  | j j |  f  q W| S(   s   Performs a GET and HEAD request and returns the GET response.

        Fails if any ``Content-*`` headers returned by the two requests
        differ.
        R@  t   HEADt   GETs   Content-s)   %s differs between GET (%s) and HEAD (%s)(	   R   R  t	   itertoolst   chainR   t
   startswitht   addRg   RQ   (   RE   R   RR  t   head_responset   get_responset   content_headerst   h(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   get_and_headB  s    	c         C` su   |  j  d  } |  j  d d i | j d d 6} |  j | j d  |  j d | j k  |  j d | j k  d  S(   Ns   /static/robots.txtR   s   Last-Modifieds   If-Modified-Sincei0  s   Content-Length(   R  R   Rg   R   Rs   (   RE   t	   response1t	   response2(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt!   test_static_304_if_modified_sinceV  s    c         C` sI   |  j  d  } |  j  d d i | j d d 6} |  j | j d  d  S(   Ns   /static/robots.txtR   t   Etags   If-None-Matchi0  (   R  R   Rg   R   (   RE   R  R  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_static_304_if_none_match^  s    c         C` sP   |  j  d  } |  j  d d i d d 6| j d d 6} |  j | j d  d  S(   Ns   /static/robots.txtR   s
   "MISMATCH"s   If-None-Matchs   Last-Modifieds   If-Modified-Sincei   (   R  R   Rg   R   (   RE   R  R  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt!   test_static_304_etag_modified_bugd  s
    c         C` s3   |  j  d d i d d 6} |  j | j d  d  S(   Ns   /static/robots.txtR   s   Fri, 01 Jan 1960 00:00:00 GMTs   If-Modified-Sincei   (   R  Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt'   test_static_if_modified_since_pre_epochk  s    c         C` s   t  j t d   } |  j d d i t | j d  d 6} |  j | j d  |  j d d i t | j d  d 6} |  j | j d  d  S(   Ns   static/robots.txts   /static/robots.txtR   i   s   If-Modified-Sincei   i0  (   R6   t   statR<   R  R   t   st_mtimeRg   R   (   RE   R  R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt'   test_static_if_modified_since_time_zones  s    c         C` s@   |  j  d  } |  j t | j j d   d |  j d  d  S(   Ns   /static/robots.txtR  t   "(   R  Rg   R   R   RQ   R  (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_static_etag  s    c         C` s   |  j  d d i d d 6} |  j | j d  |  j | j d  |  j t | j j d   d |  j d  |  j | j j d	  d
  |  j | j j d  d  d  S(   Ns   /static/robots.txtR   s	   bytes=0-9t   Rangei   s
   User-agentR  R  s   Content-Lengtht   10s   Content-Ranges   bytes 0-9/26(   R  Rg   R   R   R   R   RQ   R  (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_static_with_range  s    c         C` s   |  j  d d i d d 6} |  j | j d  t j j |  j d  } t |  & } |  j | j t	 | j
     Wd  QX|  j | j j d  d  |  j | j j d	  d   d  S(
   Ns   /static/robots.txtR   s   bytes=0-R  i   s
   robots.txts   Content-Lengtht   26s   Content-Range(   R  Rg   R   R6   R7   R8   t
   static_dirt   openR   R   t   readR   RQ   RX   (   RE   R   t   robots_file_patht   f(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt    test_static_with_range_full_file  s    %c         C` s   |  j  d d i d d 6} |  j | j d  t j j |  j d  } t |  & } |  j | j t	 | j
     Wd  QX|  j | j j d  d  |  j | j j d	  d   d  S(
   Ns   /static/robots.txtR   s   bytes=0-10000000R  i   s
   robots.txts   Content-LengthR  s   Content-Range(   R  Rg   R   R6   R7   R8   R  R  R   R   R  R   RQ   RX   (   RE   R   R  R  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt$   test_static_with_range_full_past_end  s    %c      	   C` s   |  j  d d i d d 6} |  j | j d  t j j |  j d  } t |  * } |  j | j t	 | j
   d   Wd  QX|  j | j j d  d	  |  j | j j d
  d  d  S(   Ns   /static/robots.txtR   s   bytes=1-10000000R  i   s
   robots.txti   s   Content-Lengtht   25s   Content-Ranges   bytes 1-25/26(   R  Rg   R   R6   R7   R8   R  R  R   R   R  R   RQ   (   RE   R   R  R  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt'   test_static_with_range_partial_past_end  s    )c         C` sk   |  j  d d i d d 6} |  j | j d  |  j | j j d  d  |  j | j j d  d	  d  S(
   Ns   /static/robots.txtR   s	   bytes=22-R  s   : /
s   Content-LengthR1  s   Content-Ranges   bytes 22-25/26(   R  Rg   R   R   RQ   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_static_with_range_end_edge  s    c         C` sk   |  j  d d i d d 6} |  j | j d  |  j | j j d  d  |  j | j j d  d	  d  S(
   Ns   /static/robots.txtR   s   bytes=-4R  s   : /
s   Content-LengthR1  s   Content-Ranges   bytes 22-25/26(   R  Rg   R   R   RQ   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_static_with_range_neg_end  s    c         C` s3   |  j  d d i d d 6} |  j | j d  d  S(   Ns   /static/robots.txtR   R   R  i   (   R  Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_static_invalid_range  s    c         C` sO   |  j  d d i d d 6} |  j | j j d  d  |  j | j d  d  S(   Ns   /static/robots.txtR   s   bytes=-0R  s   Content-Ranges
   bytes */26i  (   R  Rg   R   RQ   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt+   test_static_unsatisfiable_range_zero_suffix  s
    c         C` sO   |  j  d d i d d 6} |  j | j d  |  j | j j d  d  d  S(   Ns   /static/robots.txtR   s   bytes=26R  i  s   Content-Ranges
   bytes */26(   R  Rg   R   R   RQ   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt-   test_static_unsatisfiable_range_invalid_start  s
    c         C` s~   |  j  d d d } |  j | j d  |  j | j d  |  j | j d d  |  j t | j d  d	 |  j d	  d  S(
   Ns   /static/robots.txtR@  R  i   Rc  s   Content-LengthR  R  R  (   R   Rg   R   R   R   R   R  (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_static_head  s    c         C` s   |  j  d d d d i d d 6} |  j | j d  |  j | j d  |  j | j d	 d
  |  j t | j d  d |  j d  d  S(   Ns   /static/robots.txtR@  R  R   s	   bytes=1-4R  i   Rc  s   Content-LengthR1  R  R  (   R   Rg   R   R   R   R   R  (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_static_head_range  s    c         C` s   |  j  d d i d d 6d |  j d d 6} |  j | j d  |  j | j d  |  j d	 | j k  |  j t | j d
  d |  j d  d  S(   Ns   /static/robots.txtR   s	   bytes=1-4R  R  s   If-None-Matchi0  Rc  s   Content-LengthR  (   R  R  Rg   R   R   Rs   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_static_range_if_none_match  s    c         C` s&   |  j  d  } |  j | j d  d  S(   Ns   /static/blargi  (   R  Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_static_404  s    c         C` sU   |  j  j   t   |  _  t t d   |  j d  } Wd  QX|  j | j d  d  S(   Ns   .*not in root static directorys   /static/../static_foo.txti  (   t   http_clientR   R   R   R   R  Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_path_traversal_protection  s
    t   posixs   non-posix OSc         C` s`   t  j j t  j j t  j j t   d  } |  j d t j |   } |  j	 | j
 d  d  S(   Ns   static/robots.txts   /root_statici   (   R6   R7   R8   R9   t   abspathR:   R  Rd  R   Rg   R   (   RE   R7   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_root_static_path  s    $	(,   RH   RI   R  R6   R7   R8   R9   R:   R  RB   RC   R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R   t   skipIfR\   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR{    sD   !	#																			
	
										
		t   StaticDefaultFilenameTestc           B` s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C` s"   t  d t d  d t  d d   S(   NR  R}  t   static_handler_argst   default_filenames
   index.html(   RY   R<   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRC     s    c         C` s   g  S(   N(    (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB     s    c         C` s?   |  j  d d t } |  j | j d  |  j d | j  d  S(   Ns   /static/dir/R   i   s   this is the index
(   R   R   Rg   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_static_default_filename  s    c         C` sI   |  j  d d t } |  j | j d  |  j | j d j d   d  S(   Ns   /static/dirR   i-  R   s   /static/dir/(   R   R   Rg   R   Rs   R   t   endswith(   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_static_default_redirect  s    (   RH   RI   RC   RB   R  R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s   			t   StaticFileWithPathTestc           B` s#   e  Z d    Z d   Z d   Z RS(   c         C` s"   t  d t d  d t  d d   S(   NR  R}  R  R  s
   index.html(   RY   R<   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRC   #  s    c         C` s   d t  i t d  d 6f g S(   Ns	   /foo/(.*)s
   templates/R7   (   R#   R<   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB   '  s    	c         C` s&   |  j  d  } |  j | j d  d  S(   Ns   /foo/utf8.htmls   Héllo
(   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt
   test_serve,  s    (   RH   RI   RC   RB   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  !  s   		t   CustomStaticFileTestc           B` s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C` sB   d t  f d     Y} d t f d     Y} | |  _ d | f g S(   Nt   MyStaticFileHandlerc           B` sn   e  Z e d     Z d   Z e d    Z d   Z e d d d   Z d   Z	 d   Z
 e d    Z RS(	   c         S` sJ   |  j  | |  } | j d  } | |  } | | d } d | | | f S(   Nt   .i   s   /static/%s.%s.%s(   t   get_versiont   rindex(   R?   RT   R7   t   version_hasht   extension_indext   before_versiont   after_version(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   make_static_url5  s    
	c         S` s:   | j  d  } | j  d d |  } d | |  | | f S(   NR  i    s   %s%s(   R  (   RE   t   url_pathR  t   version_index(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   parse_url_path>  s    
c         S` s   d | S(   Ns   CustomStaticFileTest:(    (   R?   RT   R7   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   get_absolute_pathD  s    c         S` s   | S(   N(    (   RE   t   roott   absolute_path(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   validate_absolute_pathH  s    c         S` sB   | d  k r | d  k s t  | d k r. d St d |   d  S(   Ns   CustomStaticFileTest:foo.txtRc   s   unexpected path %r(   RX   t   AssertionErrorR   (   RE   R7   t   startt   end(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   get_contentK  s    c         S` s*   |  j  d k r d St d |  j    d  S(   Ns   CustomStaticFileTest:foo.txti   s   unexpected path %r(   R  R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   get_content_sizeR  s    c         S` s   d  S(   N(   RX   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   get_modified_timeW  s    c         S` s   d S(   Nt   42(    (   R?   RT   R7   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  Z  s    N(   RH   RI   t   classmethodR  R  R  R  RX   R  R  R  R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  4  s   					R~  c           B` s   e  Z d    Z RS(   c         S` s   |  j  |  j |   d  S(   N(   RP   R  (   RE   R7   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   _  s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR~  ^  s   s   /static_url/(.*)(   R#   R"   t   static_handler_class(   RE   R  R~  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB   3  s    *	c         C` s   t  d d d |  j  S(   NR  t   dummyR  (   RY   R  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRC   f  s    c         C` s&   |  j  d  } |  j | j d  d  S(   Ns   /static/foo.42.txtRc   (   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  j  s    c         C` sB   t  t d d t ' |  j d  } |  j | j d  Wd  QXd  S(   Ns   Could not open static filet   requireds   /static_url/foo.txts   /static/foo.42.txt(   R   R   R   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  n  s    (   RH   RI   RB   RC   R  R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  1  s   	3		t   HostMatchingTestc           B` s0   e  Z d  e f d     YZ d   Z d   Z RS(   RM   c           B` s   e  Z d    Z d   Z RS(   c         C` s   | |  _  d  S(   N(   t   reply(   RE   R  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR   w  s    c         C` s   |  j  |  j  d  S(   N(   RP   R  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   z  s    (   RH   RI   R   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM   v  s   	c         C` s   d t  j i d d 6f g S(   Ns   /foot   wildcardR  (   R  RM   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB   }  s    c         C` s  |  j  j d d t j i d d 6f g  |  j  j d d t j i d d 6f g  |  j  j d d t j i d	 d 6f g  |  j  j d
 d t j i d d 6f g  |  j d  } |  j | j d  |  j d  } |  j | j d  |  j d  } |  j | j d  |  j d d i d d 6} |  j | j d  |  j d d i d d 6} |  j | j d  |  j d d i d d 6} |  j | j d	  |  j d d i d d 6} |  j | j d  d  S(   Ns   www.example.coms   /foos   [0]R  s   www\.example\.coms   /bars   [1]s   /bazs   [2]s   www.e.*e.coms   [3]R  i  R   t   Hosts   www.exe.com(   RD   t   add_handlersR  RM   R   Rg   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_host_matching  s,    (   RH   RI   R"   RM   RB   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  t  s   	t   DefaultHostMatchingTestc           B` s#   e  Z d    Z d   Z d   Z RS(   c         C` s   g  S(   N(    (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB     s    c         C` s   i d d 6S(   Ns   www.example.comt   default_host(    (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRC     s    c         C` sB  |  j  j d d t j i d d 6f g  |  j  j d d t j i d d 6f g  |  j  j d d	 t j i d
 d 6f g  |  j d  } |  j | j d  |  j d  } |  j | j d  |  j d	  } |  j | j d  |  j d d i d d 6} |  j | j d  d |  j  _ |  j d	  } |  j | j d
  d  S(   Ns   www.example.coms   /foos   [0]R  s   www\.example\.coms   /bars   [1]s   www.test.coms   /bazs   [2]i  R   s	   127.0.0.1s	   X-Real-Ip(	   RD   R  R  RM   R   Rg   R   R   R  (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_default_host_matching  s"    (   RH   RI   RB   RC   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s   		t   NamedURLSpecGroupsTestc           B` s   e  Z d    Z d   Z RS(   c         C` s,   d t  f d     Y} d | f d | f g S(   NR   c           B` s   e  Z d    Z RS(   c         S` s   |  j  |  d  S(   N(   RP   (   RE   R7   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR     s   s   /str/(?P<path>.*)u   /unicode/(?P<path>.*)(   R"   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB     s    	c         C` sH   |  j  d  } |  j | j d  |  j  d  } |  j | j d  d  S(   Ns   /str/fooRb   s   /unicode/barRc   (   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_named_urlspec_groups  s    (   RH   RI   RB   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s   	t   ClearHeaderTestc           B` s'   e  Z d  e f d     YZ d   Z RS(   RM   c           B` s   e  Z d    Z RS(   c         C` s>   |  j  d d  |  j  d d  |  j d  |  j d  d  S(   Nt   h1Rb   t   h2Rc   t   nonexistent(   R2  t   clear_header(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM     s   c         C` s@   |  j  d  } |  j d | j k  |  j | j d d  d  S(   NRL   R  R  Rc   (   R   Rs   R   Rg   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_clear_header  s    (   RH   RI   R"   RM   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s   t   Header204Testc           B` s'   e  Z d  e f d     YZ d   Z RS(   RM   c           B` s   e  Z d    Z RS(   c         C` s   |  j  d  |  j   d  S(   Ni   (   t
   set_statusR   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM     s   c         C` sL   |  j  d  } |  j | j d  |  j d | j  |  j d | j  d  S(   NRL   i   s   Content-Lengths   Transfer-Encoding(   R   Rg   R   Rk  R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_204_headers  s    (   RH   RI   R"   RM   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s   t   Header304Testc           B` s'   e  Z d  e f d     YZ d   Z RS(   RM   c           B` s   e  Z d    Z RS(   c         C` s!   |  j  d d  |  j d  d  S(   Ns   Content-Languaget   en_USRO   (   R2  RP   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM     s   c         C` s   |  j  d  } |  j | j d d  |  j | j d d  |  j  d d i | j d d 6} |  j | j d	  |  j d | j k  |  j d | j k  |  j d
 | j k  d  S(   NRL   s   Content-Lengtht   5s   Content-LanguageR  R   R  s   If-None-Matchi0  s   Transfer-Encoding(   R   Rg   R   R   Rs   (   RE   R  R  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_304_headers  s    (   RH   RI   R"   RM   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s   t   StatusReasonTestc           B` s0   e  Z d  e f d     YZ d   Z d   Z RS(   RM   c           B` s   e  Z d    Z RS(   c         C` sN   |  j  j j d g   } |  j t |  j d   d | rC | d n d  d  S(   Nt   reasonR   i    (   R   R   RQ   R  R  R  RX   (   RE   R
  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM      s   c         C` s   t    S(   N(   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   get_http_client  s    c         C` s   |  j  d  } |  j | j d  |  j | j d  |  j  d  } |  j | j d  |  j | j d  |  j  d  } |  j | j d  |  j | j d  |  j  d	  } |  j | j d  |  j | j d
  d  S(   Ns
   /?code=304i0  s   Not Modifieds   /?code=304&reason=Foot   Foos   /?code=682&reason=Bari  t   Bars
   /?code=682t   Unknown(   R   Rg   R   R
  (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_status
  s    (   RH   RI   R"   RM   R  R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR	    s   	t   DateHeaderTestc           B` s'   e  Z d  e f d     YZ d   Z RS(   RM   c           B` s   e  Z d    Z RS(   c         C` s   |  j  d  d  S(   NRO   (   RP   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM     s   c         C` se   |  j  d  } t j t j j | j d  d    } |  j | t j j   t j d d  k   d  S(   NRL   t   Datei   t   secondsi   (	   R   R   R   R   R   R   Rs   R   R   (   RE   R   t   header_date(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_date_header  s
     (   RH   RI   R"   RM   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s   t   RaiseWithReasonTestc           B` sB   e  Z d  e f d     YZ d   Z d   Z d   Z d   Z RS(   RM   c           B` s   e  Z d    Z RS(   c         C` s   t  d d d  d  S(   Ni  R
  R  (   R%   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   *  s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM   )  s   c         C` s   t    S(   N(   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  -  s    c         C` sL   |  j  d  } |  j | j d  |  j | j d  |  j d | j  d  S(   NRL   i  R  s   682: Foo(   R   Rg   R   R
  t   assertInR   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_raise_with_reason1  s    c         C` s&   |  j  t t d d d  d  d  S(   Ni  R
  R  s   HTTP 682: Foo(   Rg   R   R%   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_httperror_str7  s    c         C` s    |  j  t t d   d  d  S(   Ni  s   HTTP 682: Unknown(   Rg   R   R%   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt    test_httperror_str_from_httputil:  s    (   RH   RI   R"   RM   R  R  R  R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  '  s
   			t   ErrorHandlerXSRFTestc           B` s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C` s   d t  t d d  f g S(   Ns   /errorRu  i  (   R'   RY   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB   @  s    c         C` s   t  d t  S(   Nt   xsrf_cookies(   RY   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRC   F  s    c         C` s2   |  j  d d d d d } |  j | j d  d  S(   Ns   /errorR@  RT  R   Rc  i  (   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_error_xsrfI  s    c         C` s2   |  j  d d d d d } |  j | j d  d  S(   Ns   /404R@  RT  R   Rc  i  (   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_404_xsrfM  s    (   RH   RI   RB   RC   R  R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  >  s   			t   GzipTestCasec           B` s]   e  Z d  e f d     YZ d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 RS(	   RM   c           B` s   e  Z d    Z RS(   c         C` sF   x' |  j  d  D] } |  j d |  q W|  j d d t j  d  S(   Nt   varyRi  s   hello worldt   !(   R   R3  RP   R4   t
   MIN_LENGTH(   RE   t   v(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   U  s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM   T  s   c         C` s.   t  d t d t j j t j j t  d   S(   NRj  R  R}  (   RY   R   R6   R7   R8   R9   R:   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRC   [  s    c         C` s/   |  j  | j j d | j j d   d  d  S(   Ns   Content-Encodings   X-Consumed-Content-EncodingRj  (   Rg   R   RQ   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   assert_compressed`  s
    	c         C` s7   |  j  d  } |  j |  |  j | j d d  d  S(   NRL   Ri  s   Accept-Encoding(   R   R#  Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt	   test_gzipi  s    c         C` s7   |  j  d  } |  j |  |  j | j d d  d  S(   Ns   /robots.txtRi  s   Accept-Encoding(   R   R#  Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_gzip_staticn  s    c         C` sC   |  j  d d t } |  j d | j  |  j | j d d  d  S(   NRL   t   use_gzips   Content-EncodingRi  s   Accept-Encoding(   R   R   Rk  R   Rg   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_gzip_not_requestedu  s    c         C` s_   |  j  d  } |  j |  |  j g  | j d j d  D] } | j   ^ q9 d d g  d  S(   Ns   /?vary=Accept-LanguageRi  t   ,s   Accept-Languages   Accept-Encoding(   R   R#  Rg   R   t   splitt   strip(   RE   R   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_vary_already_presentz  s    2c         C` sb   |  j  d  } |  j |  |  j g  | j d j d  D] } | j   ^ q9 d d d g  d  S(   Ns"   /?vary=Accept-Language&vary=CookieRi  R(  s   Accept-LanguageR   s   Accept-Encoding(   R   R#  Rg   R   R)  R*  (   RE   R   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt"   test_vary_already_present_multiple  s    2(   RH   RI   R"   RM   RC   R#  R$  R%  R'  R+  R,  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  R  s   							t   PathArgsInPrepareTestc           B` s9   e  Z d  e f d     YZ d   Z d   Z d   Z RS(   RM   c           B` s   e  Z d    Z d   Z RS(   c         C` s&   |  j  t d |  j d |  j   d  S(   NR   RR  (   RP   RY   R   t   path_kwargs(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s    c         C` s    | d k s t   |  j   d  S(   NRb   (   R  R   (   RE   R7   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    (   RH   RI   R  RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM     s   	c         C` s   d |  j  f d |  j  f g S(   Ns	   /pos/(.*)s   /kw/(?P<path>.*)(   RM   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB     s    c         C` sM   |  j  d  } | j   t | j  } |  j | i d g d 6i  d 6 d  S(   Ns   /pos/fooRb   R   RR  (   R   RQ  R   R   Rg   (   RE   R   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_pos  s    
c         C` sQ   |  j  d  } | j   t | j  } |  j | i g  d 6i d d 6d 6 d  S(   Ns   /kw/fooR   Rb   R7   RR  (   R   RQ  R   R   Rg   (   RE   R   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_kw  s    
(   RH   RI   R"   RM   RB   R/  R0  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR-    s   		t   ClearAllCookiesTestc           B` s'   e  Z d  e f d     YZ d   Z RS(   RM   c           B` s   e  Z d    Z RS(   c         C` s   |  j    |  j d  d  S(   NR:  (   t   clear_all_cookiesRP   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    
(   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM     s   c         C` s   |  j  d d i d d 6} t | j j d   } |  j | d j d  p] | d j d   |  j | d	 j d
  p | d	 j d   d  S(   NRL   R   s   foo=bar; baz=xyzzyR   s
   Set-Cookiei    s   baz=;s   baz="";i   s   foo=;s   foo="";(   R   R   R   R   Rs   R  (   RE   R   t   set_cookies(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_clear_all_cookies  s    (   RH   RI   R"   RM   R4  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR1    s   t   PermissionErrorc           B` s   e  Z RS(    (   RH   RI   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR5    s   t   ExceptionHandlerTestc           B` s9   e  Z d  e f d     YZ d   Z d   Z d   Z RS(   RM   c           B` s#   e  Z d    Z d   Z d   Z RS(   c         C` sc   |  j  d  } | d k r- t d d   n2 | d k rD d d n | d k r_ t d	   n  d  S(
   Nt   exct   httpi  s   no longer heret   zeroi   i    t
   permissions   not allowed(   R  R%   R5  (   RE   R7  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    c         K` sf   d | k rO | d \ } } } t  | t  rO |  j d  |  j d  d  Sn  t j |  | |  d  S(   NRt  i  R5  (   t
   isinstanceR5  R  RP   R"   Rv  (   RE   Ru  RR  t   typR^   t   tb(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRv    s    c         C` sC   t  | t  r) t j d | j d  n t j |  | | |  d  S(   Ns&   custom logging for PermissionError: %si    (   R;  R5  R   t   warningR   R"   t   log_exception(   RE   R<  R^   R=  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR?    s    	(   RH   RI   RQ   Rv  R?  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM     s   				c         C` s<   t  t d  ' |  j d  } |  j | j d  Wd  QXd  S(   Ns   .*no longer heres
   /?exc=httpi  (   R   R   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_http_error  s    c         C` s<   t  t d  ' |  j d  } |  j | j d  Wd  QXd  S(   Ns   Uncaught exceptions
   /?exc=zeroi  (   R   R   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_unknown_error  s    c         C` s<   t  t d  ' |  j d  } |  j | j d  Wd  QXd  S(   Ns/   custom logging for PermissionError: not alloweds   /?exc=permissioni  (   R   R   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_known_error  s    
(   RH   RI   R"   RM   R@  RA  RB  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR6    s   		t   BuggyLoggingTestc           B` s'   e  Z d  e f d     YZ d   Z RS(   RM   c           B` s   e  Z d    Z d   Z RS(   c         C` s   d d d  S(   Ni   i    (    (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    c         C` s   d d d  S(   Ni   i    (    (   RE   R<  R^   R=  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR?    s    (   RH   RI   RQ   R?  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM     s   	c         C` s'   t  t d   |  j d  Wd  QXd  S(   Ns   .*RL   (   R   R   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_buggy_log_exception  s    (   RH   RI   R"   RM   RD  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRC    s   t   UIMethodUIModuleTestc           B` s?   e  Z d  Z d e f d     YZ d   Z d   Z d   Z RS(   s`   Test that UI methods and modules are created correctly and
    associated with the handler.
    RM   c           B` s   e  Z d    Z d   Z RS(   c         C` s   |  j  d  d  S(   Ns   foo.html(   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ      s    c         C` s   |  j  d  S(   NR^   (   R  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR^     s    (   RH   RI   RQ   R^   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM     s   	c      	   C` sY   d   } d t  f d     Y} t i d d 6 } t d | d i | d 6d	 i | d 6 S(
   Nc         S` s   d | |  j    f S(   Ns*   In my_ui_method(%s) with handler value %s.(   R^   (   Ri   t   x(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   my_ui_method  s    t   MyModulec           B` s   e  Z d    Z RS(   c         S` s   d | |  j  j   f S(   Ns&   In MyModule(%s) with handler value %s.(   Ri   R^   (   RE   RF  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR     s    (   RH   RI   R   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRH    s   s1   {{ my_ui_method(42) }} {% module MyModule(123) %}s   foo.htmlRE  t
   ui_methodsRG  t
   ui_modules(   R/   R   RY   (   RE   RG  RH  RI  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRC     s    	c         C` s$   t  t |   j   t j j   d  S(   N(   RJ  RE  RK  R"   RL  RM  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRK    s    c         C` s&   |  j  d  } |  j | j d  d  S(   Ns   /?value=asdfsV   In my_ui_method(42) with handler value asdf. In MyModule(123) with handler value asdf.(   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_ui_method  s    (   RH   RI   RJ   R"   RM   RC   RK  RK  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRE    s
   		t   GetArgumentErrorTestc           B` s'   e  Z d  e f d     YZ d   Z RS(   RM   c           B` s   e  Z d    Z RS(   c         C` sY   y |  j  d  |  j i   Wn4 t k
 rT } |  j i | j d 6| j d 6 n Xd  S(   NRb   t   arg_namet   log_message(   R  RP   R&   RM  RN  (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   &  s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM   %  s   c         C` s:   |  j  d  } |  j t | j  i d d 6d d 6 d  S(   NRL   Rb   RM  s   Missing argument fooRN  (   R   Rg   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_catch_error.  s    
(   RH   RI   R"   RM   RO  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRL  #  s   	t   MultipleExceptionTestc           B` s'   e  Z d  e f d     YZ d   Z RS(   RM   c           B` s6   e  Z d  Z e    e d    Z Wd QXd   Z RS(   i    c         C` s0   t  j   j d    t  j   j d    d  S(   Nc           S` s   d d S(   Ni   i    (    (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   <lambda><  s    c           S` s   d d S(   Ni   i    (    (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ  =  s    (   R   t   currentt   add_callback(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   :  s    Nc         C` s   t  j j d 7_ d  S(   Ni   (   RP  RM   t	   exc_count(   RE   R<  R^   R=  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR?  ?  s    (   RH   RI   RT  R   R)   RQ   R?  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM   6  s   
c         C` sn   t    _ |  j d  } |  j | j d  |  j d  } |  j | j d  |  j t j j d  Wd  QXd  S(   NRL   i  i   (   R   R   Rg   R   t   assertGreaterRP  RM   RT  (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_multi_exceptionB  s    
(   RH   RI   R"   RM   RV  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRP  5  s   t   SetLazyPropertiesTestc           B` s'   e  Z d  e f d     YZ d   Z RS(   RM   c           B` s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C` s   d |  _  t j d  |  _ d  S(   Nt   BenR  (   t   current_userR   RQ   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  U  s    	c         C` s   t     d  S(   N(   RG   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   get_user_localeY  s    c         C` s   t     d  S(   N(   RG   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   get_current_user\  s    c         C` s$   |  j  d |  j |  j j f  d  S(   Ns   Hello %s (%s)(   RP   RY  R   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   _  s    (   RH   RI   R  RZ  R[  RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM   T  s   			c         C` s&   |  j  d  } |  j | j d  d  S(   NRL   s   Hello Ben (en_US)(   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_set_propertiesb  s    (   RH   RI   R"   RM   R\  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRW  R  s   t   GetCurrentUserTestc           B` sV   e  Z d    Z d   Z d   Z e j d  d    Z d   Z d   Z	 d   Z
 RS(   c         C` su   d t  f d     Y} d t  f d     Y} t i d d 6d d 6d	 d
 6d d 6 } t d | d i | d 6| d 6 S(   Nt   WithoutUserModulec           B` s   e  Z d    Z RS(   c         S` s   d S(   NRc  (    (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR   m  s    (   RH   RI   R   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR^  l  s   t   WithUserModulec           B` s   e  Z d    Z RS(   c         S` s   t  |  j  S(   N(   R   RY  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR   q  s    (   RH   RI   R   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR_  p  s   Rc  s   without_user.htmls   {{ current_user }}s   with_user.htmls    {% module WithoutUserModule() %}s   without_user_module.htmls   {% module WithUserModule() %}s   with_user_module.htmlRE  RJ  (   R/   R   RY   (   RE   R^  R_  RI  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRC   k  s    
c         C` s$   t  t |   j   t j j   d  S(   N(   RJ  R]  RK  R"   RL  RM  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRK  ~  s    c         C` s   d t  f d     Y} d | f d     Y} d | f d     Y} d | f d     Y} d	 | f d
     Y} d | f d     Y} d | f d | f d | f d | f g S(   Nt   CurrentUserHandlerc           B` s   e  Z d    Z d   Z RS(   c         S` s   t  |  _ d  S(   N(   R   t   has_loaded_current_user(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s    c         S` s   t  |  _ d S(   NRc  (   R   Ra  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR[    s    	(   RH   RI   R  R[  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR`    s   	t   WithoutUserHandlerc           B` s   e  Z d    Z RS(   c         S` s'   |  j  d  |  j t |  j   d  S(   Ns   without_user.html(   t   render_stringR   R   Ra  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRb    s   t   WithUserHandlerc           B` s   e  Z d    Z RS(   c         S` s'   |  j  d  |  j t |  j   d  S(   Ns   with_user.html(   Rc  R   R   Ra  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRd    s   t   CurrentUserModuleHandlerc           B` s   e  Z d    Z RS(   c         S` s   |  j  S(   N(   t   ui(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   get_template_namespace  s    (   RH   RI   Rg  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRe    s   t   WithoutUserModuleHandlerc           B` s   e  Z d    Z RS(   c         S` s'   |  j  d  |  j t |  j   d  S(   Ns   without_user_module.html(   Rc  R   R   Ra  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRh    s   t   WithUserModuleHandlerc           B` s   e  Z d    Z RS(   c         S` s'   |  j  d  |  j t |  j   d  S(   Ns   with_user_module.html(   Rc  R   R   Ra  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRi    s   s   /without_users
   /with_users   /without_user_modules   /with_user_module(   R"   (   RE   R`  Rb  Rd  Re  Rh  Ri  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB     s    			s	   needs fixc         C` s&   |  j  d  } |  j | j d  d  S(   Ns   /without_userR   (   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_get_current_user_is_lazy  s    c         C` s&   |  j  d  } |  j | j d  d  S(   Ns
   /with_userR   (   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_get_current_user_works  s    c         C` s&   |  j  d  } |  j | j d  d  S(   Ns   /without_user_moduleR   (   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt,   test_get_current_user_from_ui_module_is_lazy  s    c         C` s&   |  j  d  } |  j | j d  d  S(   Ns   /with_user_moduleR   (   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt*   test_get_current_user_from_ui_module_works  s    (   RH   RI   RC   RK  RB   R   t   skipRj  Rk  Rl  Rm  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR]  i  s   			)		t   UnimplementedHTTPMethodsTestc           B` s'   e  Z d  e f d     YZ d   Z RS(   RM   c           B` s   e  Z RS(    (   RH   RI   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM     s   c         C` s   xB d d d d g D]. } |  j  d d | } |  j | j d  q WxB d d	 g D]4 } |  j  d d | d
 d } |  j | j d  qR Wd  S(   NR  R  t   DELETEt   OPTIONSRL   R@  i  RT  t   PUTR   Rc  (   R   Rg   R   (   RE   R@  R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt#   test_unimplemented_standard_methods  s    (   RH   RI   R"   RM   Rs  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRo    s   t#   UnimplementedNonStandardMethodsTestc           B` s0   e  Z d  e f d     YZ d   Z d   Z RS(   RM   c           B` s   e  Z d    Z RS(   c         C` s   |  j  d  d  S(   Nt   other(   RP   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRu    s    (   RH   RI   Ru  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM     s   c         C` s2   |  j  d d d d d } |  j | j d  d  S(   NRL   R@  t   PATCHR   Rc  i  (   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_unimplemented_patch  s    c         C` s2   |  j  d d d d t } |  j | j d  d  S(   NRL   R@  t   OTHERt   allow_nonstandard_methodsi  (   R   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_unimplemented_other  s    	(   RH   RI   R"   RM   Rw  Rz  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRt    s   	t   AllHTTPMethodsTestc           B` s'   e  Z d  e f d     YZ d   Z RS(   RM   c           B` s'   e  Z d    Z e Z Z Z Z Z RS(   c         C` s   |  j  |  j j  d  S(   N(   RP   R   R@  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR@    s    (   RH   RI   R@  RQ   t   deletet   optionsR  t   put(    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM     s   	c         C` s   |  j  d d d } |  j | j d  xE d d d g D]4 } |  j  d d | } |  j | j t |   q8 WxH d d	 g D]: } |  j  d d | d
 d } |  j | j t |   q} Wd  S(   NRL   R@  R  Rc  R  Rp  Rq  RT  Rr  R   (   R   Rg   R   R   (   RE   R   R@  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_standard_methods  s    (   RH   RI   R"   RM   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR{    s   t   PatchMethodTestc           B` s0   e  Z d  e f d     YZ d   Z d   Z RS(   RM   c           B` s'   e  Z e j d Z d   Z d   Z RS(   Rx  c         C` s   |  j  d  d  S(   Nt   patch(   RP   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s    c         C` s   |  j  d  d  S(   NRu  (   RP   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRu    s    (   Rx  (   RH   RI   R"   t   SUPPORTED_METHODSR  Ru  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM     s   	c         C` s2   |  j  d d d d d } |  j | j d  d  S(   NRL   R@  Rv  R   Rc  R  (   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt
   test_patch  s    c         C` s2   |  j  d d d d t } |  j | j d  d  S(   NRL   R@  Rx  Ry  Ru  (   R   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt
   test_other  s    	(   RH   RI   R"   RM   R  R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s   		t   FinishInPrepareTestc           B` s'   e  Z d  e f d     YZ d   Z RS(   RM   c           B` s   e  Z d    Z d   Z RS(   c         C` s   |  j  d  d  S(   NR   (   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s    c         C` s   t  d   d  S(   Ns   should not reach this method(   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    (   RH   RI   R  RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM   
  s   	c         C` s&   |  j  d  } |  j | j d  d  S(   NRL   R   (   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_finish_in_prepare  s    (   RH   RI   R"   RM   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s   
t   Default404Testc           B` s   e  Z d    Z d   Z RS(   c         C` s   d t  f g S(   Ns   /foo(   R"   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB     s    c         C` s9   |  j  d  } |  j | j d  |  j | j d  d  S(   NRL   i  sE   <html><title>404: Not Found</title><body>404: Not Found</body></html>(   R   Rg   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_404  s    (   RH   RI   RB   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s   	t   Custom404Testc           B` s#   e  Z d    Z d   Z d   Z RS(   c         C` s   d t  f g S(   Ns   /foo(   R"   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB   )  s    c         C` s#   d t  f d     Y} t d |  S(   Nt   Custom404Handlerc           B` s   e  Z d    Z RS(   c         S` s   |  j  d  |  j d  d  S(   Ni  s   custom 404 response(   R  RP   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   .  s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  -  s   t   default_handler_class(   R"   RY   (   RE   R  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRC   ,  s    c         C` s9   |  j  d  } |  j | j d  |  j | j d  d  S(   NRL   i  s   custom 404 response(   R   Rg   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  4  s    (   RH   RI   RB   RC   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  '  s   		t   DefaultHandlerArgumentsTestc           B` s#   e  Z d    Z d   Z d   Z RS(   c         C` s   d t  f g S(   Ns   /foo(   R"   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB   <  s    c         C` s   t  d t d t  d d   S(   NR  t   default_handler_argsRu  i  (   RY   R'   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRC   ?  s    c         C` s&   |  j  d  } |  j | j d  d  S(   NRL   i  (   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_403C  s    (   RH   RI   RB   RC   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  :  s   		t   HandlerByNameTestc           B` s   e  Z d    Z d   Z RS(   c         C` s   d t  f d t d d  g S(   Ns   /hello1s   /hello2s"   tornado.test.web_test.HelloHandlers   /hello3(   s   /hello2s"   tornado.test.web_test.HelloHandler(   RN   R*   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB   J  s    	c         C` sj   |  j  d  } |  j | j d  |  j  d  } |  j | j d  |  j  d  } |  j | j d  d  S(   Ns   /hello1RO   s   /hello2s   /hello3(   R   Rg   R   (   RE   t   resp(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_handler_by_nameQ  s    (   RH   RI   RB   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  H  s   	t   StreamingRequestBodyTestc           B` sV   e  Z d    Z d   Z e d    Z e d    Z e d    Z e d    Z RS(   c         ` s   t  d t f d     Y } t  d t f d     Y } t  d t f   f d     Y   d | t d |   f d	 | f d
   t d |   f g S(   Nt   StreamingBodyHandlerc           B` s,   e  Z d    Z d   Z d   Z d   Z RS(   c         S` s   | |  _  d  S(   N(   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR   ^  s    c         S` s   |  j  j j d   d  S(   N(   R   t   preparedt
   set_resultRX   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  a  s    c         S` s   |  j  j j |  d  S(   N(   R   R   R  (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   data_receivedd  s    c         S` s$   |  j  j j d   |  j i   d  S(   N(   R   t   finishedR  RX   RP   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   g  s    (   RH   RI   R   R  R  RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  \  s   			t   EarlyReturnHandlerc           B` s   e  Z d    Z RS(   c         S` s   t  d   d  S(   Ni  (   R%   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  m  s    (   RH   RI   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  k  s   t   CloseDetectionHandlerc           ` s    e  Z d    Z   f d   Z RS(   c         S` s   | |  _  d  S(   N(   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR   t  s    c         ` s*   t    |   j   |  j j j d   d  S(   N(   RJ  R   R   t   close_futureR  RX   (   RE   (   R  (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR   w  s    (   RH   RI   R   R   (    (   R  (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  r  s   	s   /stream_bodyR   s   /early_returns   /close_detection(   R1   R"   RY   (   RE   R  R  (    (   R  s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB   [  s    	c         C` s|   t  j  t  j t  j d  } | j d |  j   f  t |  } | j d | d  | rk | j d  n  | j d  | S(   Ni    s	   127.0.0.1s   GET s    HTTP/1.1
s   Connection: close
s   Transfer-Encoding: chunked

(   R   R   R   R   R   R   RP   (   RE   R*   t   connection_closeR   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR     s    c         c` s   t    |  _ t    |  _ t    |  _ |  j d d t } |  j V| j d  |  j V} |  j | d  t    |  _ | j d  |  j V} |  j | d  | j d  |  j V| j	   V} |  j
 | j d   | j   d  S(	   Ns   /stream_bodyR  s	   4
asdf
R   s	   4
qwer
RS  s   0

s   {}(   R   R  R   R  R   R   RP   Rg   t   assertEqualst   read_until_closeRs   R  R   (   RE   R   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_streaming_body  s"    

c         c` s<   |  j  d d t } | j   V} |  j | j d   d  S(   Ns   /early_returnR  s   HTTP/1.1 401(   R   R   R  Rs   R  (   RE   R   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_early_return  s    c         c` sI   |  j  d d t } | j d  | j   V} |  j | j d   d  S(   Ns   /early_returnR  s	   4
asdf
s   HTTP/1.1 401(   R   R   RP   R  Rs   R  (   RE   R   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_early_return_with_data  s    c         c` s7   t    |  _ |  j d d t } | j   |  j Vd  S(   Ns   /close_detectionR  (   R   R  R   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_close_during_upload  s    
(	   RH   RI   RB   R   R   R  R  R  R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  Z  s   	$	t   BaseFlowControlHandlerc           B` sG   e  Z d    Z e j d    Z e j d    Z e j d    Z	 RS(   c         C` s   | |  _  d  |  _ g  |  _ d  S(   N(   R   RX   R@  t   methods(   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR     s    		c         c` sb   |  j  d  k	 r/ |  j j d | |  j  f  n  | |  _  |  j j |  z	 d  VWd  d  |  _  Xd  S(   Ns   entered method %s while in %s(   R@  RX   R   t   failR  R>   (   RE   R@  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt	   in_method  s    		c         c` s   |  j  j d  t j Vd  S(   NR  (   R  R>   R   t   moment(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s    c         c` s;   |  j  d   t j VWd  QX|  j t d |  j   d  S(   NR  R  (   R  R   R  RP   RY   R  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s    (
   RH   RI   R   t
   contextlibt   contextmanagerR  R   R   R  R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s   	t#   BaseStreamingRequestFlowControlTestc           B` s5   e  Z d    Z d   Z d   Z d   Z d   Z RS(   c         C` s   t  d d d t  S(   Nt
   chunk_sizei
   t   decompress_request(   RY   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   get_httpserver_options  s    c         C` s   t    S(   N(   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s    c      	   C` sZ   |  j  d d d d d } | j   |  j t | j  t d d d d d d	 g   d  S(
   NRL   R   t   abcdefghijklmnopqrstuvwxyzR@  RT  R  R  R  R  (   R   RQ  Rg   R   R   RY   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_flow_control_fixed_body  s    	
c      	   ` s   d d d g   t  j   f d    } |  j d d | d d } | j   |  j t | j  t d	 d
 d d d d g   d  S(   Nt   abcdt   efght   ijklc         3` s    x   D] } |  |  Vq Wd  S(   N(    (   RP   t   i(   t   chunks(    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   body_producer  s    RL   R  R@  RT  R  R  R  R  (   R   R   R   RQ  Rg   R   R   RY   (   RE   R  R   (    (   R  s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_flow_control_chunked_body  s    
c      
   C` s   t    } t j d d d |  } | j d  | j   | j   } |  j d d | d d d	 i d
 d 6} | j   |  j t	 | j
  t d d d d d d g   d  S(   Nt   modet   wt   fileobjR  RL   R   R@  RT  R   Rj  s   Content-EncodingR  R  R  R  (   R5   Rj  t   GzipFileRP   R   t   getvalueR   RQ  Rg   R   R   RY   (   RE   t   bytesiot	   gzip_filet   compressed_bodyR   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt!   test_flow_control_compressed_body  s    	

(   RH   RI   R  R  R  R  R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR    s
   					t(   DecoratedStreamingRequestFlowControlTestc           B` s   e  Z d    Z RS(   c         C` s/   d t  f d     Y} d | t d |   f g S(   Nt   DecoratedFlowControlHandlerc           B` s   e  Z e j d     Z RS(   c         s` s"   |  j  d   t j VWd  QXd  S(   NR  (   R  R   R  (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  	  s    (   RH   RI   R   R   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  	  s   RL   R   (   R  RY   (   RE   R  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB   	  s    (   RH   RI   RB   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  	  s   t%   NativeStreamingRequestFlowControlTestc           B` s   e  Z d    Z RS(   c         C` s/   d t  f d     Y} d | t d |   f g S(   Nt   NativeFlowControlHandlerc           B` s$   e  Z e e   e   d   d Z RS(   s   
            async def data_received(self, data):
                with self.in_method('data_received'):
                    import asyncio
                    await asyncio.sleep(0)
            R  (   RH   RI   R   t   globalst   localsR  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  	  s   RL   R   (   R  RY   (   RE   R  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB   	  s    (   RH   RI   RB   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  	  s   t   IncorrectContentLengthTestc           B` s#   e  Z d    Z d   Z d   Z RS(   c         ` s]   |    d  |  _ d t f   f d     Y} d t f   f d     Y} d | f d | f g S(   Nt   TooHighc           ` s   e  Z   f d    Z RS(   c         ` sG   |  j  d d  y |  j d  Wn t k
 rB } |   _   n Xd  S(   Ns   Content-LengthR  R:  (   R2  R   R   t   server_error(   RE   R   (   R   (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   /	  s    	(   RH   RI   RQ   (    (   R   (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  .	  s   t   TooLowc           ` s   e  Z   f d    Z RS(   c         ` sG   |  j  d d  y |  j d  Wn t k
 rB } |   _   n Xd  S(   Ns   Content-LengthR-  RO   (   R2  R   R   R  (   RE   R   (   R   (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   8	  s    	(   RH   RI   RQ   (    (   R   (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  7	  s   s   /highs   /low(   RX   R  R"   (   RE   R  R  (    (   R   s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB   )	  s    				c         C` sr   t  t d  D t  t d  . |  j t   |  j d d t Wd  QXWd  QXWd  QX|  j t |  j	  d  d  S(   Ns*   (Uncaught exception|Exception in callback)sS   (Cannot send error response after headers written|Failed to flush partial response)s   /hight   raise_errors0   Tried to write 40 bytes less than Content-Length(
   R   R   R   t   assertRaisesR   R   R   Rg   R   R  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_content_length_too_highC	  s    
%c         C` sr   t  t d  D t  t d  . |  j t   |  j d d t Wd  QXWd  QXWd  QX|  j t |  j	  d  d  S(   Ns*   (Uncaught exception|Exception in callback)sS   (Cannot send error response after headers written|Failed to flush partial response)s   /lowR  s,   Tried to write more data than Content-Length(
   R   R   R   R  R   R   R   Rg   R   R  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_content_length_too_lowP	  s    
%(   RH   RI   RB   R  R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  '	  s   		t   ClientCloseTestc           B` s'   e  Z d  e f d     YZ d   Z RS(   RM   c           B` s   e  Z d    Z RS(   c         C` sI   |  j  j j d  r8 |  j  j j j   |  j d  n |  j d  d  S(   Ns   HTTP/1RO   s   requires HTTP/1.x(   R   Rd   R  t
   connectionR   R   RP   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   `	  s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM   _	  s   c         C` sj   |  j  t t j f  L |  j d d t } | j d k rM |  j d  n  |  j | j	 d  Wd  QXd  S(   NRL   R  s   requires HTTP/1.xiW  (
   R  R   R   t   SkipTestR   R   R   t   skipTestRg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_client_closem	  s
    (   RH   RI   R"   RM   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  ^	  s   t   SignedValueTestc           B` s   e  Z d  Z i d d 6d d 6d d 6Z d   Z d   Z d	   Z d
   Z d   Z d   Z	 d   Z
 d   Z d   Z d   Z d   Z d   Z RS(   s   It's a secret to everybodyt	   asdfbasdfi    t   12312312i   t   2342342i   c         C` s   |  j    d S(   NiQ i    i 0* (   t   present(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   pasty	  s    c         C` s   d S(   Ni m|M(    (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  |	  s    c         C` s  t  t j d d d d d |  j } |  j | d  t  t j d d d d d |  j } |  j | d  t  t j d d d |  j } |  j | |  t t j d | d	 d d |  j } |  j | d  t t j d | d	 d d |  j } |  j | d  d  S(
   NR   R^   Rd   i   t   clocks<   dmFsdWU=|1300000000|31c934969f53e48164c50768b40cbd7e2daaaa4fi   se   2|1:0|10:1300000000|3:key|8:dmFsdWU=|3d4e60b996ff9c5d5788e333a0cba6f238a22c6c0f94788870e1a9ecd482e152Re   (   R,   R  t   SECRETR  Rg   R-   (   RE   t	   signed_v1t	   signed_v2t   signed_defaultt
   decoded_v1t
   decoded_v2(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_known_values	  s*    	c         C` s   t  t j d d d |  j } t  t j d d d |  j } t t j d | d |  j } |  j | d   t t j d | d |  j } |  j | d   d  S(   Nt   key1R^   R  t   key2(   R,   R  R  R  R-   t   assertIsRX   (   RE   t   signed1t   signed2t   decoded1t   decoded2(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_name_swap	  s    c         C` s~   t  t j d d d |  j } t t j d | d |  j } |  j | d  t t j d | d |  j } |  j | d   d  S(   NR  R^   R  (	   R,   R  R  R  R-   Rg   R  R  RX   (   RE   t   signedt   decoded_pastt   decoded_present(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_expired	  s    c         ` sh   d     f d   }   j  | d     j | d     j | d     j | d   d  S(   Nt@   3d4e60b996ff9c5d5788e333a0cba6f238a22c6c0f94788870e1a9ecd482e152c         ` s&   d t  t j d |   d   j k S(   NR^   R   R  (   R-   R  R  R  (   t   prefix(   RE   Rw   (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   validate	  s    s%   2|1:0|10:1300000000|3:key|8:dmFsdWU=|s%   2|1:1|10:1300000000|3:key|8:dmFsdWU=|s$   2|1:0|10:130000000|3:key|8:dmFsdWU=|s&   2|1:0|10:1300000000|3:keey|8:dmFsdWU=|(   Rs   t   assertFalse(   RE   R  (    (   RE   Rw   s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_payload_tampering	  s    c         ` s   d      f d   }  j  | d    j | d d    j | d    j | d    j | d    j | d	   d  S(
   Ns%   2|1:0|10:1300000000|3:key|8:dmFsdWU=|c         ` s&   d t  t j d   |  d  j k S(   NR^   R   R  (   R-   R  R  R  (   Rw   (   R  RE   (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  	  s    R  t   0i    t@   4d4e60b996ff9c5d5788e333a0cba6f238a22c6c0f94788870e1a9ecd482e152t@   3d4e60b996ff9c5d5788e333a0cba6f238a22c6c0f94788870e1a9ecd482e153t?   3d4e60b996ff9c5d5788e333a0cba6f238a22c6c0f94788870e1a9ecd482e15tA   3d4e60b996ff9c5d5788e333a0cba6f238a22c6c0f94788870e1a9ecd482e1538(   Rs   R  (   RE   R  (    (   R  RE   s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_signature_tampering	  s    	
	
	
	
	c         C` sV   d } t  t j d | d |  j } t t j d | d |  j } |  j | |  d  S(   Ns   R   R  (   R,   R  R  R  R-   Rg   (   RE   R^   R  t   decoded(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_non_ascii	  s    c         C` s\   d } t  t j d | d |  j d d } t t j d | d |  j } |  j | |  d  S(   Ns   R   R  RV   i    (   R,   R  t   SECRET_DICTR  R-   Rg   (   RE   R^   R  R  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt*   test_key_versioning_read_write_default_key	  s    			c         C` s\   d } t  t j d | d |  j d d } t t j d | d |  j } |  j | |  d  S(   Ns   R   R  RV   i   (   R,   R  R  R  R-   Rg   (   RE   R^   R  R  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt.   test_key_versioning_read_write_non_default_key	  s    			c         C` su   d } t  t j d | d |  j d d } t j j   } | j d  t | d | d |  j } |  j d  |  d  S(   Ns   R   R  RV   i    (	   R,   R  R  R  R   R   R-   Rg   RX   (   RE   R^   R  t   newkeysR  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_key_versioning_invalid_key	  s    		c         C` sJ   d } t  t j d | d |  j d d } t |  } |  j d |  d  S(   Ns   R   R  RV   i   (   R,   R  R  R  R.   Rg   (   RE   R^   R  RV   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_key_version_retrieval	  s    		(   RH   RI   R  R  R  R  R  R  R  R  R  R  R  R  R  R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  u	  s   					
								t   XSRFTestc           B` s   e  Z d  e f d     YZ d   Z d   Z d d d  Z d d  Z d   Z	 d   Z
 d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   RM   c           B` s   e  Z d    Z d   Z RS(   c         C` s9   t  |  j d d   } | |  j d <|  j |  j  d  S(   NRd   R-  t   xsrf_cookie_version(   R  R  RT   RP   R  (   RE   Rd   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   
  s    c         C` s   |  j  d  d  S(   NR:  (   RP   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  
  s    (   RH   RI   RQ   R  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM   

  s   	c         C` s   t  d t  S(   NR  (   RY   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRC   
  s    c         C` s&   t  t |   j   |  j   |  _ d  S(   N(   RJ  R  t   setUpt	   get_tokenR  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  
  s    c         C` sf   | d  k	 r |  j |  } n d  } |  j | d  k r< d n d | d | } | j   t | j  S(   NRL   s   /?version=%dR   (   RX   t   cookie_headersR   RQ  R	   R   (   RE   t	   old_tokenRd   R   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  
  s    	
c         C` s'   | d  k r |  j } n  i d | d 6S(   Ns   _xsrf=R   (   RX   R  (   RE   t   token(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  '
  s    c      
   C` sH   t  t d    |  j d d d d d } Wd  QX|  j | j d  d  S(   Ns   .*'_xsrf' argument missingRL   R@  RT  R   Rc  i  (   R   R   R   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_xsrf_fail_no_token,
  s    !c         C` s]   t  t d  5 |  j d d d d t j t d |  j   } Wd  QX|  j | j d  d  S(   Ns!   .*XSRF cookie does not match POSTRL   R@  RT  R   t   _xsrfi  (	   R   R   R   Rd  Re  RY   R  Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_xsrf_fail_body_no_cookie1
  s
    $c         C` sf   t  t d  > |  j d d d d |  j   d t j t d d   } Wd  QX|  j | j d	  d  S(
   Ns%   .*'_xsrf' argument has invalid formatRL   R@  RT  R   R   R  s   3|i  (	   R   R   R   R  Rd  Re  RY   Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt&   test_xsrf_fail_argument_invalid_format8
  s    !c         C` so   t  t d  G |  j d d d d |  j d d  d t j t d	 |  j   } Wd  QX|  j | j	 d
  d  S(   Ns!   .*XSRF cookie does not match POSTRL   R@  RT  R   R  s   3|R   R  i  (
   R   R   R   R  Rd  Re  RY   R  Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt$   test_xsrf_fail_cookie_invalid_format@
  s    $c         C` sT   t  t d  , |  j d d d d d d |  j   } Wd  QX|  j | j d  d  S(	   Ns   .*'_xsrf' argument missingRL   R@  RT  R   Rc  R   i  (   R   R   R   R  Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_xsrf_fail_cookie_no_bodyH
  s
    c      
   C` sV   |  j  d d d d t j t d d   d |  j d d  } |  j | j d	  d  S(
   NRL   R@  RT  R   R  t   deadbeefR   R  i   (   R   Rd  Re  RY   R  Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_xsrf_success_short_tokenO
  s
    c      
   C` sV   |  j  d d d d t j t d d   d |  j d d  } |  j | j d	  d  S(
   NRL   R@  RT  R   R  t   xoxoR   R  i   (   R   Rd  Re  RY   R  Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_xsrf_success_non_hex_tokenV
  s
    c      	   C` sS   |  j  d d d d t j t d |  j   d |  j   } |  j | j d  d  S(   NRL   R@  RT  R   R  R   i   (   R   Rd  Re  RY   R  R  Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_xsrf_success_post_body]
  s
    c         C` sW   |  j  d t j t d |  j   d d d d d |  j   } |  j | j d  d  S(	   Ns   /?R  R@  RT  R   Rc  R   i   (   R   Rd  Re  RY   R  R  Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_xsrf_success_query_stringd
  s
    c         C` sQ   |  j  d d d d d d t i |  j d 6|  j    } |  j | j d  d  S(	   NRL   R@  RT  R   Rc  R   s   X-Xsrftokeni   (   R   RY   R  R  Rg   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_xsrf_success_headerk
  s    c         C` sS   d } t    } x' t |  D] } | j |  j    q W|  j t |  |  d  S(   Ni
   (   R  t   rangeR  R  Rg   R   (   RE   t
   NUM_TOKENSt   tokensR  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_distinct_tokensq
  s
    	c         C` s  |  j    } xf |  j | f D]U } |  j d d d d t j t d |   d |  j |  } |  j | j d  q Wx |  j | f | |  j f f D]q \ } } t	 t
 d  A |  j d d d d t j t d |   d |  j |  } Wd  QX|  j | j d	  q Wd  S(
   NRL   R@  RT  R   R  R   i   s!   .*XSRF cookie does not match POSTi  (   R  R  R   Rd  Re  RY   R  Rg   R   R   R   (   RE   t   token2R  R   t   cookie_tokent
   body_token(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_cross_usery
  s    c      
   C` s   |  j  } t | g  } x t d  D]t } |  j |  } | j |  |  j d d d d t j t d |  j    d |  j	 |  } |  j
 | j d  q% W|  j
 t |  d	  d  S(
   Ni   RL   R@  RT  R   R  R   i   i   (   R  R  R  R  R  R   Rd  Re  RY   R  Rg   R   R   (   RE   R  t   tokens_seenR  R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_refresh_token
  s    	c      
   C` s$  |  j  |  j d d  |  j d d   |  j d d  } x3 t d  D]% } |  j |  j | d d |  qG W|  j |  } |  j  | |  |  j  | |  j |   xu | | f | | f f D][ \ } } |  j d d d d t j t d |   d	 |  j |  } |  j | j	 d
  q Wd  S(   NRd   i   i   RL   R@  RT  R   R  R   i   (
   t   assertNotEqualR  R  Rg   R   Rd  Re  RY   R  R   (   RE   t   v1_tokenR  t   v2_tokenR  R  R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_versioning
  s    #N(   RH   RI   R"   RM   RC   R  RX   R  R  R  R  R	  R
  R  R  R  R  R  R  R  R  R  R   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR  
  s&   															t   XSRFCookieKwargsTestc           B` s0   e  Z d  e f d     YZ d   Z d   Z RS(   RM   c           B` s   e  Z d    Z RS(   c         C` s   |  j  |  j  d  S(   N(   RP   R  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   
  s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM   
  s   c         C` s   t  d t d t  d t   S(   NR  t   xsrf_cookie_kwargsR   (   RY   R   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRC   
  s    c         C` s0   |  j  d  } |  j d | j d j    d  S(   NRL   s	   httponly;s
   Set-Cookie(   R   R  R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_xsrf_httponly
  s    (   RH   RI   R"   RM   RC   R#  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR!  
  s   	t   FinishExceptionTestc           B` s'   e  Z d  e f d     YZ d   Z RS(   RM   c           B` s   e  Z d    Z RS(   c         C` sX   |  j  d  |  j d d  |  j d d  r> t d   n |  j d  t    d  S(   Ni  s   WWW-Authenticates   Basic realm="something"t   finish_valueRc  s   authentication required(   R  R2  R  R0   RP   (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   
  s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM   
  s   c         C` sl   xe d d g D]W } |  j  |  } |  j | j d  |  j d | j j d   |  j d | j  q Wd  S(   NRL   s   /?finish_value=1i  s   Basic realm="something"s   WWW-Authenticates   authentication required(   R   Rg   R   R   RQ   R   (   RE   t   uR   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_finish_exception
  s    	(   RH   RI   R"   RM   R'  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR$  
  s   
t   DecoratorTestc           B` s#   e  Z d    Z d   Z d   Z RS(   c         C` sB   d t  f d     Y} d t  f d     Y} d | f d | f g S(   Nt   RemoveSlashHandlerc           B` s   e  Z e d     Z RS(   c         S` s   d  S(   N(    (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   
  s    (   RH   RI   R2   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR)  
  s   t   AddSlashHandlerc           B` s   e  Z e d     Z RS(   c         S` s   d  S(   N(    (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   
  s    (   RH   RI   R3   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR*  
  s   s   /removeslash/s	   /addslash(   R"   (   RE   R)  R*  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB   
  s    	c         C` s   |  j  d d t } |  j | j d  |  j | j d d  |  j  d d t } |  j | j d  |  j | j d d  d  S(   Ns   /removeslash/R   i-  R   s   /removeslashs   /removeslash/?foo=bars   /removeslash?foo=bar(   R   R   Rg   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_removeslash
  s    c         C` s   |  j  d d t } |  j | j d  |  j | j d d  |  j  d d t } |  j | j d  |  j | j d d  d  S(   Ns	   /addslashR   i-  R   s
   /addslash/s   /addslash?foo=bars   /addslash/?foo=bar(   R   R   Rg   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_addslash
  s    (   RH   RI   RB   R+  R,  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR(  
  s   			t	   CacheTestc           B` sk   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z RS(   c         C` s#   d t  f d     Y} d | f g S(   Nt   EtagHandlerc           B` s   e  Z d    Z d   Z RS(   c         S` s   |  j  |  d  S(   N(   RP   (   RE   t   computed_etag(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ     s    c         S` s   |  j  d S(   Ni    (   t   _write_buffer(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   compute_etag  s    (   RH   RI   RQ   R1  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR.    s   	s
   /etag/(.*)(   R"   (   RE   R.  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB     s    c         C` s#   d } d } |  j  | | d  d  S(   Ns   "xyzzy"t   *i0  (   t
   _test_etag(   RE   R/  t   etags(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_wildcard_etag  s    c         C` s#   d } d } |  j  | | d  d  S(   Ns   "xyzzy"i0  (   R3  (   RE   R/  R4  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_strong_etag_match  s    c         C` s#   d } d } |  j  | | d  d  S(   Ns   "xyzzy1"s   "xyzzy1", "xyzzy2"i0  (   R3  (   RE   R/  R4  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_multiple_strong_etag_match  s    c         C` s#   d } d } |  j  | | d  d  S(   Ns   "xyzzy"s   "xyzzy1"i   (   R3  (   RE   R/  R4  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_strong_etag_not_match  s    c         C` s#   d } d } |  j  | | d  d  S(   Ns   "xyzzy"s   "xyzzy1", "xyzzy2"i   (   R3  (   RE   R/  R4  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt#   test_multiple_strong_etag_not_match"  s    c         C` s#   d } d } |  j  | | d  d  S(   Ns   "xyzzy1"s
   W/"xyzzy1"i0  (   R3  (   RE   R/  R4  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_weak_etag_match'  s    c         C` s#   d } d } |  j  | | d  d  S(   Ns   "xyzzy2"s   W/"xyzzy1", W/"xyzzy2"i0  (   R3  (   RE   R/  R4  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_multiple_weak_etag_match,  s    c         C` s#   d } d } |  j  | | d  d  S(   Ns   "xyzzy2"s
   W/"xyzzy1"i   (   R3  (   RE   R/  R4  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_weak_etag_not_match1  s    c         C` s#   d } d } |  j  | | d  d  S(   Ns   "xyzzy3"s   W/"xyzzy1", W/"xyzzy2"i   (   R3  (   RE   R/  R4  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt!   test_multiple_weak_etag_not_match6  s    c         C` s7   |  j  d | d i | d 6} |  j | j |  d  S(   Ns   /etag/R   s   If-None-Match(   R   Rg   R   (   RE   R/  R4  Ru  R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR3  ;  s    
(   RH   RI   RB   R5  R6  R7  R8  R9  R:  R;  R<  R=  R3  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR-     s   										t   RequestSummaryTestc           B` s'   e  Z d  e f d     YZ d   Z RS(   RM   c           B` s   e  Z d    Z RS(   c         C` s#   d  |  j _ |  j |  j    d  S(   N(   RX   R   t	   remote_ipR   R  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ   F  s    (   RH   RI   RQ   (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRM   E  s   c         C` s&   |  j  d  } |  j | j d  d  S(   NRL   s   GET / (None)(   R   Rg   R   (   RE   R  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_missing_remote_ipM  s    (   RH   RI   R"   RM   R@  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyR>  C  s   t   HTTPErrorTestc           B` s   e  Z d    Z RS(   c         C` sa   t  d d d } t j |  } |  j | |  |  j | j | j  |  j | j | j  d  S(   Ni  R
  s   Go away(   R%   R   t   assertIsNotRg   Ru  R
  (   RE   R   t   e2(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt	   test_copyS  s
    (   RH   RI   RD  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRA  R  s   t   ApplicationTestc           B` s   e  Z d    Z RS(   c         C` s/   t  g   } | j d d d } | j   d  S(   Ni    t   addresss	   127.0.0.1(   R!   t   listenR   (   RE   RD   t   server(    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_listen\  s    (   RH   RI   RI  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRE  [  s   t   URLSpecReverseTestc           B` s#   e  Z d    Z d   Z d   Z RS(   c         C` sB   |  j  d t d d   j    |  j  d t d d   j    d  S(   Ns   /favicon.icos   /favicon\.icos   ^/favicon\.ico$(   Rg   R*   RX   t   reverse(   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_reversec  s    c         C` sh   d g } xX | D]P } t  | d   } y' | j   } |  j d | | f  Wq t k
 r_ q Xq Wd  S(   Ns   ^/api/v\d+/foo/(\w+)$s<   did not get expected exception when reversing %s. result: %s(   R*   RX   RK  R  R;  (   RE   t   pathsR7   t   url_specR  (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_non_reversibleg  s    		c         C` s&   |  j  d t d d   j d   d  S(   Ns   /api/v1/foo/bars   ^/api/v1/foo/(\w+)$Rc   (   Rg   R*   RX   RK  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_reverse_argumentsy  s    	(   RH   RI   RL  RO  RP  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRJ  b  s   		t   RedirectHandlerTestc           B` s5   e  Z d    Z d   Z d   Z d   Z d   Z RS(   c         C` s=   d t  i d d 6f d t  i d d 6f d t  i d d 6f g S(   Ns   /srcs   /dstR*   s   /src2s   /dst2?foo=bars   /(.*?)/(.*?)/(.*)s   /{1}/{0}/{2}(   RO  (   RE   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRB     s    c         C` sC   |  j  d d t } |  j | j d  |  j | j d d  d  S(   Ns   /srcR   i-  R   s   /dst(   R   R   Rg   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_basic_redirect  s    c         C` sC   |  j  d d t } |  j | j d  |  j | j d d  d  S(   Ns   /src?foo=barR   i-  R   s   /dst?foo=bar(   R   R   Rg   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_redirect_with_argument  s    c         C` sC   |  j  d d t } |  j | j d  |  j | j d d  d  S(   Ns   /src2?foo2=bar2R   i-  R   s   /dst2?foo=bar&foo2=bar2(   R   R   Rg   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt%   test_redirect_with_appending_argument  s    c         C` sC   |  j  d d t } |  j | j d  |  j | j d d  d  S(   Ns   /a/b/cR   i-  R   s   /b/a/c(   R   R   Rg   R   R   (   RE   R   (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   test_redirect_pattern  s    (   RH   RI   RB   RR  RS  RT  RU  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyRQ  ~  s
   				(   t
   __future__R    R   R   t   tornado.concurrentR   t   tornadoR   t   tornado.escapeR   R   R   R   R	   R
   t   tornado.httpclientR   t   tornado.httputilR   t   tornado.ioloopR   t   tornado.iostreamR   R   t   tornado.locksR   t   tornado.logR   R   t   tornado.simple_httpclientR   t   tornado.templateR   t   tornado.testingR   R   R   R   t   tornado.test.utilR   R   R   R   t   tornado.utilR   R   R   R    t   tornado.webR!   R"   R#   R$   RO  R%   R&   R'   R(   R)   R*   R+   R,   R-   R.   R/   R0   R1   R2   R3   R4   Ro   R  R   R   t   email.utilsR   Rj  t   ioR5   R  R   R6   Rq   R   t   urllib.parset   parseRd  t   urllibR=   R<   R@   RA   RK   RN   RR   t   TestCaseRa   Rz   R   R   R   R   R   R   R   R   R  R  R$  R&  R(  R)  R0  R6  R9  R<  RA  RD  Rm  Rq  R{  R  R  R  R  R  R  R  R  R  R	  R  R  R  R  R-  R1  R   R5  R6  RC  RE  RL  RP  RW  R]  Ro  Rt  R{  R  R  R  R  R  R  R  R  t   objectR  R  R  R  R  R  R  R!  R$  R(  R-  R>  RA  RE  RJ  RQ  (    (    (    s4   lib/python2.7/site-packages/tornado/test/web_test.pyt   <module>   s>  ."""			-,$*,
A +B&51(T` 1
6#B	