
    	]jT                        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  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)status)	APIClient)
TokenError)create_user_with_token_settings)mock_feature_flag8fflag__feature_develop__prompts__dia_1829_jwt_token_authT)	flag_namevaluec                     t        dd      }| j                  |       t               }|j                          | j	                  dd|j                         i      }|j                  t        j                  k(  sJ y NTFapi_tokens_enabledlegacy_api_tokens_enabled/api/token/blacklist/refreshdata)	r   force_loginr   	blacklistpostget_full_jwtstatus_coder   HTTP_404_NOT_FOUNDclientusertokenresponses       P/root/env/lib/python3.12/site-packages/label_studio/tests/jwt_auth/test_views.py>test_blacklist_view_returns_404_with_already_blacklisted_tokenr!   
   sk     +d^cdD
tLE	OO{{2)UEWEWEY9Z{[H6#<#<<<<    c                 T   t        dd      }| j                  |       t               }| j                  dd|j	                         i      }|j
                  t        j                  k(  sJ t        j                  t              5  |j                          d d d        y # 1 sw Y   y xY wr   )r   r   r   r   r   r   r   HTTP_204_NO_CONTENTpytestraisesr   check_blacklistr   s       r    0test_blacklist_view_returns_204_with_valid_tokenr(      s     +d^cdD
tLE{{2)UEWEWEY9Z{[H6#=#====	z	"       s   BB'c                  &   t        dd      } t               }t               }|j                  d|j                          |j                  |        |j                  d      }|j                  t        j                  k(  sJ d|j                  v sJ y )NTFr   Bearer HTTP_AUTHORIZATION/api/token/r   )r   r   r   credentialsaccess_tokenforce_authenticater   r   r   HTTP_201_CREATEDr   r   r   r   r   s       r    (test_create_token_when_no_existing_tokenr3   %   s     +d^cdD[FlG
GG4H4H3I*JK
d#{{=)H6#:#::::hmm###r"   c                     t        dd      } t               }t               }|j                  d|j                          |j                  |        |j                  d      }|j                  t        j                  k(  sJ |j                  d      }|j                  t        j                  k(  sJ d|j                  v sJ d|j                  d   v sJ y )	NTFr   r*   r+   r-   detailzYou already have a valid token)r   r   r   r.   r/   r0   r   r   r   r1   HTTP_409_CONFLICTr   r2   s       r    +test_create_token_when_existing_valid_tokenr7   4   s     +d^cdD[FlG
GG4H4H3I*JK
d# {{=)H6#:#:::: {{=)H6#;#;;;;x}}$$$+x}}X/FFFFr"   c                     t        dd      } t               }t               }|j                  d|j                          |j                  |        |j                  d      }|j                  t        j                  k(  sJ |j                  d   }|j                  dd	|i
      }|j                  t        j                  k(  sJ |j                  d      }|j                  t        j                  k(  sJ d|j                  v sJ y )NTFr   r*   r+   r-   r   r   r   r   )r   r   r   r.   r/   r0   r   r   r   r1   r   r$   )r   r   r   r   r   s        r    -test_create_token_after_blacklisting_previousr9   H   s     +d^cdD[FlG
GG4H4H3I*JK
d# {{=)H6#:#:::: MM'"E{{2)U9K{LH6#=#==== {{=)H6#:#::::hmm###r"   c                     t        dd      } t               }t               }|j                  d|j                          |j                  |        |j                  d      }|j                  t        j                  k(  sJ |j                  d   }|j                  dd	|id
      }|j                  t        j                  k(  sJ d	|j                  v sJ |j                  dd	|id
      }|j                  t        j                  k(  sJ d|j                  v sd|j                  v sJ |j                  d	   }|j                  dd	|id
      }|j                  t        j                  k(  sJ d	|j                  v sJ y )NTFr   r*   r+   r-   r   /api/token/rotate/r   jsonr   formatr5   non_field_errors)r   r   r   r.   r/   r0   r   r   r   r1   r   HTTP_200_OKHTTP_400_BAD_REQUEST)	r   r   r   r   r   	response2	response3	new_token	response4s	            r    test_rotate_token_successrF   `   sy    +d^cdD[FlG
GG4H4H3I*JK
d# {{=)H6#:#:::: MM'"E0	57IRXYI  F$6$6666	&&& 0	57IRXYI  F$?$????y~~%);y~~)MMM y)I0	97MV\]I  F$6$6666	&&&r"   c                     t        dd      } t        j                  |       }|j                         }t	               }|j                  dd|id      }|j                  t        j                  t        j                  fv sJ y )NTFr   r;   r   r<   r=   )
r   r   for_userr   r   r   r   r   HTTP_401_UNAUTHORIZEDHTTP_403_FORBIDDEN)r   r   refresh_tokenr   r   s        r    )test_rotate_token_requires_authenticationrL      sv     +d^cdD!!$'G((*M[F{{/y-6PY_{`HF$@$@&B[B[#\\\\r"   )r%   jwt_auth.modelsr   rest_frameworkr   rest_framework.testr   #rest_framework_simplejwt.exceptionsr   tests.jwt_auth.utilsr   tests.utilsr   mark	django_dbr!   r(   r3   r7   r9   rF   rL    r"   r    <module>rV      sn    & ! ) : @ ) W_cd=  e= W_cd	   e	  W_cd
$  e
$ W_cdG  eG$ W_cd$  e$, W_cd'  e': W_cd]  e]r"   