
    cq"                         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Zd dlm	Z	 d dl
mZ d dlmZ d dlmZmZ d dlmZ  G d d	e          Z G d
 de          Z G d de          Zd Z G d de          ZddZdS )    )absolute_importprint_functionN)IOLoop)
HTTPServer)bind_sockets)ApplicationRequestHandler)genc                   *     e Zd Z fdZd Zd Z xZS )ProjectViewHandlerc                 P     t          t          |           j        |g|R i | d S N)superr   __init__)selfapplicationargskwargs	__class__s       Alib/python3.11/site-packages/anaconda_project/test/fake_server.pyr   zProjectViewHandler.__init__   s7    0 $''0NtNNNvNNNNN    c                 &   |d         }|dk    rd| j         j        j        v r|                     d           d S d| j         j        j        v r-|                     dd           |                     d           d S |                     dd           |                     d	           d S |d
k    r-|                     dd           |                     d           d S |dk    rB|                     d           |                     dd           |                     d           d S |dk    rt          j                            t                    }t          t          j                            |d          d          5 }|                     |                                           d d d            n# 1 swxY w Y   |                     dd           |                     dd           |                     d           d S |                     d           d S )Nr   userauthi  missing_loginContent-Typeapplication/jsonz{}z{"login":"fake_username"}
zuser/foobarz{"login":"foobar"}
z(apps/fake_username/projects/fake_projectz{"name":"fake_project"}   z1apps/fake_username/projects/fake_project/downloadzfake_project.ziprbzapplication/zipzContent-DispositionzJattachment; filename="fake_project.zip"; filename*=UTF-8''fake_project.zip  status_code)r   server
fail_these
set_status
set_headerwriteospathdirname__file__openjoinread)r   r   r   r)   r*   fs         r   getzProjectViewHandler.get   sU   Aw6> 	-)0;; >$$$$$"d&6&=&HH >OON4FGGGJJt$$$$$OON4FGGGJJ<=====]" 	-OON,>???JJ-.....?? 	-JJ0111OON,>???OOC     HH 
	-gooh//Gbgll7,>??FF %!

16688$$$% % % % % % % % % % % % % % % OON,=>>>OO1np p pOOC     OOO,,,,,s   9(F--F14F1c                    |d         }|dk    rWd| j         j        j        v r|                     d           d S |                     dd           |                     d           d S |                    d          rm|t          d          d          }|                    d	d
          \  }}|dk    rd| j         j        j        v r|                     d           d S t          j
        | j        j                            d                    }d|v sJ |d         | j         j        j        k    sJ | j         j        j        dz   }|                     dd           |                     d|z             d S |dk    rWd| j         j        j        v r|                     d           d S |                     dd           |                     d           d S |                     d           d S |dk    rd| j         j        j        v r|                     d           d S |                     d          dk    r3t#          dt$          j                   |                     d           d S d| j        j        v sJ t          | j        j        d                   d
k    sJ | j        j        d         d         }|d         | j         j        j        k    sJ t          |d                   dk    sJ d S |                     d           d S )Nr   zapps/fake_username/projectscreatei  r   r   z{}
zapps/fake_username/projects//   stagezutf-8basenamefake_s3z[{"post_url":"%s", "form_data":{"x-should-be-passed-back-to-us":"12345"},"dist_id":"rev42"}
zcommit/rev42commitz${"url":"http://example.com/whatevs"}r    r!   s3zx-should-be-passed-back-to-us12345zform_data for s3 wasn't sent)filei  r;   filenamebodyd   )r   r#   r$   r%   r&   r'   
startswithlensplitjsonloadsrequestr=   decodeexpected_basenameurlget_body_argumentprintsysstderrfiles)	r   r   r   r)   project	operationr=   post_urlfileinfos	            r   postzProjectViewHandler.post<   sX   Aw00 +	-4+2== #$$$$$0BCCC

