ó
`¾Tc           @   sÙ   d  Z  d d l Z d d l m Z d d l m Z d d l m Z d d l m	 Z	 m
 Z
 d d l m Z m Z d d l m Z d d	 l m Z e j d
 „  ƒ Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d S(   s¹   
    werkzeug.testsuite.fixers
    ~~~~~~~~~~~~~~~~~~~~~~~~~

    Server / Browser fixers.

    :copyright: (c) 2014 by Armin Ronacher.
    :license: BSD, see LICENSE for more details.
iÿÿÿÿN(   t   WerkzeugTestCase(   t   ResponseCacheControl(   t   parse_cache_control_header(   t   create_environt   Client(   t   Requestt   Response(   t   fixers(   t   redirectc         C   s2   t  d |  j j d d ƒ |  j j d d ƒ f ƒ S(   Ns   PATH_INFO: %s
SCRIPT_NAME: %st	   PATH_INFOt    t   SCRIPT_NAME(   R   t   environt   get(   t   request(    (    sg   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/contrib/fixers.pyt   path_check_app   s    t   ServerFixerTestCasec           B   s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c      
   C   sV   t  j t ƒ } t j | t t ƒ  d d d d d d ƒƒ } |  j | j ƒ  d ƒ d  S(   NR   s   /fooR	   s   /bart   SERVER_SOFTWAREs   lighttpd/1.4.27s!   PATH_INFO: /foo/bar
SCRIPT_NAME: (	   R   t
   CGIRootFixR   R   t   from_appt   dictR   t   assert_equalt   get_data(   t   selft   appt   response(    (    sg   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/contrib/fixers.pyt   test_cgi_root_fix!   s    c         C   sV   t  j t d d ƒ} t j | t t ƒ  d d d d ƒƒ } |  j | j ƒ  d ƒ d  S(   Nt   app_roots
   /baz/poop/R   s   /fooR	   s   /bars)   PATH_INFO: /foo/bar
SCRIPT_NAME: baz/poop(	   R   R   R   R   R   R   R   R   R   (   R   R   R   (    (    sg   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/contrib/fixers.pyt!   test_cgi_root_fix_custom_app_root+   s
    c         C   sq   t  j t ƒ } x[ d
 D]S } t t ƒ  d d d d ƒ} d | | <t j | | ƒ } |  j | j ƒ  d	 ƒ q Wd  S(   Nt   REQUEST_URIt   REQUEST_URLt   UNENCODED_URLR   s   /testR	   s   /?????s   /test/foo%25bar?drop=thiss&   PATH_INFO: /foo%bar
SCRIPT_NAME: /test(   R   R   R   (	   R   t   PathInfoFromRequestUriFixR   R   R   R   R   R   R   (   R   R   t   keyt   envR   (    (    sg   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/contrib/fixers.pyt#   test_path_info_from_request_uri_fix3   s    
c         C   sÃ   t  j d „  ƒ } t j | d d ƒ} t t ƒ  d d d d d d	 d
 d d d ƒ} t j | | ƒ } |  j | j	 ƒ  d ƒ t
 d ƒ } t j | | ƒ } | j | ƒ } | d d k s¿ t ‚ d  S(   Nc         S   s   t  d |  j |  j d f ƒ S(   Ns   %s|%st	   HTTP_HOST(   R   t   remote_addrR   (   R   (    (    sg   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/contrib/fixers.pyR   <   s    t   num_proxiesi   t   HTTP_X_FORWARDED_PROTOt   httpst   HTTP_X_FORWARDED_HOSTs   example.comt   HTTP_X_FORWARDED_FORs   1.2.3.4, 5.6.7.8t   REMOTE_ADDRs	   127.0.0.1R$   t   fakes   1.2.3.4|example.coms   /foo/bar.hmlt   Locations   https://example.com/foo/bar.hml(   R   t   applicationR   t   ProxyFixR   R   R   R   R   R   R   t   get_wsgi_headerst   AssertionError(   R   R   R   R   t   redirect_appt   wsgi_headers(    (    sg   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/contrib/fixers.pyt   test_proxy_fix;   s    	c         C   sb   t  j t j d „  ƒ ƒ } t t ƒ  d d d d ƒ} t j | | ƒ } |  j | j	 ƒ  d ƒ d  S(   Nc         S   s   t  |  j ƒ S(   N(   R   R%   (   R   (    (    sg   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/contrib/fixers.pyR   Z   s    R*   t   ,R+   s	   127.0.0.1(
   R   R/   R   R.   R   R   R   R   t   assert_strict_equalR   (   R   R   R   R   (    (    sg   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/contrib/fixers.pyt   test_proxy_fix_weird_enumY   s    	c         C   s‡   t  j d „  ƒ } t j | d d	 ƒ } t j | t ƒ  ƒ } | j d d k sU t ‚ d | j k sj t ‚ | j d d k sƒ t ‚ d  S(
   Nc         S   s   t  d d d g ƒS(   NR
   t   headerss   X-Foot   bar(   s   X-FooR9   (   R   (   R   (    (    sg   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/contrib/fixers.pyR.   g   s    	s   X-Foos   X-Bart   42s   Content-Types   text/plain; charset=utf-8(   s   X-Foo(   s   X-BarR:   (   (   s   X-BarR:   (	   R   R.   R   t   HeaderRewriterFixR   R   R   R8   R1   (   R   R.   R   (    (    sg   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/contrib/fixers.pyt   test_header_rewriter_fixf   s    (   t   __name__t
   __module__R   R   R#   R4   R7   R<   (    (    (    sg   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/contrib/fixers.pyR      s   	
				t   BrowserFixerTestCasec           B   s   e  Z d  „  Z RS(   c            s¾  t  j t j d „  ƒ ƒ } t | t ƒ } | j d d d g ƒ} |  j | j ƒ  d ƒ d | j	 k sm t
 ‚ | j	 d d	 k s† t
 ‚ | j	 d
 d k sŸ t
 ‚ t | t ƒ } | j d ƒ } |  j | j ƒ  d ƒ d | j	 k sè t
 ‚ t ƒ  ‰  t ˆ  _ t  j t j ‡  ‡ f d †  ƒ ƒ } d ‰ t | t ƒ } | j d d d g ƒ} |  j | j ƒ  d ƒ d | j	 k svt
 ‚ d | j	 k s‹t
 ‚ | j	 d d	 k s¤t
 ‚ d ‰ t ˆ  _ | j d d d g ƒ} |  j | j ƒ  d ƒ | j	 d d k sút
 ‚ | j	 d d k st
 ‚ | j	 d d	 k s,t
 ‚ | j d ƒ } |  j | j ƒ  d ƒ | j	 d d k sjt
 ‚ t | j	 d d t ƒ‰  ˆ  j s’t
 ‚ ˆ  j s¡t
 ‚ | j	 d d	 k sºt
 ‚ d  S(   Nc         S   s0   t  d d d ƒ} d | j d <d | j d <| S(   Ns   binary data heret   mimetypes   application/vnd.ms-excelt   Cookiet   Varys   attachment; filename=foo.xlss   Content-Disposition(   R   R8   (   R   R   (    (    sg   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/contrib/fixers.pyR.   v   s    t   /R8   s
   User-Agents2   Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)s   binary data heret   varys   content-dispositions   attachment; filename=foo.xlss   content-types   application/vnd.ms-excelc            sL   t  d d d ƒ} d j ˆ ƒ | j d <ˆ  j ƒ  | j d <d | j d <| S(	   Ns   binary data hereR@   s   application/vnd.ms-excels   , t   Pragmas   Cache-Controls   attachment; filename=foo.xlss   Content-Disposition(   R   t   joinR8   t	   to_header(   R   R   (   t   cct   pragma(    sg   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/contrib/fixers.pyR.   ’   s
    s   no-cacheRI   s   cache-controls   x-foos   proxy-revalidates   no-cache, x-foot   cls(   s
   User-Agents2   Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)(   s   no-cache(   s
   User-Agents2   Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)(   s   no-caches   x-foo(   s
   User-Agents2   Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)(   R   t   InternetExplorerFixR   R.   R   R   R   R   R   R8   R1   R   t   Truet   no_cachet   proxy_revalidateR   (   R   R.   t   cR   (    (   RH   RI   sg   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/contrib/fixers.pyt   test_ie_fixesu   sR    		
		(   R=   R>   RP   (    (    (    sg   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/contrib/fixers.pyR?   s   s   c          C   s<   t  j ƒ  }  |  j t  j t ƒ ƒ |  j t  j t ƒ ƒ |  S(   N(   t   unittestt	   TestSuitet   addTestt	   makeSuiteR   R?   (   t   suite(    (    sg   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/contrib/fixers.pyRU   ½   s    (   t   __doc__RQ   t   werkzeug.testsuiteR    t   werkzeug.datastructuresR   t   werkzeug.httpR   t   werkzeug.testR   R   t   werkzeug.wrappersR   R   t   werkzeug.contribR   t   werkzeug.utilsR   R.   R   R   R?   RU   (    (    (    sg   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/werkzeug/testsuite/contrib/fixers.pyt   <module>
   s   TJ