
    (                     ^   S SK r S SKrS SKrS SKJr  S SKJr   " S S\R                  5      r " S S\R                  5      rS r	S	 r
S
 rS rS rS rS rS rS rS rS r " S S\R(                  \5      rS rS rS r " S S\R2                  \5      rS rS rS rS rS rS r S  r!g)!    N)_helperscredentialsc                        \ rS rSrS rS rSrg)CredentialsImpl   c                     Xl         [        R                  R                  5       [        R                  -   [        R
                  " SS9-   U l        g )N   seconds)tokendatetimeutcnowr   REFRESH_THRESHOLD	timedeltaexpiryselfrequests     Pplatform/gsutil/third_party/google-auth-library-python/tests/test_credentials.pyrefreshCredentialsImpl.refresh   sA    
$$&(()  +, 	    c                     [        5       eN)NotImplementedError)r   quota_project_ids     r   with_quota_project"CredentialsImpl.with_quota_project!   s    !##r   )r   r   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__ r   r   r   r      s    
$r   r   c                        \ rS rSrS rS rSrg)CredentialsImplWithMetrics%   c                     Xl         g r   r   r   s     r   r   "CredentialsImplWithMetrics.refresh&   s    
r   c                     g)Nfoor%   r   s    r   _metric_header_for_usage3CredentialsImplWithMetrics._metric_header_for_usage)   s    r   r*   N)r    r!   r"   r#   r   r/   r$   r%   r   r   r'   r'   %   s    r   r'   c                      [        5       n U R                  (       a   eU R                  (       a   eU R                  (       a   eU R                  (       a   eU R
                  S:X  d   eU R                  (       a   eg )Nzgoogleapis.com)r   r   r   expiredvaliduniverse_domain_use_non_blocking_refreshr   s    r   test_credentials_constructorr6   -   sm    !#K    !!!!""""    &&*::::44444r   c                  H    [        5       n U R                  " 5       (       a   eg r   )r   get_cred_infor   s    r   test_credentials_get_cred_infor9   7   s"    !#K((*****r   c                  ^    [        5       n U R                  5         U R                  (       d   eg r   )r   with_non_blocking_refreshr5   )cs    r   test_with_non_blocking_refreshr=   <   s%    A!&&&&r   c                     [        5       n SU l        U R                  (       d   eU R                  (       a   e[        R
                  " 5       [        R                  -   [        R                  " SS9-   U l	        U R                  (       d   eU R                  (       a   e[        R
                  " 5       U l	        U R                  (       a   eU R                  (       d   eg )Nr      r   )
r   r   r3   r2   r   r   r   r   r   r   r   s    r   test_expired_and_validr@   B   s    !#KK""""
 	H6669K9KTU9VV  """" "*K    r   c                  \   [        5       n Sn0 nU R                  " USSU5        U R                  (       d   eU R                  S:X  d   eUS   S:X  d   eSU;  d   eSn0 nU R                  " USSU5        U R                  (       d   eU R                  S:X  d   eUS   S:X  d   eSU;  d   eg )Nr   http://example.comGETauthorizationBearer tokenx-allowed-locationstoken2)r   before_requestr3   r   r   r   headerss      r   test_before_requestrK   Z   s    !#KGG w(<eWM'''?#~555 ///GG w(<eWM'''?#~555 ///r   c                     Sn [        5       n/ U S.Ul        Sn0 nUR                  " USSU5        UR                  (       d   eUR                  S:X  d   eUS   S:X  d   eUS   U :X  d   eS	n0 nUR                  " USSU5        UR                  (       d   eUR                  S:X  d   eUS   S:X  d   eUS   U :X  d   eg )
N0xA30)	locationsencoded_locationsr   rB   rC   rD   rE   rF   rG   )r   _trust_boundaryrH   r3   r   )DUMMY_BOUNDARYr   r   rJ   s       r   'test_before_request_with_trust_boundaryrR   q   s    N!#K02"XKGG w(<eWM'''?#~555()^;;;GG w(<eWM'''?#~555()^;;;r   c                  `    [        5       n Sn0 nU R                  " USSU5        US   S:X  d   eg )Nr   rB   rC   zx-goog-api-clientr-   )r'   rH   rI   s      r   test_before_request_metricsrT      s=    ,.KGGw(<eWM&'5000r   c                      [         R                  " 5       n U R                  b   eU R                  b   eU R                  (       a   eU R
                  (       d   eg r   )r   AnonymousCredentialsr   r   r2   r3   )anons    r   test_anonymous_credentials_ctorrX      sI    ++-D::;;||:::r   c                      [         R                  " 5       n [        5       n[        R                  " [
        5         U R                  U5        S S S 5        g ! , (       d  f       g = fr   )r   rV   objectpytestraises
ValueErrorr   )rW   r   s     r   "test_anonymous_credentials_refreshr^      s;    ++-DhG	z	"W 
#	"	"s   A
A#c                      [         R                  " 5       n 0 nU R                  U5        U0 :X  d   e[        R                  " [
        5         U R                  USS9  S S S 5        g ! , (       d  f       g = f)NTOKENr*   )r   rV   applyr[   r\   r]   )rW   rJ   s     r   (test_anonymous_credentials_apply_defaultrb      sU    ++-DGJJwb==	z	"

7'
* 
#	"	"s   A%%
A3c                      [         R                  " 5       n [        5       nSnSn0 nU R                  XX45        U0 :X  d   eg )NrC   z https://example.com/api/endpoint)r   rV   rZ   rH   )rW   r   methodurlrJ   s        r   )test_anonymous_credentials_before_requestrf      sB    ++-DhGF
,CG6b==r   c                   2   ^  \ rS rSr\U 4S j5       rSrU =r$ )ReadOnlyScopedCredentialsImpl   c                     > [         [        U ]
  $ r   )superrh   requires_scopes)r   	__class__s    r   rl   -ReadOnlyScopedCredentialsImpl.requires_scopes   s    2DIIr   r%   )r    r!   r"   r#   propertyrl   r$   __classcell__rm   s   @r   rh   rh      s    J Jr   rh   c                  6    [        5       n U R                  b   eg r   )rh   _scopesr   s    r   ,test_readonly_scoped_credentials_constructorrt      s    /1K&&&r   c                  $   [        5       n SS/U l        U R                  SS/:X  d   eU R                  " S/5      (       d   eU R                  " S/5      (       d   eU R                  " SS/5      (       d   eU R                  " S/5      (       a   eg )Nonetwothree)rh   rs   scopes
has_scopesr   s    r   'test_readonly_scoped_credentials_scopesr{      s    /1K %.K%///!!5'****!!5'****!!5%.1111%%wi00000r   c                  >    [        5       n U R                  (       a   eg r   )rh   rl   r   s    r   0test_readonly_scoped_credentials_requires_scopesr}      s    /1K*****r   c                   F   ^  \ rS rSrSU 4S jjr\S 5       rSS jrSrU =r	$ )RequiresScopedCredentialsImpl   c                 B   > [         [        U ]  5         Xl        X l        g r   )rk   r   __init__rs   _default_scopes)r   ry   default_scopesrm   s      r   r   &RequiresScopedCredentialsImpl.__init__   s    +T;=-r   c                 $    U R                   (       + $ r   )ry   r.   s    r   rl   -RequiresScopedCredentialsImpl.requires_scopes   s    ;;r   c                     [        XS9$ )N)ry   r   )r   )r   ry   r   s      r   with_scopes)RequiresScopedCredentialsImpl.with_scopes   s    ,
 	
r   )r   rs   )NNr   )
r    r!   r"   r#   r   ro   rl   r   r$   rp   rq   s   @r   r   r      s&    .
  
 
r   r   c                      [        5       n [        R                  " U SS/5      nXLd   eUR                  (       a   eUR	                  SS/5      (       d   eg Nrv   rw   )r   r   with_scopes_if_requiredrl   rz   unscoped_credentialsscoped_credentialss     r   %test_create_scoped_if_required_scopedr      s]    8:$<<uen 999!1111((%8888r   c                  V    [        5       n [        R                  " U SS/5      nXL d   eg r   )r   r   r   r   s     r   )test_create_scoped_if_required_not_scopesr      s3    *,$<<uen 555r   c                     [        5       n [        R                  " 5       U l        SnU R	                  U5        U R
                  [        R                  R                  :X  d   eU R                  5         U R                  USS0 5        g Nr   rB   rC   )r   mock	MagicMock_refresh_workerr   token_stater   
TokenStateFRESHr;   rH   r<   r   s     r   *test_nonblocking_refresh_fresh_credentialsr      si    A(AGIIg==K2288888!W2E2>r   c                     [        5       n U R                  5         Sn0 nU R                  [        R                  R
                  :X  d   eU R                  USSU5        U R                  [        R                  R                  :X  d   eU R                  (       d   eU R                  S:X  d   eUS   S:X  d   eSU;  d   eg )Nr   rB   rC   rD   rE   x-identity-trust-boundary)
r   r;   r   r   r   INVALIDrH   r   r3   r   r<   r   rJ   s      r   ,test_nonblocking_refresh_invalid_credentialsr     s    A!GG==K22:::::W2E7C==K228888877N777g?#~555&g555r   c                     [        5       n U R                  5         Sn0 nU R                  USSU5        U R                  [        R
                  R                  :X  d   eU R                  R                  (       a   e[        R                  R                  5       [        R                  -   [        R                  " SS9-
  U l        U R                  [        R
                  R                  :X  d   eU R                  USSU5        U R                  R                  c   eU R                  [        R
                  R                  :X  d   eU R                   (       d   eU R"                  S:X  d   eUS   S:X  d   eSU;  d   eg )	Nr   rB   rC   r?   r   rD   rE   r   )r   r;   rH   r   r   r   r   r   _workerr   r   r   r   r   r   STALEr3   r   r   s      r   *test_nonblocking_refresh_stale_credentialsr     sO   A!GG W2E7C==K2288888  (((( 	  "

$
$	%


Q
'	( H ==K2288888W2E7C$$000==K228888877N777g?#~555&g555r   c                  x   [        5       n U R                  5         Sn0 nU R                  USSU5        U R                  [        R
                  R                  :X  d   eU R                  R                  (       a   e[        R                  R                  5       [        R                  -   [        R                  " SS9-
  U l        U R                  [        R
                  R                  :X  d   e[         R"                  " 5       U R                  l        SU R                  R                  l        U R                  USSU5        U R                  R                  c   eU R                  [        R
                  R                  :X  d   eU R&                  (       d   eU R(                  S:X  d   eUS   S:X  d   eS	U;  d   eg )
Nr   rB   rC   r?   r   z
Some ErrorrD   rE   r   )r   r;   rH   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _error_infor3   r   r   s      r   +test_nonblocking_refresh_failed_credentialsr   0  sx   A!GG W2E7C==K2288888  (((( 	  "

$
$	%


Q
'	( H ==K2288888 $ 0A,8A)W2E7C$$000==K228888877N777g?#~555&g555r   c                      [        5       n SnU R                  U5        S U l        U R                  [        R
                  R                  :X  d   eU R                  USS0 5        g r   )r   r   r   r   r   r   r   rH   r   s     r   test_token_state_no_expiryr   P  sU    AGIIgAH==K2288888W2E2>r   )"r   r   r[   google.authr   r   Credentialsr   r'   r6   r9   r=   r@   rK   rR   rT   rX   r^   rb   rf   ReadOnlyScopedrh   rt   r{   r}   Scopedr   r   r   r   r   r   r   r   r%   r   r   <module>r      s         #
$k-- 
$!8!8 5+
'00.<21+JK$>$> J'
1+

K$6$6 
 96?6"6<6@	?r   