Ñò
ÊtSc           @   s#  d  d k  l Z d  d k l Z l Z d  d k l Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d d d „ Z d e f d „  ƒ  YZ d „  Z e d „ Z d „  Z d e f d „  ƒ  YZ d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿ(   t   Request(   t   eq_t   assert_raises(   t   bytes_c           C   s!   t  h  ƒ i d j p t ‚ d  S(   Nt   GET(   R    t   methodt   AssertionError(    (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt   test_request_no_method   s    c          C   sY   t  d d ƒ \ }  } |  i d  j p t ‚ |  i d j p t ‚ | i p t ‚ d  S(   Nt   abct   FOOt    (   t   _make_read_tracked_requestt   content_lengtht   NoneR   t   bodyt   was_read(   t   reqt   input(    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt#   test_request_read_no_content_length   s    c          C   sX   t  d d ƒ \ }  } |  i d  j p t ‚ |  i d j p t ‚ | i p t ‚ d  S(   NR   t   POST(   R   R   R   R   R   R   (   R   R   (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt(   test_request_read_no_content_length_POST   s    c          C   sG   t  d ƒ \ }  } d |  _ |  i d j p t ‚ | i p t ‚ d  S(   NR   i   (   R   R   R   R   R   (   R   R   (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt7   test_request_read_no_flag_but_content_length_is_present   s    	c          C   sG   t  d ƒ \ }  } t |  _ |  i d j p t ‚ | i p t ‚ d  S(   NR   (   R   t   Truet   is_body_readableR   R   R   (   R   R   (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt8   test_request_read_no_content_length_but_flagged_readable   s    	c          C   s   t  ƒ  d }  t d ƒ } |  _ |  i d  j p t ‚ |  i p t ‚ |  i d j p t ‚ |  i d j p t ‚ |  i p t ‚ | i p t ‚ d  S(   Ni    R   i   (	   R   t   ReadTrackert	   body_fileR   R   R   t   is_body_seekableR   R   (   R   R   (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt)   test_request_read_after_setting_body_file    s    c          C   s?   t  i d d d ƒ}  t |  _ t |  i i ƒ  d g d ƒ d  S(   Nt   /R   s   a
i   s   a
a
a
(   R    t   blankt   FalseR   t   eqR   t	   readlines(   R   (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt   test_request_readlines+   s    	c          C   sb   t  i d d d ƒ}  |  i p t ‚ d |  _ |  i p t ‚ |  i i ƒ  d j p t ‚ d  S(   NR   R   t   DELETER   (   R    R   R   R   R   R   t   read(   R   (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt   test_request_delete_with_body0   s
    	R
   t   PUTc         C   s0   t  |  ƒ } h | d 6| d 6} t | ƒ | f S(   Nt   REQUEST_METHODs
   wsgi.input(   R   R    (   t   dataR   R   t   env(    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyR   8   s
    
R   c           B   s#   e  Z d  Z d „  Z d d „ Z RS(   sE   
        Helper object to determine if the input was read or not
    c         C   s   | |  _  t |  _ d  S(   N(   R(   R   R   (   t   selfR(   (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt   __init__D   s    	iÿÿÿÿc         C   sM   | d j  o t  |  i ƒ } n | t  |  i ƒ j p t ‚ t |  _ |  i S(   Ni    (   t   lenR(   R   R   R   (   R*   t   size(    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyR$   G   s
    	(   t   __name__t
   __module__t   __doc__R+   R$   (    (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyR   @   s   	c          C   sD   t  i d d d ƒ}  d |  _ t |  _ t t |  i i ƒ d ƒ d  S(   NR   R   t   xt   dummys&   <LimitedLengthFile('dummy', maxlen=1)>(	   R    R   t   body_file_rawR   R   R    t   reprR   t   raw(   R   (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt   test_limited_length_file_reprO   s    		c         C   s   d } t  i d d d | ƒ} t | i | ƒ t | i ƒ | _ t | i d  ƒ | d | _ |  | _ t | i | d ƒ t t	 | i
 ƒ d  S(   Ni   i   R   R   R1   id   i   (   R    R   R    R   t   _Helper_test_request_wrong_clenR   R   R   R   t   IOErrort	   copy_body(   t   is_seekablet   tlenR   (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt   test_request_wrong_clenU   s    	c           C   s   t  d t ƒ d  S(   NR:   (   R<   R   (    (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt    test_request_wrong_clen_seekableb   s    R7   c           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   | |  _  t |  _ d  S(   N(   t   fR   t
   file_ended(   R*   R>   (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyR+   f   s    	c         G   sD   |  i  i | Œ  } | p' |  i o t d ƒ ‚ n t |  _ n | S(   Ns,   Reading should stop after first empty string(   R>   R$   R?   R   R   (   R*   t   argst   r(    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyR$   j   s    
(   R.   R/   R+   R$   (    (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyR7   e   s   	c          C   s@   d d }  t  i d d h d |  f d 6ƒ} t | _ | i d  S(	   NR   i   i   R   R   s	   test-filet   filei   (   R    R   R   R   R   (   R(   R   (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt   test_disconnect_detection_cgis   s    
"	c          C   si   d d }  t  i d d |  ƒ} t | _ | i i d ƒ } | p t ‚ t |  ƒ i | ƒ p t ‚ d  S(	   NR   i   i   R   R   i   i   i   (	   R    R   R   R   R   t   readlineR   R   t
   startswith(   R(   R   t   line(    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt)   test_disconnect_detection_hinted_readliney   s    
	c          C   sè   t  h d d 6d d 6d d 6ƒ }  t |  i d ƒ t t |  i ƒ h d d	 6ƒ t t |  i ƒ h  ƒ d |  _ t t t |  d
 d ƒ t  h d d 6d d 6d d 6ƒ }  t |  i d ƒ t t |  i ƒ h d d	 6ƒ t t t	 |  d ƒ d  S(   NR   R'   s   a=bt   QUERY_STRINGs   text/html;charset=asciit   CONTENT_TYPEt   asciit   bt   at   charsets   utf-8s!   multipart/form-data;charset=ascii(
   R    R    RM   t   dictR   R   R   t   DeprecationWarningt   setattrt   getattr(   R   (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt   test_charset_in_content_typeƒ   s     	c          C   s,   t  i d d d ƒ}  t t t |  d ƒ d  S(   NR   R   t   {t	   json_body(   R    R   R   t
   ValueErrorRQ   (   t   request(    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt   test_json_body_invalid_json   s    c          C   s0   t  i d d d ƒ}  t |  i h d d 6ƒ d  S(   NR   R   s   {"a":1}i   RL   (   R    R   R    RT   (   RV   (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt   test_json_body_valid_json¡   s    c          C   sW   d d  k  }  d } t i d d | ƒ} d | _ | i d } t | i d ƒ d ƒ d  S(	   NiÿÿÿÿsF   ÿþ{ " a " :   " / \ u 6 d 4 1 \ u 8 8 4 c \ u 8 d 8 b \ u 5 2 b f " } R   R   s    application/json; charset=utf-16RL   t   utf8s   /æµè¡Œè¶‹åŠ¿(   t   jsonR    R   t   content_typeRT   R    t   encode(   RZ   R   RV   t   s(    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt    test_json_body_alternate_charset¥   s    	c          C   s&   t  i d ƒ }  t t t |  d ƒ d  S(   NR   RT   (   R    R   R   RU   RQ   (   RV   (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt   test_json_body_GET_request°   s    c          C   s6   d }  t  i d d |  ƒ} | i t | i |  ƒ d  S(   Ns   test=%D1%82%D0%B5%D1%81%D1%82R   R   (   R    R   t   paramsR    R   (   R   R   (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt   test_non_ascii_body_params´   s    N(    t   webob.requestR    t
   nose.toolsR   R    R   t   webob.compatR   R   R   R   R   R   R   R"   R%   R   t   objectR   R6   R   R<   R=   R7   RC   RG   RR   RW   RX   R^   R_   Ra   (    (    (    s6   /home/chrism/projects/webob/tests/test_request_nose.pyt   <module>   s0   												
					