Ñò
x¼Kc        
   @   s"  d  Z  d d k Z d d k l Z d d k l Z d d k l Z d d k Td d k l Z l	 Z	 d d k
 l Z d d	 k l Z l Z l 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 S(   sš   
    werkzeug.utils test
    ~~~~~~~~~~~~~~~~~~~

    :copyright: (c) 2010 by the Werkzeug Team, see AUTHORS for more details.
    :license: BSD license.
iÿÿÿÿN(   t   datetime(   t   StringIO(   t   assert_raises(   t   *(   t   BaseResponset   Request(   t
   parse_date(   t   Clientt   run_wsgi_appt   create_environc          C   s>   d d k  }  d d k  l } x | D] } t |  | ƒ q# Wd S(   s   Import patchiÿÿÿÿN(   t   __all__(   t   werkzeugR
   t   getattr(   R   t   public_methodst   name(    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   test_import_patch   s
     c             sö   g  ‰  d t  f ‡  f d †  ƒ  Y}  |  ƒ  } | i } | i } | | j o
 d j n p t ‚ ˆ  d g j p t ‚ g  ‰  d t  f ‡  f d †  ƒ  Y}  |  ƒ  } | i } | i } | | j o
 d j n p t ‚ ˆ  d g j p t ‚ d S(   s   Cached property decoratort   Ac              s#   e  Z ‡  f d  †  Z e e ƒ Z RS(   c            s   ˆ  i  d ƒ d S(   Ni*   (   t   append(   t   self(   t   foo(    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   prop!   s    (   t   __name__t
   __module__R   t   cached_property(    (   R   (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyR       s   i*   c              s,   e  Z ‡  f d  †  Z e e d d ƒZ [ RS(   c            s   ˆ  i  d ƒ d S(   Ni*   (   R   (   R   (   R   (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   _prop.   s    R   R   (   R   R   R   R   R   (    (   R   (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyR   -   s   N(   t   objectR   t   AssertionError(   R   t   at   pt   q(    (   R   s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   test_cached_property   s    			%			%c       	      sî   d t  f d „  ƒ  Y}  |  ƒ  ‰  ˆ  i d j p t ‚ ˆ  i d j p t ‚ ‡  f d †  } t t | ƒ ˆ  i d j p t ‚ ˆ  i d j p t ‚ ˆ  i	 d j p t ‚ t
 d d d	 d
 d d d ƒ ˆ  _	 ˆ  i d d j p t ‚ d S(   s   Environ property descriptorR   c           B   sŽ   e  Z h d  d 6d d 6Z e d ƒ Z e d d ƒ Z e d ƒ Z e d d e ƒZ e d d e ƒZ	 e d d e e d	 e ƒZ e d
 ƒ Z RS(   t   abct   stringt   42t   numbert   missingt   spamt	   load_funct   broken_numbert   datet	   read_onlyR   N(   R   R   t   environt   environ_propertyR    R#   R(   t   intR"   R&   t   NoneR   t	   http_datet   FalseR'   R   (    (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyR   =   s   	R   R$   c              s   d ˆ  _  d  S(   Nt	   something(   R(   (    (   R   (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   test_assignL   s    i*   iØ  i   i   i
   i    R'   s   Tue, 22 Jan 2008 10:00:00 GMTN(   R   R    R   R#   R   t   AttributeErrorR"   R&   R,   R'   R    R)   (   R   R0   (    (   R   s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   test_environ_property;   s    	!c          C   s¿   d t  f d „  ƒ  Y}  t d ƒ d j p t ‚ t d ƒ d j p t ‚ t d ƒ d j p t ‚ t d ƒ d j p t ‚ t d t ƒ d	 j p t ‚ t |  d
 ƒ ƒ d
 j p t ‚ d S(   s   XML/HTML escapingt   Fooc           B   s   e  Z d  „  Z RS(   c         S   s
   t  |  ƒ S(   N(   t   unicode(   R   (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   __html__Y   s    (   R   R   R5   (    (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyR3   X   s   t    i*   R!   s   <>s   &lt;&gt;s   "foo"s   &quot;foo&quot;s   <foo>N(   t   strt   escapeR,   R   t   True(   R3   (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   test_escapeV   s    c           C   s   t  d ƒ d j p t ‚ d S(   s   XML/HTML unescapings   &lt;&auml;&gt;u   <Ã¤>N(   t   unescapeR   (    (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   test_unescapec   s    c             s—  d „  }  t  |  h  ƒ \ } } } | d j p t ‚ | d g j p t ‚ | i ƒ  d j p t ‚ | i ƒ  d j p t ‚ | i ƒ  d j p t ‚ t t | i ƒ g  ‰ d t f ‡ f d	 †  ƒ  Y‰  ‡  f d
 †  } t  | h  ƒ \ } } } | d j p t ‚ | d g j p t ‚ | i ƒ  d j p t ‚ t t | i ƒ | i ƒ  t  | h  t ƒ d d g j p t ‚ t ˆ ƒ d j p t ‚ d S(   s   WSGI test-runnerc         s   s#   | d d g ƒ d Vd Vd Vd  S(   Ns   200 OKs   Content-Types
   text/plaint   1t   2t   3(   s   Content-Types
   text/plain(    (   R)   t   start_response(    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyR   j   s    s   200 OKs   Content-Types
   text/plainR=   R>   R?   t	   CloseIterc              s2   e  Z d  „  Z d „  Z ‡  f d †  Z d „  Z RS(   c         S   s   t  |  _ d  S(   N(   R.   t   iterated(   R   (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   __init__z   s    c         S   s   |  S(   N(    (   R   (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   __iter__|   s    c            s   ˆ  i  d  ƒ d  S(   N(   R   R,   (   R   (   t	   got_close(    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   close~   s    c         S   s$   |  i  o t ƒ  ‚ n t |  _  d S(   Nt   bar(   RB   t   StopIterationR9   (   R   (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   next€   s    
	(   R   R   RC   RD   RF   RI   (    (   RE   (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyRA   y   s   		c            s   | d d g ƒ ˆ  ƒ  S(   Ns   200 OKs   Content-Types
   text/plain(   s   Content-Types
   text/plain(    (   R)   R@   (   RA   (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyRG   †   s    RG   i    i   N(   s   Content-Types
   text/plain(   s   Content-Types
   text/plain(	   R   R   RI   R   RH   R   RF   R9   t   len(   R   t   app_itert   statust   headersRG   (    (   RA   RE   s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   test_run_wsgi_apph   s&    	
'c           C   s„   t  d ƒ d j p t ‚ t  t d d d ƒ ƒ d j p t ‚ t d ƒ d j p t ‚ t t d d d ƒ ƒ d j p t ‚ d S(   s   Date formattingi    s   Thu, 01-Jan-1970 00:00:00 GMTi²  i   s   Thu, 01 Jan 1970 00:00:00 GMTN(   t   cookie_dateR   R    R-   (    (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt
   test_dates–   s    &c        	   C   s¨   t  d ƒ h d d 6d d 6d d 6d d	 6j p t ‚ t t d
 d d d t d t ƒi d ƒ ƒ t d d d d g ƒ j p t ‚ t  d ƒ h d d 6j p t ‚ d S(   s   Cookie parsingsI   dismiss-top=6; CP=null*; PHPSESSID=0a539d42abc001cdc762809248d4beed; a=42u   null*t   CPu    0a539d42abc001cdc762809248d4beedt	   PHPSESSIDu   42R   u   6s   dismiss-topR   s   bar baz blubih  t   httponlyt   sync_expiress   ; t   HttpOnlys   Max-Age=360s   Path=/s   foo="bar baz blub"s   fo234{=bar blub=Blaht   Blaht   blubN(   t   parse_cookieR   t   sett   dump_cookieR9   R.   t   split(    (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   test_cookiesž   s    	#c          C   sH   t  d d ƒ }  |  d j p t ‚ t |  ƒ h d d 6j p t ‚ d S(   s   Cookie value quoting.R   s   ?foos   foo="?foo"; Path=/N(   RZ   R   RX   (   t   val(    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   test_cookie_quoting­   s    c          C   s  d d k  }  d d k l } t d ƒ |  i j p t ‚ t d ƒ |  i j p t ‚ t d ƒ |  i j p t ‚ t d t ƒ d j p t ‚ t d t ƒ d j p t ‚ t d ƒ |  i j p t ‚ t d	 ƒ | j p t ‚ t t	 t d
 ƒ t t
 t d ƒ d S(   s   String based importingiÿÿÿÿN(   t   DebuggedApplications
   cgi.escapeu
   cgi.escapes
   cgi:escapet   XXXXXXXXXXXXs   cgi.XXXXXXXXXXXXu"   werkzeug.debug.DebuggedApplicationt   XXXXXXXXXXXXXXXXs   cgi.XXXXXXXXXX(   t   cgit   werkzeug.debugR_   t   import_stringR8   R   R9   R,   R   t   ImportErrorR1   (   Rb   R_   (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   test_import_string´   s    c           C   s3   t  t d ƒ ƒ d d d d d g j p t ‚ d S(   s   Module and package lookups   werkzeug.debugs   werkzeug.debug.consoles   werkzeug.debug.renders   werkzeug.debug.reprs   werkzeug.debug.tbtoolss   werkzeug.debug.utilsN(   t   listt   find_modulesR   (    (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   test_find_modulesÃ   s    c           C   s  t  i d ƒ d j p t ‚ t  i d d d ƒd j p t ‚ t  i ƒ  d j p t ‚ t i ƒ  d j p t ‚ t  i d	 d
 ƒ d j p t ‚ t i d	 d
 ƒ d j p t ‚ t  i  t  i t  i d
 ƒ t  i	 d d ƒ ƒ ƒ d j p t ‚ t  d ƒ d j p t ‚ d S(   s   HTML builders   Hello Worlds   <p>Hello World</p>t   Testt   hreft   #s   <a href="#">Test</a>s   <br>s   <br />t   srcR   s   <img src="foo">s   <img src="foo" />t   types   text/javascriptsT   <html><head><title>foo</title><script type="text/javascript"></script></head></html>s   <foo>s   &lt;foo&gt;N(
   t   htmlR   R   R   t   brt   xhtmlt   imgt   headt   titlet   script(    (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   test_html_builderË   s    #  c          C   sC  d „  }  d „  } d d „ } t  | d h  ƒ d h  f j p t ‚ t  | d h d d 6ƒ d h  f j p t ‚ t  | d h  ƒ d h  f j p t ‚ t  | d h  ƒ d h  f j p t ‚ t t t  | d h  ƒ t  |  d h d d	 6ƒ d h  f j p t ‚ t t t  |  d h  d
 t ƒt t t  |  d h d d 6d
 t ƒd S(   s   Function argument validatorc           S   s   d  S(   N(   R,   (    (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   <lambda>ß   s    c         S   s   d  S(   N(   R,   (   R   t   b(    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyRw   à   s    i    c         S   s   d  S(   N(   R,   (   R   Rx   (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyRw   á   s    i   i   Rx   i   t   ct
   drop_extraR   N(   i   i   (   i   i   (   i   (   i   i   (   i   (   i   i    (   i   i   (   i   i   (    (   i   i   (    (   i   (    (   t   validate_argumentsR   R   t   ArgumentValidationErrorR.   (   t	   take_nonet   take_twot   take_two_one_default(    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   test_validate_argumentsÝ   s    		&-&&-c          C   sc   d d k  l }  |  d d d g ƒ } d	 | d
 <d | d <| |  d d d d g ƒ j p t ‚ d S(   s   Header duplication bug on setiÿÿÿÿ(   t   Headerss   Content-Types	   text/htmlR3   RG   t   Blubt   blaht   heheRW   t   hummt   blafaselN(   s   Content-Types	   text/html(   s   Foos   bar(   R‚   s   blah(   s   Content-Types	   text/html(   s   Foos   bar(   s   blubR„   (   s   blafaselR…   (   t   werkzeug.datastructuresR   R   (   R   RM   (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   test_header_set_duplication_bugñ   s    

c          C   sc   d „  }  t  |  t ƒ } | i d d d ƒ} | i d j p t ‚ | i d d j p t ‚ d S(	   s   Append slash redirectc         S   s   t  |  ƒ |  | ƒ S(   N(   t   append_slash_redirect(   t   envt   sr(    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   app  s    R   t   base_urls   http://example.org/appi-  t   Locations   http://example.org/app/foo/N(   R   R   t   gett   status_codeR   RM   (   RŒ   t   clientt   response(    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   test_append_slash_redirect  s
    	c          C   sX   t  d „  ƒ }  |  i d j p t ‚ |  i d j p t ‚ |  i t j p t ‚ d S(   s(   Documentation of cached_property is keptc           S   s   d S(   t   testingi*   (    (    (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyR     s    R”   R   N(   R   t   __doc__R   R   R   (   R   (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   test_cached_property_doc  s    (    R•   t   sysR    R   t
   nose.toolsR   t   werkzeug.utilst   werkzeug.wrappersR   R   t   werkzeug.httpR   t   werkzeug.testR   R   R	   R   R   R2   R:   R<   RN   RP   R\   R^   Rf   Ri   Rv   R€   Rˆ   R“   R–   (    (    (    s>   /Users/mitsuhiko/Development/werkzeug-main/tests/test_utils.pyt   <module>   s0   
						.									
