
    	]j^                        d dl Z d dlmZmZ d dlmZ d dlmZ d dl	m
Z
mZ ddlmZ dd	lmZ  ed
d      e j                  d               Z ed
d      d        Z ed
d      d        Z ed
d      d        Z ed
d      e j(                  j*                  d               Ze j(                  j*                  d        Zy)    N)
LSAPITokenLSTokenBackend)
TokenError)api_settings)BlacklistedTokenOutstandingToken   )mock_feature_flag   )create_user_with_token_settings8fflag__feature_develop__prompts__dia_1829_jwt_token_authT)	flag_namevaluec            
         t        t        j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                        S )N)	algorithmsigning_keyverifying_keyaudienceissuerjwk_urlleewayjson_encoder)
r   simple_jwt_settings	ALGORITHMSIGNING_KEYVERIFYING_KEYAUDIENCEISSUERJWK_URLLEEWAYJSON_ENCODER     Q/root/env/lib/python3.12/site-packages/label_studio/tests/jwt_auth/test_models.pytoken_backendr%      sY     %//'33)77$--"))#++"))(55	 	r#   c                     dddd}| j                  |      }|j                  d      }t        |      dk(  sJ t        d |D              sJ t        d |D              sJ y )	N{   逅tg Reuser_idexpiat.r	   c              3   `   K   | ]&  }|j                  d d      j                  dd       ( yw-+_/Nreplace.0parts     r$   	<genexpr>z>test_encode_returns_only_header_and_payload.<locals>.<genexpr>&   (     JDt||C%--c37J   ,.c              3   `   K   | ]&  }|j                  d d      j                  dd       ( ywr0   r5   r7   s     r$   r:   z>test_encode_returns_only_header_and_payload.<locals>.<genexpr>'   r;   r<   )encodesplitlenallr%   payloadtokenpartss       r$   +test_encode_returns_only_header_and_payloadrF      sl     G
   )EKKEu:??JEJJJJJEJJJJr#   c                     dddd}| j                  |      }|j                  d      }t        |      dk(  sJ t        d |D              sJ y )Nr'   r(   r)   r*   r.      c              3   `   K   | ]&  }|j                  d d      j                  dd       ( ywr0   r5   r7   s     r$   r:   z8test_encode_full_returns_complete_jwt.<locals>.<genexpr>6   r;   r<   )encode_fullr?   r@   rA   rB   s       r$   %test_encode_full_returns_complete_jwtrK   *   sX     G
 %%g.EKKEu:??JEJJJJr#   c                 z    dddd}| j                  |      }| j                  |      }|j                  |      sJ y )Nr'   r(   r)   r*   )r>   rJ   
startswith)r%   rC   partial_token
full_tokens       r$   %test_encode_vs_encode_full_comparisonrP   9   sJ     G
 "((1M**73J  ///r#   c                  n   t        dd      } t        j                  |       }|j                         J |j	                          t
        j                  j                  |d         j                         sJ t        j                  t              5  |j                          ddd       y# 1 sw Y   yxY w)zcTest full token lifecycle including creation, access token generation, blacklisting, and validationTFapi_tokens_enabledlegacy_api_tokens_enabledNjti)
token__jti)r   r   for_usercheck_blacklist	blacklistr   objectsfilterexistspytestraisesr   )userrD   s     r$   test_token_lifecycler`   F   s     +d^cdD%E   "*** 
OO##**eEl*CJJLLL 
z	"       s   B++B4c                  N   t        dd      } t        j                  |       }|J t        j                  j                  |d         }|j                  j                  d      }t        |      dk(  sJ |j                         }|j                  d      }t        |      d	k(  sJ y)
zGTest that tokens are created and stored correctly with truncated formatTFrR   NrU   )rU   r.   r	   rH   )
r   r   rW   r   rZ   getrD   r?   r@   get_full_jwt)r_   rD   outstanding_tokenstored_token_partsrO   full_token_partss         r$   test_token_creation_and_storagerg   Y   s     +d^cdD%E )0044u4F*0066s;!"a''' ##%J!'', A%%%r#   )r]   jwt_auth.modelsr   r   #rest_framework_simplejwt.exceptionsr   !rest_framework_simplejwt.settingsr   r   /rest_framework_simplejwt.token_blacklist.modelsr   r   utilsr
   r   fixturer%   rF   rK   rP   mark	django_dbr`   rg   r"   r#   r$   <module>rp      s     6 : Q ^ % 2 W_cd
  e
 W_cdK eK W_cdK eK W_cd	0 e	0 W_cd   e " & &r#   