Ñò
ÊtSc           @   sì  d  d k  l Z d  d k l Z d  d k l Z d  d k l Z d  d k l Z d  d k l Z d  d k l	 Z	 d  d k l
 Z
 d  d	 k l Z d  d
 k l Z d  d k l Z l Z l Z l Z 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* „  Z0 d+ „  Z1 d, S(-   iÿÿÿÿ(   t   Request(   t   wsgify(   t	   no_escape(   t
   strip_tags(   t   HTTPException(   t   WSGIHTTPException(   t	   _HTTPMove(   t   HTTPMethodNotAllowed(   t   HTTPExceptionMiddleware(   t
   status_map(   t   eq_t   ok_t   assert_equalt   assert_raisesc         C   s!   |  i  d j o t ƒ  ‚ n d S(   Nt   GETs   hello!(   t   methodR   (   t   req(    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   method_not_allowed_app   s    c           C   s   t  t d  ƒ d ƒ d  S(   Nt    (   R   R   t   None(    (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   test_noescape_null   s    c           C   s   t  t d ƒ d ƒ d  S(   Ni*   t   42(   R   R   (    (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   test_noescape_not_basestring   s    c          C   s6   d t  f d „  ƒ  Y}  |  ƒ  } t t | ƒ d ƒ d  S(   Nt   DummyUnicodeObjectc           B   s   e  Z d  „  Z RS(   c         S   s   d S(   NR   (    (   t   self(    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   __unicode__   s    (   t   __name__t
   __module__R   (    (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyR      s   R   (   t   objectR   R   (   R   t   duo(    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   test_noescape_unicode   s    	c           C   s   t  t d ƒ d ƒ d  S(   NR   (   R   R   (    (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   test_strip_tags_empty!   s    c           C   s   t  t d ƒ d ƒ d  S(   Ns   a
bs   a b(   R   R   (    (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt    test_strip_tags_newline_to_space$   s    c           C   s   t  t d ƒ d ƒ d  S(   Ns   abt   ab(   R   R   (    (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt$   test_strip_tags_zaps_carriage_return'   s    c           C   s   t  t d ƒ d ƒ d  S(   Ns   a<br/>bs   a
b(   R   R   (    (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   test_strip_tags_br_to_newline*   s    c           C   s   t  t d ƒ d ƒ d  S(   Ns	   a<!--b-->R!   (   R   R   (    (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   test_strip_tags_zaps_comments-   s    c           C   s   t  t d ƒ d ƒ d  S(   Ns   foo<bar>baz</bar>t   foobaz(   R   R   (    (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   test_strip_tags_zaps_tags0   s    c             s—   d d  k  }  g  ‰ t ƒ  ‰  ‡  ‡ f d †  } h  } t ƒ  } t d | ƒ } t | i | j ƒ | | | ƒ } t | | j ƒ t ˆ | | f g ƒ d  S(   Niÿÿÿÿc            s   ˆ i  |  | f ƒ ˆ  S(   N(   t   append(   t   environt   start_response(   t   _resultt   _called(    s-   /home/chrism/projects/webob/tests/test_exc.pyt	   _response7   s    t   testing(   t   warningsR   R   R   t   wsgi_responseR   (   R.   R,   R(   R)   t   exct   result(    (   R*   R+   s-   /home/chrism/projects/webob/tests/test_exc.pyt   test_HTTPException3   s    		c          C   s?   t  i d d d ƒ}  |  i t ƒ } | i d j p t ‚ d  S(   Nt   /R   t   POSTi•  (   R    t   blankt   get_responseR   t   status_codet   AssertionError(   R   t   res(    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt    test_exception_with_unicode_dataB   s    c          C   sF   t  d d d g ƒ }  |  i i ƒ  } | d d d g j p t ‚ d  S(   Nt   headerss
   Set-Cookies   a=1s   a=2s
   set-cookie(   s
   Set-Cookies   a=1(   s
   Set-Cookies   a=2(   R   R;   t   mixedR8   (   R0   R<   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   test_WSGIHTTPException_headersG   s    	c          C   sv   d d k  l }  d } t d | ƒ } t | i | ƒ t t | i |  ƒ ƒ t | i i	 h d d 6d d 6ƒ d	 ƒ d  S(
   Niÿÿÿÿ(   t   Templates
   $foo: $bart   body_templatet   FOOt   foot   BARt   bars   FOO: BAR(
   t   stringR>   R   R   R?   R   t
   isinstancet   body_template_objR
   t
   substitute(   R>   t   TEMPLATER0   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt&   test_WSGIHTTPException_w_body_templateM   s     c          C   sU   d t  f d „  ƒ  Y}  |  d d d d ƒ } t d | i j ƒ t d | i j ƒ d  S(   Nt	   EmptyOnlyc           B   s   e  Z e Z RS(    (   R   R   t   Truet
   empty_body(    (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyRJ   W   s   t   content_types
   text/plaint   content_lengthiê   (   R   R   t   __dict__(   RJ   R0   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt#   test_WSGIHTTPException_w_empty_bodyV   s    c          C   sR   t  d d ƒ }  t t |  ƒ d ƒ d t  f d „  ƒ  Y} t t | ƒ  ƒ d ƒ d  S(   Nt   detailt   Detailt   Explainc           B   s   e  Z d  Z RS(   t   Explanation(   R   R   t   explanation(    (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyRS   `   s   RT   (   R   R
   t   str(   t   exc1RS   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   test_WSGIHTTPException___str__]   s    c          C   s?   d t  f d „  ƒ  Y}  |  d d ƒ } t | i h  ƒ d ƒ d  S(   NRS   c           B   s   e  Z d  Z d Z d Z RS(   t   999t   TestingRT   (   R   R   t   codet   titleRU   (    (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyRS   e   s   RQ   RR   s#   999 Testing

Explanation

 Detail  (   R   R
   t
   plain_body(   RS   R0   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt,   test_WSGIHTTPException_plain_body_no_commentd   s    c          C   sE   d t  f d „  ƒ  Y}  |  d d d d ƒ } t | i h  ƒ d ƒ d  S(   NRS   c           B   s   e  Z d  Z d Z d Z RS(   RY   RZ   RT   (   R   R   R[   R\   RU   (    (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyRS   n   s   RQ   RR   t   commentt   Comments—   <html>
 <head>
  <title>999 Testing</title>
 </head>
 <body>
  <h1>999 Testing</h1>
  Explanation<br /><br />
Detail
<!-- Comment -->

 </body>
</html>(   R   R
   t	   html_body(   RS   R0   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt*   test_WSGIHTTPException_html_body_w_commentm   s    c          C   s[   d  d „ }  h d d 6d d 6d d 6d d	 6d
 d 6} t ƒ  } t | | |  ƒ d g ƒ d  S(   Nc         S   s   d  S(   N(    (   t   statusR;   t   exc_info(    (    s-   /home/chrism/projects/webob/tests/test_exc.pyR)   ‚   s    t   HTTPs   wsgi.url_schemet	   localhostt   SERVER_NAMEt   80t   SERVER_PORTt   PUTt   REQUEST_METHODs	   text/htmlt   HTTP_ACCEPTsr   <html>
 <head>
  <title>None None</title>
 </head>
 <body>
  <h1>None None</h1>
  <br /><br />



 </body>
</html>(   R   R   R   (   R)   R(   t   excep(    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt(   test_WSGIHTTPException_generate_response   s    
	c          C   s]   d  d „ }  h d d 6d d 6d d 6d d	 6} t ƒ  } d
 | _ t | | |  ƒ d
 g ƒ d  S(   Nc         S   s   d  S(   N(    (   Rc   R;   Rd   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyR)   ›   s    Re   s   wsgi.url_schemeRf   Rg   Rh   Ri   Rj   Rk   t   test(   R   R   t   bodyR   (   R)   R(   Rm   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt"   test_WSGIHTTPException_call_w_bodyš   s    
		c          C   sT   d  d „ }  h d d 6d d 6d d 6d d	 6} t ƒ  } t | i | |  ƒ g  ƒ d  S(
   Nc         S   s   d  S(   N(    (   Rc   R;   Rd   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyR)   ©   s    Re   s   wsgi.url_schemeRf   Rg   Rh   Ri   t   HEADRk   (   R   R   R   R/   (   R)   R(   Rm   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt$   test_WSGIHTTPException_wsgi_response¨   s    
	c          C   sj   d  d „ }  h d d 6d d 6d d 6d d	 6} t ƒ  } d
 d k l } t | _ t | | |  ƒ g  ƒ d  S(   Nc         S   s   d  S(   N(    (   Rc   R;   Rd   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyR)   µ   s    Re   s   wsgi.url_schemeRf   Rg   Rh   Ri   Rr   Rk   iÿÿÿÿ(   R0   (   R   R   t   webobR0   RK   t   newstyle_exceptionsR   (   R)   R(   Rm   R0   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt)   test_WSGIHTTPException_exception_newstyle´   s    
		c          C   sj   d  d „ }  h d d 6d d 6d d 6d d	 6} t ƒ  } d
 d k l } t | _ t | | |  ƒ g  ƒ d  S(   Nc         S   s   d  S(   N(    (   Rc   R;   Rd   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyR)   Ã   s    Re   s   wsgi.url_schemeRf   Rg   Rh   Ri   Rr   Rk   iÿÿÿÿ(   R0   (   R   R   Rt   R0   t   FalseRu   R   (   R)   R(   Rm   R0   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt,   test_WSGIHTTPException_exception_no_newstyleÂ   s    
		c             s¼   d ‰ d ‰  ‡  ‡ f d †  }  ‡  ‡ f d †  } t  i d d d ƒ} | i |  ƒ } | | d ƒ t | i d	 | ƒ } | i | _ | i | _ | | d
 ƒ | i | ƒ } | | d ƒ d  S(   Ns   Hi!
s   application/helloc            sR   d } d ˆ  f d t  ˆ ƒ f g } | | | ƒ |  d d j o g  Sˆ g Sd S(   s+   An application object that understands HEADs   200 OKs   Content-Types   Content-LengthRk   Rr   N(   t   len(   R(   R)   Rc   t   response_headers(   t   CONTENT_TYPEt   HELLO_WORLD(    s-   /home/chrism/projects/webob/tests/test_exc.pyt   head_appÔ   s    	c            sC   t  |  i ˆ  | ƒ t  |  i t ˆ ƒ | ƒ t  |  i d | ƒ d  S(   NR   (   R   RM   RN   Ry   Rp   (   t   respt   description(   R{   R|   (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   verify_responseà   s    R3   R   Rr   s   first responset   requests   copied responses   evaluated copy(   R    R5   R6   R	   t
   status_intRp   t
   headerlist(   R}   R€   R   t   resp1t   resp2t   resp3(    (   R{   R|   s-   /home/chrism/projects/webob/tests/test_exc.pyt    test_HTTPOk_head_of_proxied_headÐ   s    c          C   sX   d  d „ }  h d d 6d d 6d d 6d d	 6d
 d 6} t ƒ  } t | | |  ƒ g  ƒ d  S(   Nc         S   s   d  S(   N(    (   Rc   R;   Rd   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyR)   ö   s    Re   s   wsgi.url_schemeRf   Rg   Rh   Ri   Rr   Rk   R3   t	   PATH_INFO(   R   R   R   (   R)   R(   t   m(    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   test_HTTPMoveõ   s    
	c          C   s^   d  d „ }  h d d 6d d 6d d 6d d	 6d
 d 6} t d d ƒ } t | | |  ƒ g  ƒ d  S(   Nc         S   s   d  S(   N(    (   Rc   R;   Rd   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyR)     s    Re   s   wsgi.url_schemeRf   Rg   Rh   Ri   Rr   Rk   R3   Rˆ   t   locations   http://example.com(   R   R   R   (   R)   R(   R‰   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   test_HTTPMove_location_not_none  s    
c          C   s)   d  d „ }  t t t d d d t ƒd  S(   Nc         S   s   d  S(   N(    (   Rc   R;   Rd   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyR)     s    R‹   s   http://example.comt	   add_slash(   R   R   t	   TypeErrorR   RK   (   R)   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt$   test_HTTPMove_add_slash_and_location  s    c          C   sa   d  d „ }  h d d 6d d 6d d 6d d	 6d
 d 6} t ƒ  } t | _ t | | |  ƒ g  ƒ d  S(   Nc         S   s   d  S(   N(    (   Rc   R;   Rd   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyR)     s    Re   s   wsgi.url_schemeRf   Rg   Rh   Ri   Rr   Rk   R3   Rˆ   (   R   R   RK   R   R   (   R)   R(   R‰   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   test_HTTPMove_call_add_slash  s    
		c          C   sn   d  d „ }  h d d 6d d 6d d 6d d	 6} t ƒ  } t | _ d
 | d <d | d <t | | |  ƒ g  ƒ d  S(   Nc         S   s   d  S(   N(    (   Rc   R;   Rd   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyR)   $  s    Re   s   wsgi.url_schemeRf   Rg   Rh   Ri   Rr   Rk   t   querystringt   QUERY_STRINGR3   Rˆ   (   R   R   RK   R   R   (   R)   R(   R‰   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   test_HTTPMove_call_query_string#  s    
		

c          C   sG   d „  }  |  } t  | ƒ } h  } d  } | | | ƒ } t | d ƒ d  S(   Nc         S   s   d S(   Nt   123(    (   R(   R)   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   app3  s    R”   (   R   R   R   (   R•   t   applicationR‰   R(   R)   R9   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   test_HTTPExceptionMiddleware_ok2  s    	c             sV   d „  ‰  ‡  f d †  }  |  } t  | ƒ } h  } d  } | | | ƒ } t | d ƒ d  S(   Nc         S   s   d S(   NR”   (    (   R(   R)   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyR/   =  s    c            s   t  d  ˆ  ƒ ‚ d  S(   N(   R   R   (   R(   R)   (   R/   (    s-   /home/chrism/projects/webob/tests/test_exc.pyR•   ?  s    R”   (   R   R   R   (   R•   R–   R‰   R(   R)   R9   (    (   R/   s-   /home/chrism/projects/webob/tests/test_exc.pyt&   test_HTTPExceptionMiddleware_exception<  s    	c    
         sŸ   d d d „  ƒ  Y}  d „  ‰  ‡  f d †  } | } t  | ƒ } h  } d „  } zB d d k l } | i } |  ƒ  } | | | ƒ }	 t |	 d  ƒ Wd  | | _ Xd  S(	   Nt   DummySysc           B   s   e  Z d  „  Z RS(   c         S   s   d  S(   N(   R   (   R   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyRd   J  s    (   R   R   Rd   (    (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyR™   I  s   c         S   s   | d g  d d  ƒS(   Ns   200 OKRd   (   R   (   R(   R)   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyR/   L  s    c            s   t  d  ˆ  ƒ ‚ d  S(   N(   R   R   (   R(   R)   (   R/   (    s-   /home/chrism/projects/webob/tests/test_exc.pyR•   N  s    c         S   s   d  S(   N(    (   Rc   R;   Rd   (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyR)   S  s    iÿÿÿÿ(   R0   (    (   R   Rt   R0   t   sysR   R   (
   R™   R•   R–   R‰   R(   R)   R0   t   old_sysRš   R9   (    (   R/   s-   /home/chrism/projects/webob/tests/test_exc.pyt4   test_HTTPExceptionMiddleware_exception_exc_info_noneH  s    				N(2   t   webob.requestR    t	   webob.decR   t	   webob.excR   R   R   R   R   R   R   R	   t
   nose.toolsR
   R   R   R   R   R   R   R   R   R    R"   R#   R$   R&   R2   R:   R=   RI   RP   RX   R^   Rb   Rn   Rq   Rs   Rv   Rx   R‡   RŠ   RŒ   R   R   R“   R—   R˜   Rœ   (    (    (    s-   /home/chrism/projects/webob/tests/test_exc.pyt   <module>   sT   "																									%						
	