
    	]j%                        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        Zej                  d        Zej                  j                  d	        Zej                  j                  d
        Zej                  j                  d        Zej                  j                  d        Zej                  j                  d        Zej                  j                  d        Zy)    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              #   0   K   t        | dd       |  y w)Nhttps://ml_backend_for_test_apiz1.0.0)urlsetup_model_version)r   )
ml_backends    H/root/env/lib/python3.12/site-packages/label_studio/tests/ml/test_api.pyml_backend_for_test_apir      s     -#
 s   c                 *    | j                  dd       y )Nzsocket.gethostbynamez321.21.21.21)return_value)patch)mockers    r   mock_gethostbynamer      s    
LL'nLE    c                    t        t        dt        d      | j                        }|j                  dk(  sJ | j                  d|j                  ddd	
      }|j                  dk(  sJ |j                          |j                  dk(  sJ y )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"   responses        r   #test_ml_backend_set_for_prelabelingr0      s    ',

 !!G   B&&& ##zz'4
 $ H 3&&&  $6666r   c                 6   t        t        dt        d      | j                        }t        |_        |j                          | j                  d|j                  ddd	      }|j                  d
k(  sJ |j                          |j
                  t        k(  sJ y)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-   s        r   'test_ml_backend_not_set_for_prelabelingr4   9   s    
 ',

 !!G ,GLLN ##zz'4
 $ H 3&&&  O333r   c           	         t        t        dt        d      | j                        }|j                  dk(  sJ | j                  d|j                  ddd	
      }|j                  dk(  sJ |j                         }|d   }| j                  d|       }|j                  dk(  sJ |j                         d   dk(  sJ | j                  d|j                   t        j                  ddi      d      j                  dk(  sJ | j                  d| t        j                  |j                  ddd	      d      j                  dk(  sJ |j                          |j                  dk(  sJ y )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_ids          r   test_model_version_on_saverE   Y   s   ',

 !!G   B&&& ##zz:4
 $ H 3&&&AdGM""Xm_#=>H3&&&==?7#t+++ 	WZZL)_.STU+ 	 	
 +		 	}o&&zz(< , 	 
	
 +		   K///r   c                    t        t        dt        d      | j                        }|j                  dk(  sJ | j                  d|j                  ddd	
      }|j                  dk(  sJ |j                         }|d   }| j                  d|       }|j                  dk(  sJ |j                         d   dk(  sJ | j                  d|j                   t        j                  ddi      d      j                  dk(  sJ |j                          |j                  dk(  sJ | j                  d|       j                  dk(  sJ |j                          |j                  dk(  sJ y )NTr   r   r   r   r   r6   r	   r!   r#   r%   r*   r7   r8   r9   r:   r(   r;   r<      )r   r&   r'   r   r(   r)   r*   r+   r?   r@   r   rA   r,   deleterB   s          r   test_model_version_on_deleterI      s   ',

 !!G   B&&& ##zz:4
 $ H 3&&&AdGM""Xm_#=>H3&&&==?7#t+++ 	WZZL)_.STU+ 	 	
 +		   $IIII !!H]O"<=IISPPP  B&&&r   c           
         t        t        dt        d      | j                        }| j	                  d|j
                  dddd	
      }|j                  dk(  sJ |j                         }|d   d   d   dk(  sJ | j	                  d|j
                  dddddd
      }|j                  dk(  sJ |j                         }d|vsJ |d   }| j                  d|       }|j                  dk(  sJ d|j                         vsJ | j                  d| t        j                  |j
                  ddd      d      }|j                  dk(  sJ d|j                         vsJ | j                  d| t        j                  |j
                  dddd      d      }d|j                         vsJ ddlm} |j                  j                  |      }|j                  dk(  sJ y ) NTr   r   r   r   r6   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
   rL   basic_auth_userbasic_auth_passr%   rP   r*   r7   new_title_1r!   r;   r<   r>   z<ANOTHER_SECRET>)r"   r   r
   rP   )	MLBackend)r*   )r   r&   r'   r   r)   r*   r+   r?   r@   r   rA   	ml.modelsrR   objectsrP   )	r.   r   r   r"   r/   rC   rD   rR   r   s	            r    test_security_write_only_payloadrU      sH   ',

 !!G ##zz:4'	
 $ 
H 3&&&A	
1215W	X	X
 ##zz:4'%)
 $ 
H 3&&&AA%%%dGM""Xm_#=>H3&&&HMMO333 $$
=/"ZZ"::&8
 ( % 
H 3&&&HMMO333 $$
=/"ZZ"::$8#5	
 ( % H HMMO333#""&&-&8J%%);;;;r   c                    t        t        dt        d      | j                  d      }t        j
                  j                  |ddi       |j                          |j                         j                         }| j                  d|j                   d	      }|j                  t        j                  k(  sJ |j                         }|d
   dk(  sJ |d   dk(  sJ y )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   r7   )r   r&   r'   r   r   rT   creater,   get_ml_backendsfirstr)   r*   r+   r   HTTP_200_OKr?   )r.   r"   r   r/   rC   s        r   1test_ml_backend_predict_test_api_post_random_truer]     s    ',

 !!G 	LLw8V.WX ((*002J##hz}}o=V$WXH6#5#5555AU86666X;#r   )r?   pytestprojects.modelsr   rest_frameworkr   label_studio.tests.utilsr   r   r2   r'   fixturer   r   mark	django_dbr0   r4   rE   rI   rU   r]    r   r   <module>rf      s       ! K$X   F F 7 76 4 4> 60 60r ,' ,'^ V< V<r  r   