σ
ΌS]c           @@ s   d  d l  m Z m Z d  d l Z d  d l Z d  d l 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 e f d     YZ d	 e f d
     YZ d e f d     YZ d   Z d e f d     YZ d d d  Z d S(   i    (   t   absolute_importt   print_functionN(   t   IOLoop(   t
   HTTPServer(   t   bind_sockets(   t   Applicationt   RequestHandlert   ProjectViewHandlerc           B@ s#   e  Z d    Z d   Z d   Z RS(   c         O@ s    t  t |   j | | |  d  S(   N(   t   superR   t   __init__(   t   selft   applicationt   argst   kwargs(    (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyR	      s    c         O@ sΠ   | d } | d k r d |  j  j j k r; |  j d  qΜ d |  j  j j k rp |  j d d  |  j d  qΜ |  j d d  |  j d	  n< | d
 k rΌ |  j d d  |  j d  n |  j d d  d  S(   Ni    t   usert   authi  t   missing_logins   Content-Types   application/jsons   {}s   {"login":"fake_username"}
s   user/foobars   {"login":"foobar"}
t   status_codei  (   R   t   servert
   fail_theset
   set_statust
   set_headert   write(   R
   R   R   t   path(    (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyt   get   s    
c   	      O@ sΑ  | d } | d k r[ d |  j  j j k r; |  j d  q½|  j d d  |  j d  nb| j d  r΅| t d  } | j d	 d
  \ } } | d k rQd |  j  j j k rΓ |  j d  q²t	 j
 |  j j j d   } d | k sσ t  | d |  j  j j k st  |  j  j j d } |  j d d  |  j d d d |  q½| d k r’d |  j  j j k r|  j d  q²|  j d d  |  j d  q½|  j d d  n| d k r­d |  j  j j k rζ|  j d  q½|  j d  d k r!t d d t j |  j d d  q½d |  j j k s9t  t |  j j d  d
 k s[t  |  j j d d } | d |  j  j j k st  t | d  d k s½t  n |  j d d  d  S(    Ni    s   apps/fake_username/projectst   createiυ  s   Content-Types   application/jsons   {}
s   apps/fake_username/projects/t   /i   t   stages   utf-8t   basenamet   fake_s3s   {"post_url":"%s", s6   "form_data":{"x-should-be-passed-back-to-us":"12345"},s   "dist_id":"rev42"}
s   commit/rev42t   commits$   {"url":"http://example.com/whatevs"}R   i  t   s3s   x-should-be-passed-back-to-ust   12345s   form_data for s3 wasn't sentt   fileiτ  t   filenamet   bodyid   (   R   R   R   R   R   R   t
   startswitht   lent   splitt   jsont   loadst   requestR#   t   decodet   AssertionErrort   expected_basenamet   urlt   get_body_argumentt   printt   syst   stderrt   files(	   R
   R   R   R   t   projectt	   operationR#   t   post_urlt   fileinfo(    (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyt   post-   sJ    
"(   t   __name__t
   __module__R	   R   R7   (    (    (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyR      s   		t   FakeAnacondaApplicationc           B@ s   e  Z d    Z RS(   c         K@ s5   | |  _  d t f g } t t |   j | |  d  S(   Ns   /(.*)(   R   R   R   R:   R	   (   R
   R   R   t   patterns(    (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyR	   _   s    	(   R8   R9   R	   (    (    (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyR:   ^   s   t   FakeAnacondaServerc           B@ s8   e  Z d    Z e d    Z e d    Z d   Z RS(   c         C@ sΖ   | |  _  | |  _ t d |   |  _ t |  j  |  _ t d d  d d  } d  |  _ x6 | D]. } | j	 t
 j k r[ | j   d |  _ q[ q[ W|  j d  k	 s’ t  |  j j |  |  j j d  d  S(   NR   t   portt   addresss	   127.0.0.1i   (   R   R,   R:   t   _applicationR   t   _httpR   t   Nonet   _portt   familyt   sockett   AF_INETt   getsocknameR+   t   add_socketst   start(   R
   R   R,   t   socketst   s(    (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyR	   g   s    			c         C@ s   |  j  S(   N(   RB   (   R
   (    (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyR=   z   s    c         C@ s   d |  j  S(   Ns   http://localhost:%d/(   R=   (   R
   (    (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyR-   ~   s    c         C@ s   |  j  j   |  j  j   d S(   sH   Permanently close down the HTTP server, no longer listen on any sockets.N(   R@   t   close_all_connectionst   stop(   R
   (    (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyt   unlisten   s    (   R8   R9   R	   t   propertyR=   R-   RM   (    (    (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyR<   f   s   	c         @ s`   t  t  d    f d  } y  d d  l } |  j d |  Wn! t k
 r[ |  j d |  n Xd  S(   Nc         @ s   i   d 6S(   NR-   (    (   R   t   sitet   remote_site(   R-   (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyt   _mock_get_config   s    i    s&   binstar_client.utils.config.get_configs   binstar_client.utils.get_config(   t   TrueRA   t   binstar_client.utils.configt   setattrt	   Exception(   t   monkeypatchR-   RQ   t   binstar_client(    (   R-   s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyt   _monkeypatch_client_config   s    t   FakeServerContextc           B@ s5   e  Z d    Z d   Z d   Z d   Z d   Z RS(   c         C@ sX   | |  _  | |  _ | |  _ d  |  _ d  |  _ t j   |  _ t j	 d |  j
  |  _ d  S(   Nt   target(   t   _monkeypatcht   _fail_theset   _expected_basenameRA   t   _urlt   _loopt	   threadingt	   Conditiont   _startedt   Threadt   _runt   _thread(   R
   RV   R   R,   (    (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyR	      s    					c         C@ s6   |  j  d  k	 r% |  j  j |  j  n  |  j j   d  S(   N(   R_   RA   t   add_callbackt   _stopRe   t   join(   R
   t   typet   valuet	   traceback(    (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyt   __exit__   s    c         C@ sN   |  j  j   |  j j   |  j  j   |  j  j   t |  j |  j  |  j S(   N(	   Rb   t   acquireRe   RH   t   waitt   releaseRX   R[   R^   (   R
   (    (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyt	   __enter__₯   s    c         @ sv   t      _ t d   j d   j    _   j j   _   f d   }   j j |    j j	     j j
   d  S(   NR   R,   c           @ s+     j  j     j  j     j  j   d  S(   N(   Rb   Rm   t   notifyRo   (    (   R
   (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyt   notify_started²   s    (   R   R_   R<   R\   R]   t   _serverR-   R^   Rf   RH   RM   (   R
   Rr   (    (   R
   s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyRd   ­   s    c         @ s>     f d   }   j  d  k	 r:   j  j d d d |  n  d  S(   Nc           @ s,     j  d  k	 r(   j  j   d    _  n  d  S(   N(   R_   RA   RL   (    (   R
   (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyt   really_stop½   s    t   delayg©?t   callback(   R_   RA   t
   call_later(   R
   Rt   (    (   R
   s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyRg   Ό   s    (   R8   R9   R	   Rl   Rp   Rd   Rg   (    (    (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyRY      s
   					t   nopec         C@ s   t  |  | |  S(   N(   RY   (   RV   R   R,   (    (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyt   fake_serverΙ   s    (    (   t
   __future__R    R   R'   RD   R0   R`   t   tornado.ioloopR   t   tornado.httpserverR   t   tornado.netutilR   t   tornado.webR   R   R   R:   t   objectR<   RX   RY   Ry   (    (    (    s@   lib/python2.7/site-packages/anaconda_project/test/fake_server.pyt   <module>   s   I"	5