6"""""__;<< %	-:;;<<=D#'::c1#5#5 WiG# 1d.5@@ 	FOOC(((((:dl&7&>&>w&G&GHHD%----
+t/?/F/XXXXX#/6:YFHOON4FGGGJJ !7;C E F F F F Fn, 1t/6AA GOOC(((((OON4FGGGJJEFFFFFC00000Y 	-t'.99 7$$$$$))*IJJgU 78szJJJJOOO44444!T\%77777t|1&9::a????#|1&9!<H#J/43C3J3\\\\\x/003666666OOO,,,,,r   )__name__
__module____qualname__r   r0   rQ   __classcell__r   s   @r   r   r      s\        O O O O O- - -@.- .- .- .- .- .- .-r   r   c                        e Zd Z fdZ xZS )FakeAnacondaApplicationc                 l    || _         dt          fg} t          t          |           j        |fi | d S )Nz/(.*))r#   r   r   rX   r   )r   r#   r   patternsr   s       r   r   z FakeAnacondaApplication.__init__n   sD    1235%t,,5hII&IIIIIr   )rR   rS   rT   r   rU   rV   s   @r   rX   rX   m   sA        J J J J J J J J Jr   rX   c                   f    e Zd Zd Zed             Zed             Zej        d             Z	d Z
dS )FakeAnacondaServerc                    || _         || _        t          |           | _        t	          | j                  | _        t          d d          }d | _        |D ]6}|j        t          j
        k    r|                                d         | _        7| j        J | j                            |           | j                            d           d S )N)r#   z	127.0.0.1)portaddressr4   )r$   rF   rX   _applicationr   _httpr   _portfamilysocketAF_INETgetsocknameadd_socketsstart)r   r$   rF   socketsss        r   r   zFakeAnacondaServer.__init__v   s    $!234@@@ 122
 D+>>>
 	0 	0Ax6>) 0]]__Q/
z%%%
w'''
r   c                     | j         S r   )rb   r   s    r   r^   zFakeAnacondaServer.port   s
    zr   c                     d| j         z  S )Nzhttp://localhost:%d/)r^   rl   s    r   rG   zFakeAnacondaServer.url   s    %	11r   c                 8    | j                                          d S r   )ra   close_all_connectionsrl   s    r   	close_allzFakeAnacondaServer.close_all   s    
((*****r   c              #   h   K   | j                                          |                                 V  dS )zHPermanently close down the HTTP server, no longer listen on any sockets.N)ra   stoprp   rl   s    r   unlistenzFakeAnacondaServer.unlisten   s4      
nnr   N)rR   rS   rT   r   propertyr^   rG   r
   	coroutinerp   rs    r   r   r\   r\   u   s          &   X 2 2 X2 	]+ + ]+    r   r\   c                     dfd	}	 dd l }|                     d|           d S # t          $ r |                     d|           Y d S w xY w)NTc                     diS )NrG   rv   )r   siteremote_siterG   s      r   _mock_get_configz4_monkeypatch_client_config.<locals>._mock_get_config   s    s|r   r   z&binstar_client.utils.config.get_configzbinstar_client.utils.get_config)TTN)binstar_client.utils.configsetattr	Exception)monkeypatchrG   r{   binstar_clients    `  r   _monkeypatch_client_configr      s         Q****DFVWWWWW Q Q Q=?OPPPPPPQs   %  A	A	c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )FakeServerContextc                     || _         || _        || _        d | _        d | _        t          j                    | _        t          j        | j	                  | _
        d S )N)target)_monkeypatch_fail_these_expected_basename_url_loop	threading	Condition_startedThread_run_thread)r   r   r$   rF   s       r   r   zFakeServerContext.__init__   sS    '%"3	
!+-- 'ty999r   c                     | j         | j                             | j                   | j                                         d S r   )r   add_callback_stopr   r-   )r   typevalue	tracebacks       r   __exit__zFakeServerContext.__exit__   s@    : 	0 J##DJ///r   c                    | j                                          | j                                         | j                                          | j                                          t          | j        | j                   | j        S r   )	r   acquirer   rh   waitreleaser   r   r   rl   s    r   	__enter__zFakeServerContext.__enter__   so    "4#4di@@@yr   c                 2    t                       _        t           j         j                   _         j        j         _         fd} j                            |            j        	                                  j        
                                 d S )N)r$   rF   c                       j                                           j                                           j                                          d S r   )r   r   notifyr   rl   s   r   notify_startedz.FakeServerContext._run.<locals>.notify_started   sE    M!!###M  """M!!#####r   )r   r   r\   r   r   _serverrG   r   r   rh   rs   )r   r   s   ` r   r   zFakeServerContext._run   s    XX
)T5EY]YpqqqL$		$ 	$ 	$ 	$ 	$
 	
///
r   c                 \      fd} j          j                             d|           d S d S )Nc                  Z     j         " j                                          d  _         d S d S r   )r   rr   rl   s   r   really_stopz,FakeServerContext._stop.<locals>.really_stop   s4    z "
!!!!


" "r   g?)delaycallback)r   
call_later)r   r   s   ` r   r   zFakeServerContext._stop   sV    	" 	" 	" 	" 	" : 	DJ!!{!CCCCC	D 	Dr   N)rR   rS   rT   r   r   r   r   r   rv   r   r   r   r      sd        : : :         
D 
D 
D 
D 
Dr   r   rv   nopec                 $    t          | ||          S r   )r   )r   r$   rF   s      r   fake_serverr      s    [*6GHHHr   )rv   r   )
__future__r   r   rB   r(   rd   rJ   r   tornado.ioloopr   tornado.httpserverr   tornado.netutilr   tornado.webr   r	   tornador
   r   rX   objectr\   r   r   r   rv   r   r   <module>r      s   7 6 6 6 6 6 6 6  				  



     ! ! ! ! ! ! ) ) ) ) ) ) ( ( ( ( ( ( 3 3 3 3 3 3 3 3      S- S- S- S- S- S- S- S-lJ J J J Jk J J J# # # # # # # #L	Q 	Q 	Q2D 2D 2D 2D 2D 2D 2D 2DjI I I I I Ir   