
    (                     ^   d dl Z d dlZd dlZd dlmZ d dlmZ  G d dej                        Z G d dej                        Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Z G d dej(                  e      Zd Zd Zd Z G d dej2                  e      Zd Zd Zd Zd Zd Zd Z d  Z!y)!    N)_helperscredentialsc                       e Zd Zd Zd Zy)CredentialsImplc                     || _         t        j                  j                         t        j                  z   t        j
                  d      z   | _        y )N   seconds)tokendatetimeutcnowr   REFRESH_THRESHOLD	timedeltaexpiryselfrequests     Pplatform/gsutil/third_party/google-auth-library-python/tests/test_credentials.pyrefreshzCredentialsImpl.refresh   sC    
$$&(()  +, 	    c                     t               N)NotImplementedError)r   quota_project_ids     r   with_quota_projectz"CredentialsImpl.with_quota_project!   s    !##r   N)__name__
__module____qualname__r   r    r   r   r   r      s    
$r   r   c                       e Zd Zd Zd Zy)CredentialsImplWithMetricsc                     || _         y r   r   r   s     r   r   z"CredentialsImplWithMetrics.refresh&   s	    
r   c                      y)Nfoor    r   s    r   _metric_header_for_usagez3CredentialsImplWithMetrics._metric_header_for_usage)   s    r   N)r   r   r   r   r(   r    r   r   r"   r"   %   s    r   r"   c                      t               } | j                  rJ | j                  rJ | j                  rJ | j                  rJ | j
                  dk(  sJ | j                  rJ y )Nzgoogleapis.com)r   r   r   expiredvaliduniverse_domain_use_non_blocking_refreshr   s    r   test_credentials_constructorr.   -   sm    !#K    !!!!""""    &&*::::44444r   c                  >    t               }  | j                         rJ y r   )r   get_cred_infor   s    r   test_credentials_get_cred_infor1   7   s!    !#K({((****r   c                  T    t               } | j                          | j                  sJ y r   )r   with_non_blocking_refreshr-   )cs    r   test_with_non_blocking_refreshr5   <   s%    A!&&&&r   c                     t               } d| _        | j                  sJ | j                  rJ t	        j
                         t        j                  z   t        j                  d      z   | _	        | j                  sJ | j                  rJ t	        j
                         | _	        | j                  rJ | j                  sJ y )Nr      r
   )
