ó
`¾Tc           @   sß   d  Z  d d l Z d d l m Z d d l m Z d d l m Z m Z d d l	 m
 Z
 d d l m Z m Z d d l m Z m Z m Z d d	 l m Z d d
 l m Z m Z m Z m Z d e f d „  ƒ  YZ d „  Z d S(   s¶   
    werkzeug.testsuite.wsgi
    ~~~~~~~~~~~~~~~~~~~~~~~

    Tests the WSGI utilities.

    :copyright: (c) 2014 by Armin Ronacher.
    :license: BSD, see LICENSE for more details.
iÿÿÿÿN(   t   path(   t   closing(   t   WerkzeugTestCaset   get_temporary_directory(   t   BaseResponse(   t
   BadRequestt   ClientDisconnected(   t   Clientt   create_environt   run_wsgi_app(   t   wsgi(   t   StringIOt   BytesIOt   NativeStringIOt	   to_nativet   WSGIUtilsTestCasec           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(   c         C   s1   t  j d  i  ƒ } t | j d ƒ ƒ s- t ‚ d  S(   Nt   foo(   R
   t   SharedDataMiddlewaret   Nonet   callablet   get_file_loadert   AssertionError(   t   selft   app(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt)   test_shareddatamiddleware_get_file_loader   s    c         C   sÀ  d „  } t  ƒ  } t t j | t d d ƒ ƒ d ƒ  } | j d ƒ Wd  QXt j | i t j t j t	 ƒ d ƒ d 6t j t j t	 ƒ d ƒ d 6d d 6| d 6ƒ } xv d D]n } t
 | t | ƒ ƒ \ } } } |  j | d ƒ t | ƒ  } d j | ƒ j ƒ  }	 Wd  QX|  j |	 d ƒ q« Wt
 | t d ƒ ƒ \ } } } t | ƒ  } d j | ƒ }
 Wd  QX|  j d |
 ƒ t
 | t d ƒ ƒ \ } } } |  j | d ƒ |  j d j | ƒ j ƒ  d ƒ d  S(   Nc         s   s   | d d g ƒ d Vd  S(   Ns   404 NOT FOUNDs   Content-Types
   text/plains	   NOT FOUND(   s   Content-Types
   text/plain(    (   t   environt   start_response(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   null_application   s    u   Ã¤Ã¶Ã¼s   utf-8t   wu   FOUNDt   rest   /s   /sourcess   werkzeug.debugt   shareds   /pkgs   /foos	   /test.txts   /sources/test.txts   /foo/Ã¤Ã¶Ã¼s   200 OKt    t   FOUNDs   /pkg/debugger.jss   $(function() {s   /missings   404 NOT FOUNDs	   NOT FOUND(   s   werkzeug.debugR   (   s	   /test.txts   /sources/test.txts   /foo/Ã¤Ã¶Ã¼(   R   t   openR    t   joinR   t   writeR
   R   t   dirnamet   __file__R	   R   t   assert_equalR   t   stript	   assert_in(   R   R   t   test_dirt	   test_fileR   t   pt   app_itert   statust   headerst   datat   contents(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   test_shared_data_middleware   s0    		'c         C   sZ   i d d 6d d 6d d 6} |  j  t j | ƒ d ƒ |  j  t j t d d ƒ ƒ d ƒ d  S(	   Ns   example.orgt   HTTP_X_FORWARDED_HOSTt   bullshitt   SERVER_NAMEs   ignore me dammitt	   HOST_NAMER   s   http://example.org(   R'   R
   t   get_hostR   (   R   t   env(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   test_get_hostA   s    
c         C   sZ   i d d 6d d 6d d 6} |  j  t j | ƒ d ƒ |  j  t j t d d	 ƒ ƒ d ƒ d  S(
   Ns   example.com, example.orgR3   R4   R5   s   ignore me dammitR6   s   example.comR   s   http://example.com(   R'   R
   R7   R   (   R   R8   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt    test_get_host_multiple_forwardedI   s    
c         C   s`   i d d 6d d 6d d 6} |  j  t j | d d g ƒd ƒ |  j t t j | d d	 g ƒd  S(
   Ns   example.orgR3   R4   R5   s   ignore me dammitR6   t   trusted_hostss   .example.orgs   example.com(   R'   R
   R7   t   assert_raisesR   (   R   R8   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   test_get_host_validationQ   s    
c         C   sZ   d „  } t  t j | ƒ t ƒ } | j d ƒ } |  j | j d ƒ |  j | j d ƒ d  S(   Nc         S   s
   t  d ƒ S(   Nt   Test(   R   (   R   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyR   Z   s    R   iÈ   R>   (   R   R
   t	   responderR   t   getR'   t   status_codeR0   (   R   R   t   clientt   response(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   test_responderY   s
    	c            sÂ   i d d 6d d 6} ‡  ‡ f d †  } | j  ƒ  ‰ ‡ f d †  } | d d ƒ ˆ  j | ƒ  d ƒ | d d	 ƒ ˆ  j | ƒ  d
 ƒ | d d ƒ ˆ  j | ƒ  d ƒ | d d ƒ ˆ  j | ƒ  ƒ d  S(   Ns   /foot   SCRIPT_NAMEs   /a/b///ct	   PATH_INFOc            s6   ˆ  j  ˆ j d ƒ |  ƒ ˆ  j  ˆ j d ƒ | ƒ d  S(   NRE   RF   (   R'   R@   (   t   script_namet	   path_info(   R   R8   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   assert_tuplee   s    c              s   t  j ˆ  ƒ S(   N(   R
   t   pop_path_info(    (   R8   (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   <lambda>i   s    t   as   /foo/as   /b///ct   bs   /foo/a/bs   ///ct   cs   /foo/a/b///cR    (   t   copyR'   t   assert_is_none(   R   t   original_envRI   t   pop(    (   R   R8   s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   test_pop_path_infoa   s    c         C   sˆ   i d d 6d d 6} |  j  t j | ƒ d ƒ |  j  t j | ƒ d ƒ |  j  t j | d d  ƒd ƒ |  j  t j | d d  ƒd ƒ d  S(   Ns   /fooRE   s
   /aaa/b///cRF   t   aaat   charset(   R'   R
   t   peek_path_infoR   (   R   R8   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   test_peek_path_infot   s    
c         C   s•   t  d d ƒ } |  j t j | ƒ d ƒ |  j t j | d d  ƒd j d ƒ ƒ |  j t j | ƒ d ƒ |  j t j | d d  ƒd j d ƒ ƒ d  S(   Nu   /â˜ƒu   http://example.com/â˜„/RU   s   utf-8u   /â˜„(   R   R'   R
   t   get_path_infoR   t   encodet   get_script_name(   R   R8   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt'   test_path_info_and_script_name_fetching   s
    (c         C   s/   t  d ƒ } t j | ƒ } |  j | d ƒ d  S(   Nu	   /?â˜ƒ=â˜„s   %E2%98%83=%E2%98%84(   R   R
   t   get_query_stringt   assert_strict_equal(   R   R8   t   qs(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   test_query_string_fetching†   s    c         C   s÷  d t  j f d „  ƒ  Y} t d ƒ } | | d ƒ } |  j | j ƒ  d ƒ |  j t | j ƒ t d ƒ } | | d ƒ } |  j | j ƒ  d ƒ |  j | j d ƒ d ƒ |  j | j ƒ  d ƒ |  j | j d ƒ d	 ƒ |  j | j ƒ  d
 ƒ |  j | j d ƒ d ƒ |  j | j ƒ  d ƒ |  j t | j ƒ t d ƒ } t  j | d ƒ } |  j | j ƒ  d ƒ |  j | j ƒ  d ƒ t d ƒ } t  j | d ƒ } |  j | j	 ƒ  d d g ƒ t d ƒ } t  j | d ƒ } |  j | j	 d
 ƒ d g ƒ |  j | j	 d
 ƒ d g ƒ |  j | j	 ƒ  d d g ƒ t d ƒ } t  j | d ƒ } |  j | j d ƒ d ƒ t d ƒ } t  j | d ƒ } |  j | j	 d ƒ d d g ƒ t d ƒ } t  j | d ƒ } |  j | j d ƒ d ƒ |  j | j d ƒ d	 ƒ |  j | j ƒ  d ƒ |  j | j ƒ  d ƒ t d ƒ } t  j | d ƒ } |  j | j d ƒ d ƒ t d ƒ } t  j | d ƒ } |  j | j d ƒ d ƒ t
 d ƒ } t  j | d ƒ } |  j | j d ƒ d ƒ t
 d ƒ } t  j | d ƒ } |  j t | ƒ d d g ƒ d  S(   Nt   RaisingLimitedStreamc           B   s   e  Z d  „  Z RS(   c         S   s   t  d ƒ ‚ d  S(   Ns   input stream exhausted(   R   (   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   on_exhausted   s    (   t   __name__t
   __module__Ra   (    (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyR`   Œ   s   t   123456i   t   123i    i   t   1t   2i   t   3s   123456
abcdefgi	   s   123456
t   abt   12t   34s   56
id   R    iÿÿÿÿu   123456u    u   123
456
i   u   123
u   456
(   R
   t   LimitedStreamR   R]   t   readR<   R   t   tellt   readlinet	   readlinesR   t   list(   R   R`   t   iot   stream(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   test_limited_stream‹   sf    c         C   sŽ   t  d ƒ } t j | d ƒ } |  j t ƒ  | j ƒ  Wd  QXt  d d ƒ } | j ƒ  t j | d ƒ } |  j t ƒ  | j ƒ  Wd  QXd  S(   Ns   A bit of contentiÿ   t   x(   R   R
   Rl   R<   R   Rm   t   close(   R   Rr   Rs   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt!   test_limited_stream_disconnectionÎ   s    
c         C   sE  t  j d d ƒ } |  j | d ƒ t  j d d ƒ } |  j | d ƒ t  j d d ƒ } |  j | d ƒ t  j d d ƒ } |  j | d ƒ t  j d d	 ƒ } |  j | d	 ƒ t  j d
 d ƒ } |  j | d	 ƒ t d	 d ƒ } t  j | d ƒ } |  j | d	 ƒ t  j d d ƒ } |  j | ƒ t  j d d d t ƒ} |  j | ƒ d  S(   Ns   http://example.com/apps
   /app/hellou   /hellos   https://example.com/app/hellos   http://example.com/app/s   https://example.com/appu   /u   http://â˜ƒ.net/u
   /fÃ¶Ã¶bÃ¤ru   http://â˜ƒ.net/xu   http://â˜ƒ.net/x/fÃ¶Ã¶bÃ¤ru   http://â˜ƒ.net/x/s   https://example.com/a/hellot   collapse_http_schemes(   R
   t   extract_path_infoR'   R   RP   t   False(   R   Ru   R8   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   test_path_info_extractionÝ   s2    										c         C   s`   |  j  t j i d d 6d d 6d d 6ƒ d ƒ |  j  t j i d d 6d d 6d d 6ƒ d ƒ d  S(	   Ns   foobar.example.comR5   t   https   wsgi.url_schemet   80t   SERVER_PORTt   81s   foobar.example.com:81(   R'   R
   R7   (   R   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   test_get_host_fallbackú   s    

c         C   s6   t  ƒ  } d | d <t j | ƒ } |  j | d ƒ d  S(   Ns   foo=bar&baz=blah&meh=Ït   QUERY_STRINGu*   http://localhost/?foo=bar&baz=blah&meh=ï¿½(   R   R
   t   get_current_urlR]   (   R   R8   t   rv(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   test_get_current_url_unicode  s
    	
	c         C   s«   d } t  | ƒ } t t j | d t | ƒ d d ƒƒ } |  j | d d d d g ƒ d	 } t  | ƒ } t t j | d t | ƒ d d
 ƒƒ } |  j | d d d g ƒ d  S(   Ns+   abcdef
ghijkl
mnopqrstuvwxyz
ABCDEFGHIJKt   limitt   buffer_sizei   s   abcdef
s   ghijkl
s   mnopqrstuvwxyz
t   ABCDEFGHIJKs;   abc
This line is broken by the buffer length.
Foo bar bazi   s   abc
s+   This line is broken by the buffer length.
s   Foo bar baz(   R   Rq   R
   t   make_line_itert   lenR'   (   R   R0   t   test_streamt   lines(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   test_multi_part_line_breaks  s    c         C   s«   d } t  | ƒ } t t j | d t | ƒ d d ƒƒ } |  j | d d d d g ƒ d	 } t  | ƒ } t t j | d t | ƒ d d
 ƒƒ } |  j | d d d g ƒ d  S(   Ns+   abcdef
ghijkl
mnopqrstuvwxyz
ABCDEFGHIJKR…   R†   i   s   abcdef
s   ghijkl
s   mnopqrstuvwxyz
R‡   s;   abc
This line is broken by the buffer length.
Foo bar bazi   s   abc
s+   This line is broken by the buffer length.
s   Foo bar baz(   R   Rq   R
   Rˆ   R‰   R'   (   R   R0   RŠ   R‹   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt!   test_multi_part_line_breaks_bytes  s    c         C   sp   d } xc t  d d ƒ D]R } t | ƒ } t t j | d t | ƒ d d ƒƒ } |  j | d d d	 g ƒ q Wd  S(
   Ns   abcdef
ghii   i
   R…   R†   i   s   abcs   def
t   ghi(   t   rangeR   Rq   R
   Rˆ   R‰   R'   (   R   R0   Ru   RŠ   R‹   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt'   test_multi_part_line_breaks_problematic-  s    c         C   sD   d d d g } t  t j | ƒ ƒ } |  j | d d d d g ƒ d  S(   Ns   abcdef
ghis   jkl
mnopqrstuvwxyzs   
ABCDEFGHIJKs   abcdef
s   ghijkl
s   mnopqrstuvwxyz
R‡   (   Rq   R
   Rˆ   R'   (   R   R0   R‹   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt%   test_iter_functions_support_iterators5  s    c         C   sŸ   d d d g } t  t j | d ƒ ƒ } |  j | d d d d g ƒ d } t | ƒ } t  t j | d d	 t | ƒ d
 d ƒƒ } |  j | d d d d g ƒ d  S(   Nu
   abcdefXghiu   jklXmnopqrstuvwxyzXu   ABCDEFGHIJKt   Xu   abcdefu   ghijklu   mnopqrstuvwxyzu(   abcdefXghijklXmnopqrstuvwxyzXABCDEFGHIJKR…   R†   i   (   Rq   R
   t   make_chunk_iterR'   R   R‰   (   R   R0   Rƒ   RŠ   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   test_make_chunk_iter;  s    
c         C   sŸ   d d d g } t  t j | d ƒ ƒ } |  j | d d d d g ƒ d } t | ƒ } t  t j | d d	 t | ƒ d
 d ƒƒ } |  j | d d d d g ƒ d  S(   Nt
   abcdefXghit   jklXmnopqrstuvwxyzXR‡   R’   t   abcdeft   ghijklt   mnopqrstuvwxyzt(   abcdefXghijklXmnopqrstuvwxyzXABCDEFGHIJKR…   R†   i   (   Rq   R
   R“   R'   R   R‰   (   R   R0   Rƒ   RŠ   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   test_make_chunk_iter_bytesH  s    
c         C   sg   d } xZ t  d d ƒ D]I } t t j t | ƒ d t | ƒ d d ƒƒ } |  j | d d g ƒ q Wd  S(   Ns   1234567890
1234567890
i   i   R…   R†   i   s   1234567890
(   R   Rq   R
   Rˆ   R   R‰   R'   (   R   R0   t   bufsizeR‹   (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   test_lines_longer_buffer_sizeU  s
    !(   Rb   Rc   R   R2   R9   R:   R=   RD   RS   RW   R[   R_   Rt   Rw   R{   R€   R„   RŒ   R   R   R‘   R”   R›   R   (    (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyR      s,   		#									C										c          C   s&   t  j ƒ  }  |  j t  j t ƒ ƒ |  S(   N(   t   unittestt	   TestSuitet   addTestt	   makeSuiteR   (   t   suite(    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyR¢   ]  s    (   t   __doc__Rž   t   osR    t
   contextlibR   t   werkzeug.testsuiteR   R   t   werkzeug.wrappersR   t   werkzeug.exceptionsR   R   t   werkzeug.testR   R   R	   t   werkzeugR
   t   werkzeug._compatR   R   R   R   R   R¢   (    (    (    s]   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/wsgi.pyt   <module>
   s   "ÿ F