
    	]jN                        d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ dd	lmZ d
dlmZ  edd      e j                   j"                  d               Z edd      e j                   j"                  d               Z edd      e j                   j"                  d               Z edd      e j                   j"                  d               Z edd      e j                   j"                  d               Z edd      e j                   j"                  d               Z edd      e j                   j"                  d               Z edd      e j                   j"                  d               Zy)    N)
LSAPIToken)create_organization)status)Token)	APIClient)User   )mock_feature_flag   )create_user_with_token_settings8fflag__feature_develop__prompts__dia_1829_jwt_token_authT)	flag_namevaluec                  x    t               } | j                  d      }|j                  t        j                  k(  sJ y )N/api/projects/)r   getstatus_coder   HTTP_401_UNAUTHORIZEDclientresponses     U/root/env/lib/python3.12/site-packages/label_studio/tests/jwt_auth/test_middleware.py,test_request_without_auth_header_returns_401r      s4     [Fzz*+H6#?#????    c                      t               } | j                  d       | j                  d      }|j                  t        j
                  k(  sJ y )NzBearer invalid.token.hereHTTP_AUTHORIZATIONr   )r   credentialsr   r   r   r   r   s     r   +test_request_with_invalid_token_returns_401r      sF     [F
*EFzz*+H6#?#????r   c                  0   t        dd      } t        j                  |       }t               }|j	                  d|j
                          |j                  d      }|j                  t        j                  k(  sJ |j                  j                  | k(  sJ y NTFapi_tokens_enabledlegacy_api_tokens_enabledBearer r   r   )r   r   for_userr   r   access_tokenr   r   r   HTTP_200_OKwsgi_requestuserr*   refreshr   r   s       r   8test_request_with_valid_token_returns_authenticated_userr-      s     +d^cdD!!$'G[F
GG4H4H3I*JKzz*+H6#5#5555  %%---r   c                      t        dd      } t        j                  |       }t               }|j	                  d|j
                          |j                  d      }|j                  t        j                  k(  sJ y )NFTr"   r%   r   r   )
r   r   r&   r   r   r'   r   r   r   r   r+   s       r   6test_jwt_token_auth_disabled_user_cannot_use_jwt_tokenr/   ,   sp     +e_cdD!!$'G[F
GG4H4H3I*JKzz*+H6#?#????r   c                  J   t        dd      } t               }t        j                  |       }|j	                  d|j
                          |j                  d      }|j                  t        j                  k(  sJ |j                  j                  | k(  sJ t        j                  j                  |       \  }}|j	                  d|j                          |j                  d      }|j                  t        j                  k(  sJ |j                  j                  | k(  sJ y )NTr"   r%   r   r   r*   Token )r   r   r   r&   r   r'   r   r   r   r(   r)   r*   r   objectsget_or_createkeyr*   r   r,   r   token_s         r   5test_user_with_both_auth_enabled_can_use_both_methodsr9   8   s    +d^bcD[F !!$'G
GG4H4H3I*JKzz*+H6#5#5555  %%--- }}***5HE1
F599+*>?zz*+H6#5#5555  %%---r   c                     t        dd      } t               }t        j                  |       }|j	                  d|j
                          |j                  d      }|j                  t        j                  k(  sJ t        j                  j                  |       \  }}|j	                  d|j                          |j                  d      }|j                  t        j                  k(  sJ y )NFr"   r%   r   r   r1   r2   )r   r   r   r&   r   r'   r   r   r   r   r   r3   r4   r5   r6   s         r   7test_user_with_no_auth_enabled_cannot_use_either_methodr;   Q   s     +e_deD[F !!$'G
GG4H4H3I*JKzz*+H6#?#???? }}***5HE1
F599+*>?zz*+H6#?#????r   c                     t        dd      } t        j                  |       }t               }|j	                  d|j
                          |j                  d      }|j                  t        j                  k(  sJ |j                  j                  | k(  sJ | j                          |j                  d      }|j                  t        j                  k(  sJ y r!   )r   r   r&   r   r   r'   r   r   r   r(   r)   r*   deleter   r+   s       r   )test_jwt_token_invalid_after_user_deletedr>   h   s     +d^cdD!!$'G[F
GG4H4H3I*JKzz*+H6#5#5555  %%---KKMzz*+H6#?#????r   c                     t         j                  j                  d      } t        d|       }|| _        | j                          t        j                  |       }t               }|j                  d|j                          |j                  d      }|j                  t        j                  k(  sJ |j                  j                   | k(  sJ t"        j                  j%                  |       \  }}|j                  d	|j&                          |j                  d      }|j                  t        j(                  k(  sJ y )
Nz!default_auth_settings@example.com)emailzDefault Settings Org)title
created_byr%   r   r   r1   r2   )r   r3   creater   active_organizationsaver   r&   r   r   r'   r   r   r   r(   r)   r*   r   r4   r5   r   )r*   orgr,   r   r   r7   r8   s          r   Etest_user_with_default_auth_settings_can_use_jwt_but_not_legacy_tokenrG   z   s    <<%HID
$:t
LC"DIIK !!$'G[F
GG4H4H3I*JKzz*+H6#5#5555  %%--- }}***5HE1
F599+*>?zz*+H6#?#????r   )pytestjwt_auth.modelsr   organizations.functionsr   rest_frameworkr   rest_framework.authtoken.modelsr   rest_framework.testr   users.modelsr   utilsr
   r   mark	django_dbr   r   r-   r/   r9   r;   r>   rG    r   r   <module>rS      s    & 7 ! 1 )  % 2 W_cd@  e@ W_cd@  e@ W_cd	.  e	. W_cd@  e@ W_cd.  e.. W_cd@  e@* W_cd@  e@  W_cd@  e@r   