Ñò
ïLc           @   s$  d  d k  Z  d  d k l Z l Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k	 Z	 d  d k
 Z
 y d  d k
 l Z l Z Wn) e j
 o d  d k l Z l Z n Xd  d k Z d  d k l Z e i d ƒ Z e i ƒ  d d Z d e f d	 „  ƒ  YZ d a d
 „  Z d S(   iÿÿÿÿN(   t   BaseHTTPRequestHandlert
   HTTPServer(   t	   parse_qslt   parse_qs(   t   to_bytestrings	   127.0.0.1iy  i   t   HTTPTestHandlerc           B   sY   e  Z d  „  Z d „  Z d „  Z e Z d „  Z d „  Z d d „ Z	 d „  Z
 d „  Z RS(	   c         C   s=   d t  i d ƒ d  |  _ d |  _ t i |  | | | ƒ d  S(   Ns   Basic s	   test:testiÿÿÿÿi    (   t   base64t   encodestringt   autht   countR    t   __init__(   t   selft   requestt   client_addresst   server(    (    sD   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/_server_test.pyR
   (   s    	c   	      C   s  t  i  t i |  i ƒ ƒ |  _ h  |  _ x7 t |  i d ƒ D]" \ } } | i d ƒ |  i | <q; W|  i d } | d j o  d, g } |  i d | d ƒ ng| d	 j o  d- g } |  i d | d
 ƒ n:| d j oS |  i	 i
 d d ƒ } | d j o |  i d ƒ qd. g } |  i d | d ƒ nÚ| d j o  d/ g } |  i d | d ƒ n­| d j o  d0 g } |  i d | d ƒ n€| d j oW |  i i
 d t ƒ } | o- | d j o  d1 g } |  i d | d ƒ q|  i ƒ  n| d j oW |  i i
 d t ƒ } | o- | d j o  d2 g } |  i d | d ƒ q|  i ƒ  n¸| d j oÐ d3 g } d |  i	 j o4 d } | i d d | f ƒ |  i d | d ƒ q|  i	 d t d ƒ d } t i | ƒ i d ƒ } | d  d j o( | d d j o |  i d | d ƒ q|  i d! | d" ƒ nÛ | d# j o# d4 d5 g } |  i d& | d ƒ n« | d% j o  d6 g } |  i d | d ƒ n~ | d' j o- d7 d$ d( t f g } |  i d& | d ƒ nD | d) j o  d8 g } |  i d | d ƒ n |  i d* d9 g d+ ƒ d  S(:   Ni   s   utf-8i   t   /s   Content-types
   text/plainiÈ   t   welcomes   /unicodeu   Ã©Ã Ã¹@s   /jsons   content-types   application/jsons   bad typet   oks   /Ã©Ã Ã¹s   /tests   /queryt   testt   testings   /qintt   1s   /autht   Authorizations   WWW-Authenticates   Basic realm="%s"i‘  t    t   Basici   t   :i    i“  s   niet!s	   /redirectt   Locations   /complete_redirecti-  s   /redirect_to_urls%   http://localhost:%s/complete_redirects   /pooli”  s	   Not Found(   s   Content-types
   text/plain(   s   Content-types
   text/plain(   s   Content-types
   text/plain(   s   Content-types
   text/plain(   s   Content-types
   text/plain(   s   Content-types
   text/plain(   s   Content-types
   text/plain(   s   Content-types
   text/plain(   s   Content-types
   text/plain(   R   s   /complete_redirect(   s   Content-types
   text/plain(   s   Content-types
   text/plain(   s   Content-types
   text/plain(   s   Content-types
   text/plain(   t   urlparset   urllibt   unquotet   patht
   parsed_urit   queryR   t   decodet   _respondt   headerst   gett   error_Responset   Falset   appendt   lenR   t	   b64decodet   splitt   PORT(	   R   t   kt   vR   t   extra_headerst   content_typeR   t   realmR   (    (    sD   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/_server_test.pyt   do_GET.   s~    	 								"				c         C   sÙ  t  i  |  i ƒ |  _ h  |  _ x7 t |  i d ƒ D]" \ } } | i d ƒ |  i | <q2 W|  i d } g  } | d j ol |  i i d d ƒ } | i d | f ƒ t	 |  i i d d	 ƒ ƒ } |  i
 i | ƒ } |  i d
 | | ƒ nò| d j ol |  i i d d ƒ } | i d | f ƒ t	 |  i i d d	 ƒ ƒ } |  i
 i | ƒ } |  i d
 | | ƒ ny| d j ol |  i i d d ƒ } | i d | f ƒ t	 |  i i d d	 ƒ ƒ } |  i
 i | ƒ } |  i d
 | | ƒ n | d j oŽ |  i i d d ƒ } | d j o |  i d | ƒ qÕ| i d | f ƒ t	 |  i i d d ƒ ƒ } |  i
 i | ƒ } |  i d
 | | ƒ ne| d j o‡ |  i i d d ƒ } | i d | f ƒ t	 |  i i d d ƒ ƒ } |  i
 i | ƒ } | d j o |  i d
 | d ƒ qÕ|  i ƒ  nÑ| d j oW |  i i d t ƒ } | o- | d j o  d( g } |  i d
 | d ƒ qÕ|  i ƒ  nm| d j o® |  i i d d ƒ } | i d | f ƒ t	 |  i i d d ƒ ƒ } |  i
 i | ƒ } t | ƒ }	 |	 d d g j o+ |	 d d g j o |  i d
 | d ƒ qÕ|  i ƒ  n²| d j oš t i |  i i d ƒ ƒ \ }
 } t	 |  i i d d ƒ ƒ } |
 d j oC t i |  i
 | ƒ } | d d } d) g } |  i d
 | | ƒ qÕ|  i ƒ  n| d j ox |  i i d d ƒ } | i d | f ƒ t	 |  i i d d ƒ ƒ } |  i
 i | ƒ } |  i d
 | t t | ƒ ƒ ƒ n†| d j o‹ |  i i d d ƒ } | i d | f ƒ t	 |  i i d d ƒ ƒ } |  i
 i | ƒ } | i d  t t | ƒ ƒ f ƒ |  i d
 | | ƒ nî | d! j oc t	 |  i i d d ƒ ƒ } |  i
 i | ƒ } | i d  t t | ƒ ƒ f ƒ |  i d
 | | ƒ n~ | d" j oc |  i i d# ƒ d$ j } | o6 |  i
 i d% ƒ } | i d* ƒ |  i d
 | | ƒ qÕ|  i ƒ  n |  i d' ƒ d  S(+   Ni   s   utf-8i   R   s   content-types
   text/plains   Content-types   Content-lengths   -1iÈ   s   /bytestrings   /unicodes   /jsons   application/jsons   bad type: %si    s   /emptyR   R   s   /queryR   R   s   /formt   at   bs
   /multiparts   multipart/form-datat   ts   /1Ms   /larges   Content-Types   Content-Lengths   /lists   /chunkeds   transfer-encodingt   chunkedi   t   29s   Bad path(   s   Content-types
   text/plain(   s   Content-types
   text/plain(   s   Content-LengthR5   (   R   R   R   R   R   R    R"   R#   R&   t   intt   rfilet   readR!   R$   R%   R   t   cgit   parse_headert	   getheadert   parse_multipartt   strR'   (   R   R+   R,   R   R-   R.   t   content_lengtht   bodyR   t   formt   ctypet   pdictt   reqt   te(    (    sD   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/_server_test.pyt   do_POST   s¶    	 	(!	#c         C   s>   |  i  d j o  d g } |  i d | d ƒ n |  i ƒ  d  S(   Ns   /deletes   Content-types
   text/plainiÈ   R   (   s   Content-types
   text/plain(   R   R!   R$   (   R   R-   (    (    sD   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/_server_test.pyt	   do_DELETEè   s    	c         C   s>   |  i  d j o  d g } |  i d | d ƒ n |  i ƒ  d  S(   Ns   /oks   Content-types
   text/plainiÈ   R   (   s   Content-types
   text/plain(   R   R!   R$   (   R   R-   (    (    sD   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/_server_test.pyt   do_HEADï   s    	c         C   sœ   d |  i  f d |  i f g } | o | i d | f ƒ n d g } x+ | D]# \ } } | i d | | f ƒ qL Wd i | ƒ } |  i d d
 g | ƒ d  S(   Ns   HTTP methodR   t   messages   Bad request:
s	    %s: %s
R   i  s   Content-types
   text/plain(   s   Content-types
   text/plain(   t   commandR   R&   t   joinR!   (   R   RH   RC   t
   body_partsR+   R,   R?   (    (    sD   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/_server_test.pyR$   ö   s    	 c         C   s‰   |  i  | ƒ g  } x1 | D]) \ } } |  i | | ƒ | i | ƒ q W| o t | ƒ } n |  i ƒ  |  i i | ƒ |  i i ƒ  d  S(   N(   t   send_responset   send_headerR&   R   t   end_headerst   wfilet   writet   close(   R   t	   http_codeR-   R?   t   keysR+   R,   (    (    sD   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/_server_test.pyR!     s     
c         C   s<   |  i  i p |  i  i ƒ  n |  i  i ƒ  |  i i ƒ  d  S(   N(   RO   t   closedt   flushRQ   R7   (   R   (    (    sD   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/_server_test.pyt   finish  s    N(   t   __name__t
   __module__R
   R0   RE   t   do_PUTRF   RG   t   NoneR$   R!   RV   (    (    (    sD   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/_server_test.pyR   &   s   		Q	g			c          C   sW   t  d  j	 o d  St t t f t ƒ }  t i d |  i ƒ a  t  i	 t
 ƒ t  i ƒ  d  S(   Nt   target(   t   server_threadRZ   R   t   HOSTR*   R   t	   threadingt   Threadt   serve_forevert	   setDaemont   Truet   start(   R   (    (    sD   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/_server_test.pyt   run_server_test  s    (   R   t   BaseHTTPServerR    R   R9   t   ost   sockett   tempfileR^   t   unittestR   R   R   t   ImportErrorR   t   restkit.utilR   t   getfqdnR]   t   getpidR*   R   RZ   R\   Rd   (    (    (    sD   /Users/benoitc/Work/couchdbkit_env/src/restkit/tests/_server_test.pyt   <module>   s&   ó