r   r   r+   r*   r   r   r   r   r   r   r   s    r   test_expired_and_validr8   B   s    !#KK""""
 	H6669K9KTU9VV  """" "*K    r   c                  8   t               } d}i } | j                  |dd|       | j                  sJ | j                  dk(  sJ |d   dk(  sJ d|vsJ d}i } | j                  |dd|       | j                  sJ | j                  dk(  sJ |d   dk(  sJ d|vsJ y )Nr   http://example.comGETauthorizationBearer tokenx-allowed-locationstoken2)r   before_requestr+   r   r   r   headerss      r   test_before_requestrC   Z   s    !#KGG Kw(<eWM'''?#~555 ///GG Kw(<eWM'''?#~555 ///r   c                  `   d} t               }g | d|_        d}i } |j                  |dd|       |j                  sJ |j                  dk(  sJ |d   dk(  sJ |d   | k(  sJ d	}i } |j                  |dd|       |j                  sJ |j                  dk(  sJ |d   dk(  sJ |d   | k(  sJ y )
N0xA30)	locationsencoded_locationsr   r:   r;   r<   r=   r>   r?   )r   _trust_boundaryr@   r+   r   )DUMMY_BOUNDARYr   r   rB   s       r   'test_before_request_with_trust_boundaryrJ   q   s    N!#K02"XKGG Kw(<eWM'''?#~555()^;;;GG Kw(<eWM'''?#~555()^;;;r   c                  ^    t               } d}i } | j                  |dd|       |d   dk(  sJ y )Nr   r:   r;   zx-goog-api-clientr&   )r"   r@   rA   s      r   test_before_request_metricsrL      s?    ,.KGGKw(<eWM&'5000r   c                      t        j                         } | j                  J | j                  J | j                  rJ | j
                  sJ y r   )r   AnonymousCredentialsr   r   r*   r+   )anons    r   test_anonymous_credentials_ctorrP      sI    ++-D::;;||:::r   c                      t        j                         } t               }t        j                  t
              5  | j                  |       d d d        y # 1 sw Y   y xY wr   )r   rN   objectpytestraises
ValueErrorr   )rO   r   s     r   "test_anonymous_credentials_refreshrV      s;    ++-DhG	z	"W 
#	"	"s   AAc                      t        j                         } i }| j                  |       |i k(  sJ t        j                  t
              5  | j                  |d       d d d        y # 1 sw Y   y xY w)NTOKENr$   )r   rN   applyrS   rT   rU   )rO   rB   s     r   (test_anonymous_credentials_apply_defaultrZ      sU    ++-DGJJwb==	z	"

7'
* 
#	"	"s   A%%A.c                      t        j                         } t               }d}d}i }| j                  ||||       |i k(  sJ y )Nr;   z https://example.com/api/endpoint)r   rN   rR   r@   )rO   r   methodurlrB   s        r   )test_anonymous_credentials_before_requestr^      sF    ++-DhGF
,CGg6b==r   c                   (     e Zd Ze fd       Z xZS )ReadOnlyScopedCredentialsImplc                      t         t        | 
  S r   )superr`   requires_scopes)r   	__class__s    r   rc   z-ReadOnlyScopedCredentialsImpl.requires_scopes   s    2DIIr   )r   r   r   propertyrc   __classcell__rd   s   @r   r`   r`      s    J Jr   r`   c                  4    t               } | j                  J y r   )r`   _scopesr   s    r   ,test_readonly_scoped_credentials_constructorrj      s    /1K&&&r   c                      t               } ddg| _        | j                  ddgk(  sJ  | j                  dg      sJ  | j                  dg      sJ  | j                  ddg      sJ  | j                  dg      rJ y )Nonetwothree)r`   ri   scopes
has_scopesr   s    r   'test_readonly_scoped_credentials_scopesrq      s    /1K %.K%///!;!!5'***!;!!5'***!;!!5%.111%{%%wi0000r   c                  4    t               } | j                  rJ y r   )r`   rc   r   s    r   0test_readonly_scoped_credentials_requires_scopesrs      s    /1K*****r   c                   8     e Zd Zd fd	Zed        ZddZ xZS )RequiresScopedCredentialsImplc                 F    t         t        |           || _        || _        y r   )rb   ru   __init__ri   _default_scopes)r   ro   default_scopesrd   s      r   rw   z&RequiresScopedCredentialsImpl.__init__   s     +T;=-r   c                     | j                    S r   )ro   r'   s    r   rc   z-RequiresScopedCredentialsImpl.requires_scopes   s    ;;r   c                     t        ||      S )N)ro   ry   )ru   )r   ro   ry   s      r   with_scopesz)RequiresScopedCredentialsImpl.with_scopes   s    ,.
 	
r   )NNr   )r   r   r   rw   re   rc   r|   rf   rg   s   @r   ru   ru      s!    .
  
r   ru   c                      t               } t        j                  | ddg      }|| usJ |j                  rJ |j	                  ddg      sJ y Nrl   rm   )ru   r   with_scopes_if_requiredrc   rp   unscoped_credentialsscoped_credentialss     r   %test_create_scoped_if_required_scopedr      s]    8:$<<uen %9999!1111((%888r   c                  T    t               } t        j                  | ddg      }|| u sJ y r~   )r   r   r   r   s     r   )test_create_scoped_if_required_not_scopesr      s6    *,$<<uen !5555r   c                  
   t               } t        j                         | _        d}| j	                  |       | j
                  t        j                  j                  k(  sJ | j                          | j                  |ddi        y Nr   r:   r;   )r   mock	MagicMock_refresh_workerr   token_stater   
TokenStateFRESHr3   r@   r4   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                  j   t               } | j                          d}i }| j                  t        j                  j
                  k(  sJ | j                  |dd|       | j                  t        j                  j                  k(  sJ | j                  sJ | j                  dk(  sJ |d   dk(  sJ d|vsJ y )Nr   r:   r;   r<   r=   x-identity-trust-boundary)
r   r3   r   r   r   INVALIDr@   r   r+   r   r4   r   rB   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                     t               } | j                          d}i }| j                  |dd|       | j                  t        j
                  j                  k(  sJ | j                  j                  rJ t        j                  j                         t        j                  z   t        j                  d      z
  | _        | j                  t        j
                  j                  k(  sJ | j                  |dd|       | j                  j                  J | j                  t        j
                  j                  k(  sJ | j                   sJ | j"                  dk(  sJ |d   dk(  sJ d|vsJ y )	Nr   r:   r;   r7   r
   r<   r=   r   )r   r3   r@   r   r   r   r   r   _workerr   r   r   r   r   r   STALEr+   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                  V   t               } | j                          d}i }| j                  |dd|       | j                  t        j
                  j                  k(  sJ | j                  j                  rJ t        j                  j                         t        j                  z   t        j                  d      z
  | _        | j                  t        j
                  j                  k(  sJ t!        j"                         | j                  _        d| j                  j                  _        | j                  |dd|       | j                  j                  J | j                  t        j
                  j                  k(  sJ | j&                  sJ | j(                  dk(  sJ |d   dk(  sJ d	|vsJ y )
Nr   r:   r;   r7   r
   z
Some Errorr<   r=   r   )r   r3   r@   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _error_infor+   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                      t               } d}| j                  |       d | _        | j                  t        j
                  j                  k(  sJ | j                  |ddi        y r   )r   r   r   r   r   r   r   r@   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   rS   google.authr   r   Credentialsr   r"   r.   r1   r5   r8   rC   rJ   rL   rP   rV   rZ   r^   ReadOnlyScopedr`   rj   rq   rs   Scopedru   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   