o
    iC                     @   sx   d Z ddlZddlZddlZddlmZ ddlZddlZdddZej	dd Z
G dd	 d	ZejjG d
d dZdS )zTest the kernels service API.    N)TemporaryDirectoryc                 C   s   | j }t|tjjr||jkrdS |dur|t|krdS dS tt|tjj	t|tjjgrK||j
kr6dS |rIt|jj d }||krIdS dS dS )z7Check that the error matches the expected output error.FNTmessage)value
isinstancetornadoweb	HTTPErrorstatus_codestrany
httpclientHTTPClientErrorcodejsonloadsresponsebodydecode)errorexpected_codeexpected_messageer    r   Z/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/jupyterlab/tests/test_build_api.pyexpected_http_error   s(   

r   c                 C   s
   t ||S N)BuildAPITester)jp_serverapplabapp
fetch_longr   r   r   build_api_tester&   s   
r    c                   @   s>   e Zd ZdZdZdd ZdddZdd	 Zd
d Zdd Z	dS )r   z#Wrapper for build REST API requestszlab/api/buildc                 C   s   || _ || _d S r   )r   fetch)selfr   r   r   r   r   __init__0   s   
zBuildAPITester.__init__Nc                    s   | j | j| ||dI d H S )N)methodr   )r!   url)r"   verbpathr   r   r   r   _req4   s   zBuildAPITester._reqc                       |  ddI d H S )NGET r(   r"   r   r   r   	getStatus7      zBuildAPITester.getStatusc                    s   |  ddti I d H S )NPOSTr+   )r(   r   dumpsr-   r   r   r   build:   s   zBuildAPITester.buildc                    r)   )NDELETEr+   r,   r-   r   r   r   clear=   r/   zBuildAPITester.clearr   )
__name__
__module____qualname____doc__r%   r#   r(   r.   r2   r4   r   r   r   r   r   +   s    
r   c                   @   s`   e Zd Zdd Zdd Zdd Zejje	j
dkdd	d
d Zejje	j
dkdd	dd ZdS )TestBuildAPIc                 C   s   t  }| j| |jS r   )r   tempdirsappendname)r"   tdr   r   r   tempdirC   s   zTestBuildAPI.tempdirc                    s   g  _  j fdd}d S )Nc                     s    j D ]} |   qd S r   )r:   cleanup)dr-   r   r   cleanup_tempdirsN   s   

z,TestBuildAPI.setUp.<locals>.cleanup_tempdirs)r:   
addCleanup)r"   rA   r   r-   r   setUpH   s   zTestBuildAPI.setUpc                    s@   |  I dH }|j }t|}d|v sJ d|v sJ dS )z3Make sure there are no kernels running at the startNstatusr   )r.   r   r   r   r   )r"   r    rresrespr   r   r   test_get_statusU   s   

zTestBuildAPI.test_get_statusntzCurrently failing on windows)reasonc                    s"   |  I d H }|jdksJ d S )N   )r2   r   )r"   r    rE   r   r   r   
test_build_   s   zTestBuildAPI.test_buildc                    s   t tjj}| I d H }|j }W d    n1 sw   Y  t|ds+J t	
 }t	j| |d 	 | I d H }|j }t|}|d dkrQnq9| I d H }|jdks`J d S )Ni  )loopTrD   building   )pytestraisesr   r   r   r4   r   r   r   asyncioget_event_loopensure_futurer2   r.   r   r   r   )r"   r    r   rE   rF   rM   rG   r   r   r   
test_clearf   s"   

zTestBuildAPI.test_clearN)r5   r6   r7   r>   rC   rH   rP   markskipifosr<   rL   rU   r   r   r   r   r9   A   s    

r9   r   )r8   rR   r   rX   tempfiler   rP   r   r   fixturer    r   rV   slowr9   r   r   r   r   <module>   s   

