o
    Mf%                     @   s   d dl Z d dlZd dlmZ d dlmZ d dlmZmZ dZ	dZ
ejdd Zejd	d
 Zejjdd Zejjdd Zejjdd Zejjdd Zejjdd Zejjdd ZdS )    N)Task)status)make_projectregister_ml_backend_mockbasic_ml_backendz<View><Image name="image" value="$image_url"/><Choices name="label"
          toName="image"><Choice value="pos"/><Choice value="neg"/></Choices></View>c                 c   s    t | ddd | V  d S )Nhttps://ml_backend_for_test_apiz1.0.0)urlsetup_model_version)r   )
ml_backend r   `/var/www/html/analyze/labelStudio/lib/python3.10/site-packages/label_studio/tests/ml/test_api.pyml_backend_for_test_api   s   
r   c                 C   s   | j ddd d S )Nzsocket.gethostbynamez321.21.21.21)return_value)patch)mockerr   r   r   mock_gethostbyname   s   r   c                 C   sf   t tdtdd| jd}|jdksJ | jd|jddd	d
}|jdks&J |  |jdks1J d S )NTtest_ml_backend_creationis_publishedlabel_configtitleconfiguser /api/ml/ml_backend_titler   projectr   r   data   )	r   dictPROJECT_CONFIGr   model_versionpostidstatus_coderefresh_from_dbbusiness_clientr   r   r   responser   r   r   #test_ml_backend_set_for_prelabeling   s&   	r,   c                 C   sf   t tdtdd| jd}t|_|  | jd|jdddd	}|j	d
ks&J |
  |jtks1J dS )zrWe are not setting it when its already set for another name,
    for example when predictions were uploaded beforeTr   r   r   r   r   r   r   r   r!   N)r   r"   r#   r   ORIG_MODEL_NAMEr$   saver%   r&   r'   r(   r)   r   r   r   'test_ml_backend_not_set_for_prelabeling9   s(   	r/   c                 C   s  t tdtdd| jd}|jdksJ | jd|jddd	d
}|jdks&J | }|d }| 	d| }|jdks=J | d dksGJ | j
d|j tddiddjdks]J | j
d| t|jddd	ddjdksuJ |  |jdksJ d S )NTr   r   r   r   r   #test_ml_backend_creation_ML_backendr   r   r   r!   r&      stateCO/api/projects/r$   application/jsonr    content_type	new_title)r   r"   r#   r   r$   r%   r&   r'   jsongetr   dumpsr(   r*   r   r   r   r+   rml_backend_idr   r   r   test_model_version_on_saveY   sZ   	


r?   c                 C   s  t tdtdd| jd}|jdksJ | jd|jddd	d
}|jdks&J | }|d }| 	d| }|jdks=J | d dksGJ | j
d|j tddiddjdks]J |  |jdkshJ | d| jdksuJ |  |jdksJ d S )NTr   r   r   r   r   r0   r   r   r   r!   r&   r1   r2   r3   r4   r$   r5   r6      )r   r"   r#   r   r$   r%   r&   r'   r9   r:   r   r;   r(   deleter<   r   r   r   test_model_version_on_delete   sF   	
rB   c           	   	   C   s~  t tdtdd| jd}| jd|jdddd	d
}|jdks J | }|d d d dks0J | jd|jddddddd
}|jdksFJ | }d|vsPJ |d }| d| }|jdkscJ d| vskJ | j	d| t
|jddddd}|jdksJ d| vsJ | j	d| t
|jdddddd}d| vsJ ddlm} |jj|d}|jdksJ d S ) NTr   r   r   r   r0   r   
BASIC_AUTH)r   r   r   auth_methodr   i  validation_errorsnon_field_errorsr   zJAuthentication username and password is required for Basic Authentication.r   z<SECRET>)r   r   r   rD   basic_auth_userbasic_auth_passr!   rH   r&   r1   new_title_1r   r5   r6   r8   z<ANOTHER_SECRET>)r   r   r   rH   )	MLBackend)r&   )r   r"   r#   r   r%   r&   r'   r9   r:   r   r;   	ml.modelsrJ   objectsrH   )	r*   r   r   r   r+   r=   r>   rJ   r
   r   r   r    test_security_write_only_payload   s   
rM   c                 C   s   t tdtdd| jdd}tjj|ddid |  | 	 }| 
d|j d	}|jtjks3J | }|d
 dks?J |d dksGJ d S )NTr   r   )r   r   use_ml_backendimagezhttp://example.com/image.jpg)r   r    r   z/predict/test?random=truer   zhttp://localhost:8999/predictr   r1   )r   r"   r#   r   r   rL   creater(   get_ml_backendsfirstr%   r&   r'   r   HTTP_200_OKr9   )r*   r   r
   r+   r=   r   r   r   1test_ml_backend_predict_test_api_post_random_true  s"   	rT   )r9   pytestprojects.modelsr   rest_frameworkr   label_studio.tests.utilsr   r   r-   r#   fixturer   r   mark	django_dbr,   r/   r?   rB   rM   rT   r   r   r   r   <module>   s.    
	



9
/
Y