
    S                        S SK r S SKJr  S SKrS SKrS SKrS SKrS SKJ	r	  S SKJ
r
  S SKJr  S SKJr  S SKJr  S SKJr  SrS	rS
rSrSrSr/ SQr/ SQr " S S\R0                  5      r " S S\5      rS rg)    N)_helpers)
exceptions)external_account)	transport)DEFAULT_UNIVERSE_DOMAIN)
TokenStatez9gl-python/3.7 auth/1.1 auth-request-type/at cred-type/impzgl-python/3.7 auth/1.1usernamepasswordzdXNlcm5hbWU6cGFzc3dvcmQ=z1service-1234@service-name.iam.gserviceaccount.com)zR//iam.googleapis.com/locations/global/workforcePools/pool-id/providers/provider-idzN//iam.googleapis.com/locations/eu/workforcePools/pool-id/providers/provider-idz\//iam.googleapis.com/locations/eu/workforcePools/workloadIdentityPools/providers/provider-id)	%identitynamespace:1f12345:my_providerzi//iam.googleapis.com/projects/123456/locations/global/workloadIdentityPools/pool-id/providers/provider-idze//iam.googleapis.com/projects/123456/locations/eu/workloadIdentityPools/pool-id/providers/provider-idzp//iam.googleapis.com/projects/123456/locations/global/workloadIdentityPools/workforcePools/providers/provider-idzM//iamgoogleapis.com/locations/eu/workforcePools/pool-id/providers/provider-idzM//iam.googleapiscom/locations/eu/workforcePools/pool-id/providers/provider-idzK//iam.googleapis.com/locations/workforcePools/pool-id/providers/provider-idzM//iam.googleapis.com/locations/eu/workforcePool/pool-id/providers/provider-idzK//iam.googleapis.com/locations//workforcePool/pool-id/providers/provider-idc                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )CredentialsImplK   c                 <   > [         [        U ]
  " S0 UD6  SU l        g )Nr    )superr   __init___counter)selfkwargs	__class__s     Uplatform/gsutil/third_party/google-auth-library-python/tests/test_external_account.pyr   CredentialsImpl.__init__L   s    ot-77    c                 f    U R                   nU =R                   S-  sl         SR                  U5      $ )N   zsubject_token_{})r   format)r   requestcounters      r   retrieve_subject_token&CredentialsImpl.retrieve_subject_tokenP   s*    --!((11r   )r   )__name__
__module____qualname____firstlineno__r   r   __static_attributes____classcell__)r   s   @r   r   r   K   s    2 2r   r   c            
       @   \ rS rSrSrSrSrSrSrSR                  \\\5      r
SR                  \\5      rS	rS
rSrSS0rSSSSSS.rSSSS.rSrSSR                  \5      -   rSS/rSSSS S!.0rS"rS#r\\S$S%S&S'S(S).S*.r\S+S+S+S+S+S+S+0 \4	S, j5       r\       S}S- j5       r\\R>                  S+S+S+S+S+4S. j5       r \ S~S/ j5       r!\ S~S0 j5       r"\S1 5       r#S2 r$S3 r%S4 r&S5 r'S6 r(S7 r)S8 r*S9 r+S: r,S; r-S< r.S= r/S> r0S? r1S@ r2SA r3SB r4SC r5SD r6SE r7SF r8\9Rt                  Rw                  SG\<5      SH 5       r=\9Rt                  Rw                  SG\>5      SI 5       r?\9Rt                  Rw                  SG\>5      SJ 5       r@\9Rt                  Rw                  SG\<5      SK 5       rA\9Rt                  Rw                  SG\>5      SL 5       rB\9Rt                  Rw                  SG\>5      SM 5       rC\9Rt                  Rw                  SNSOSP/5      \DR                  " SQ\FSR9\DR                  " SS\GR                  R                  SR9ST 5       5       5       rI\DR                  " SQ\FSR9\DR                  " SS\GR                  R                  SR9\DR                  " SUSVSR9\DR                  " SWSXSR9SY 5       5       5       5       rJ\DR                  " SQ\FSR9\DR                  " SS\GR                  R                  SR9SZ 5       5       rK\DR                  " SQ\FSR9\DR                  " SS\GR                  R                  SR9S[ 5       5       rL\DR                  " SQ\FSR9\DR                  " SS\GR                  R                  SR9S\ 5       5       rM\DR                  " S]\NSR9\DR                  " SQ\FSR9S^ 5       5       rO\DR                  " S]\NSR9\DR                  " SQ\FSR9\DR                  " SUSVSR9\DR                  " SWSXSR9S_ 5       5       5       5       rP\DR                  " S]\NSR9\DR                  " SQ\FSR9S` 5       5       rQ\DR                  " SQ\FSR9Sa 5       rR\DR                  " SQ\FSR9Sb 5       rSSc rTSd rUSe rV\DR                  " SQ\FSR9Sf 5       rW\DR                  " S]\NSR9\DR                  " SQ\FSR9Sg 5       5       rX\DR                  " S]\NSR9\DR                  " SQ\FSR9Sh 5       5       rYSi rZSj r[Sk r\Sl r]Sm r^Sn r_So r`Sp ra\DR                  " SS5      Sq 5       rb\DR                  " SS5      Sr 5       rc\9Rt                  Rw                  SG/ SsQ5      St 5       rdSu reSv rfSw rg\DR                  " S]\NSR9\DR                  " SQ\FSR9Sx 5       5       rh\DR                  " SQ\FSR9Sy 5       ri\DR                  " S]\NSR9\DR                  " SQ\FSR9Sz 5       5       rjS{ rkS|rlg+)TestCredentialsV   z#https://sts.googleapis.com/v1/tokenz(https://sts.googleapis.com/v1/introspect123456POOL_IDPROVIDER_IDzW//iam.googleapis.com/projects/{}/locations/global/workloadIdentityPools/{}/providers/{}zD//iam.googleapis.com/locations/global/workforcePools/{}/providers/{}"WORKFORCE_POOL_USER_PROJECT_NUMBERz$urn:ietf:params:oauth:token-type:jwtz)urn:ietf:params:oauth:token-type:id_tokenfilez/var/run/secrets/goog.id/tokenACCESS_TOKEN-urn:ietf:params:oauth:token-type:access_tokenBearer  scope1 scope2)access_tokenissued_token_type
token_type
expires_inscopeinvalid_requestzInvalid subject tokenz#https://tools.ietf.org/html/rfc6749)errorerror_description	error_uriQUOTA_PROJECT_IDz<https://us-east1-iamcredentials.googleapis.com/v1/projects/-z'/serviceAccounts/{}:generateAccessTokenscope1scope2r:   i  z$Request contains an invalid argumentINVALID_ARGUMENT)codemessagestatusz
my-proj-idz8https://cloudresourcemanager.googleapis.com/v1/projects/ACTIVEzproject-namez2018-11-06T04:42:54.109Zfolder12345678901)typeid)projectNumber	projectIdlifecycleStatename
createTimeparentNc
                 |    [        U R                  U R                  U R                  UUUU R                  UUUUUU	S9$ )N)audiencesubject_token_type	token_urltoken_info_url!service_account_impersonation_url%service_account_impersonation_optionscredential_source	client_idclient_secretquota_project_idscopesdefault_scopesuniverse_domain)r   AUDIENCESUBJECT_TOKEN_TYPE	TOKEN_URLCREDENTIAL_SOURCE)
clsrW   rX   rY   rS   rZ   r[   rT   rU   r\   s
             r   make_credentials TestCredentials.make_credentials   sL     \\"55mm).O2W!33'-)+
 	
r   c                 x    [        U R                  U R                  U R                  UU R                  UUUUUUS9$ )N)rP   rQ   rR   rT   rV   rW   rX   rY   rZ   r[   workforce_pool_user_project)r   WORKFORCE_AUDIENCEWORKFORCE_SUBJECT_TOKEN_TYPEr_   r`   )ra   rW   rX   rY   rZ   r[   rT   re   s           r   make_workforce_pool_credentials/TestCredentials.make_workforce_pool_credentials   sH     ++"??mm.O!33'-)(C
 	
r   c                    [         R                  " [        R                  SS9nXl        [
        R                  " U5      R                  S5      Ul        U/nU(       ad  [         R                  " [        R                  SS9n	X9l        [
        R                  " U5      R                  S5      U	l        UR                  U	5        U(       ad  [         R                  " [        R                  SS9n
XZl        [
        R                  " U5      R                  S5      U
l        UR                  U
5        [         R                  " [        R                  5      nXl        U$ )NT)instanceutf-8)mockcreate_autospecr   ResponserC   jsondumpsencodedataappendRequestside_effect)ra   rC   rs   impersonation_statusimpersonation_datacloud_resource_manager_statuscloud_resource_manager_datatoken_response	responsesimpersonation_responsecloud_resource_manager_responser   s               r   make_mock_request!TestCredentials.make_mock_request   s    --i.@.@4P &"jj.55g>#$	  %)%9%9""T&" -A)*.**5G*H*O*OPW*X"'34 ).2.B.B""T/+ 6S237::+4fWo ,0 <=&&y'8'89'r   c                    US   U R                   :X  d   eUS   S:X  d   eUS   U:X  d   eUb  US   U:X  d   eOSU;  d   eUS   c   e[        R                  R                  US   5      nU H-  u  pgUR	                  S5      X6R	                  S5         :X  a  M-   e   [        U5      [        UR                  5       5      :X  d   eg NurlmethodPOSTheaderscertbodyrl   )r_   urllibparse	parse_qsldecodelenkeys)ra   request_kwargsr   request_datar   body_tupleskvs           r   assert_token_request_kwargs+TestCredentials.assert_token_request_kwargs   s     e$555h'6111i(G333!&)T111///f%111ll,,^F-CD!FQ88G$XXg5F(GGGG ";3|'8'8':#;;;;r   c                     US   U R                   :X  d   eUS   S:X  d   eUS   U:X  d   eUb  US   U:X  d   eOSU;  d   eUS   c   e[        R                  " US   R                  S5      5      nXS:X  d   eg r   )!SERVICE_ACCOUNT_IMPERSONATION_URLrp   loadsr   )ra   r   r   r   r   	body_jsons         r   #assert_impersonation_request_kwargs3TestCredentials.assert_impersonation_request_kwargs   s     e$(M(MMMMh'6111i(G333!&)T111///f%111JJ~f5<<WEF	(((r   c                 p    US   U R                   U-   :X  d   eUS   S:X  d   eUS   U:X  d   eSU;  d   eg )Nr   r   GETr   r   )CLOUD_RESOURCE_MANAGER_URL)ra   r   project_numberr   s       r   &assert_resource_manager_request_kwargs6TestCredentials.assert_resource_manager_request_kwargs  sV     e$(F(F(WWWWh'5000i(G333^+++r   c                     U R                  5       nUR                  5       (       a   eSUl        UR                  5       SSS.:X  d   eU R                  Ul        UR                  5       SS[
        S.:X  d   eg )N/path/to/filezexternal account credentials)rV   credential_type)rV   r   	principal)rb   get_cred_info_cred_file_pathr   "_service_account_impersonation_urlSERVICE_ACCOUNT_EMAILr   credentialss     r   test_get_cred_info"TestCredentials.test_get_cred_info  s    ++-,,....&5#((*!0=/
 
 	
 
 22 	6 ((*!0=./
 
 	
 
r   c                 v    U R                  5       nSUl        UR                  5       nUR                  S:X  d   eg )Nr   )rb   r   
_make_copy)r   r   	cred_copys      r   test__make_copy_get_cred_info-TestCredentials.test__make_copy_get_cred_info)  s:    ++-&5#**,	((O;;;r   c                    U R                  U R                  S9nUR                  (       d   eUR                  (       d   eUR                  (       a   eUR
                  (       a   eUR                  (       a   eUR                  (       a   eUR                  (       a   eUR                  (       d   eUR                  (       a   eUR                  (       a   eg NrT   )rb   r   
_token_urlr   tokenvalidexpiryexpiredrZ   requires_scopesrY   rS   r   s     r   test_default_state"TestCredentials.test_default_state/  s    ++.2.T.T , 

 %%%%====$$$$$$$$%%%%&&&&%%%%****////-----r   c           	         [         R                  " [        5       n[        U R                  U R
                  U R                  U R                  U R                  S9  S S S 5        WR                  S5      (       d   eg ! , (       d  f       N'= f)NrP   rQ   rR   rV   re   zPworkforce_pool_user_project should not be set for non-workforce pool credentials)
pytestraises
ValueErrorr   r]   r^   r_   r`   WORKFORCE_POOL_USER_PROJECTmatch)r   excinfos     r   2test_nonworkforce_with_workforce_pool_user_projectBTestCredentials.test_nonworkforce_with_workforce_pool_user_projectD  sq    ]]:&'#'#:#:.."&"8"8,0,L,L ' }}
 
 	
 
 '&s   A A<<
B
c                     U R                  5       nUR                  (       a   eUR                  (       d   eUR                  S/5      nUR	                  S/5      (       d   eUR                  (       a   eg )Nemailrb   rZ   r   with_scopes
has_scopesr   r   scoped_credentialss      r   test_with_scopes TestCredentials.test_with_scopesS  sl    ++-%%%%****(44gY?!,,gY7777%55555r   c                 T   U R                  U R                  S9nUR                  (       a   eUR                  (       d   eUR	                  S/5      nUR                  S/5      (       d   eUR                  (       a   eUR                  R                  S5      U R                  :X  d   eg )Nre   r   re   )rh   r   rZ   r   r   r   infogetr   s      r   test_with_scopes_workforce_pool/TestCredentials.test_with_scopes_workforce_pool^  s    ::(,(H(H ; 
 %%%%****(44gY?!,,gY7777%5555##''(EF//0	
0r   c                 j   U R                  5       nUR                  (       a   eUR                  (       d   eUR                  S/S/S9nUR	                  S/5      (       d   eUR	                  S/5      (       a   eUR                  (       a   eUR                  S/:X  d   eUR
                  S/:X  d   eg )Nr   profiler[   )rb   rZ   r   r   r   r[   r   s      r   .test_with_scopes_using_user_and_default_scopes>TestCredentials.test_with_scopes_using_user_and_default_scopeso  s    ++-%%%%****(44Iyk 5 
 ",,gY7777%00)====%5555!((WI555!00YK???r   c                     U R                  5       nUR                  (       a   eUR                  (       d   eUR                  S S/S9nUR	                  S/5      (       d   eUR                  (       a   eg )Nr   r   r   r   s      r   *test_with_scopes_using_default_scopes_only:TestCredentials.test_with_scopes_using_default_scopes_only  sq    ++-%%%%****(44T9+4V!,,i[9999%55555r   c                 .   U R                  [        [        U R                  U R                  U R
                  S/U R                  SS0S9n[        R                  R                  [        R                  SS S9 nUR                  S/S/5        S S S 5        WR                  U R                  U R                  U R                   U R
                  U R"                  U R                  SS0[        [        U R                  S/S/[$        S	9  g ! , (       d  f       N= f)
Ndefault1token_lifetime_seconds
  )rW   rX   rY   rZ   rS   r[   rT   rU   r   return_valuer   default2rP   rQ   rR   rS   rV   rT   rU   rW   rX   rY   rZ   r[   r\   )rb   	CLIENT_IDCLIENT_SECRETr=   SCOPESTOKEN_INFO_URLr   rm   patchobjectr   Credentialsr   assert_called_once_withr]   r^   r_   r`   r   )r   r   	mock_inits      r   (test_with_scopes_full_options_propagated8TestCredentials.test_with_scopes_full_options_propagated  s   ++'!22;;..&<.2.T.T3KT2R , 	
 ZZ((*4  
##WI
|<
 	))]]#66nn.."44.2.T.T3KT2R'!229&<3 	* 	

 
s   7D
Dc                     U R                  5       nSnUR                  U R                  :X  d   eUR                  U5      nUR                  U:X  d   eg )N&https://eu-sts.googleapis.com/v1/token)rb   r   r_   with_token_urir   r   new_token_uricreds_with_new_token_uris       r   test_with_token_uri#TestCredentials.test_with_token_uri  sR    ++-@%%777#.#=#=m#L '22mCCCr   c                    U R                  U R                  S9nSnUR                  U R                  :X  d   eUR	                  U5      nUR                  U:X  d   eUR
                  R                  S5      U R                  :X  d   eg )Nr   r   re   )rh   r   r   r_   r   r   r   r   s       r   "test_with_token_uri_workforce_pool2TestCredentials.test_with_token_uri_workforce_pool  s    ::(,(H(H ; 
 A%%777#.#=#=m#L '22mCCC$))--.KL//0	
0r   c                     U R                  5       nUR                  (       a   eUR                  (       a   eUR                  S5      nUR                  S:X  d   eg )Nproject-foo)rb   rZ   rY   with_quota_projectr   r   quota_project_credss      r   test_with_quota_project'TestCredentials.test_with_quota_project  sS    ++-%%%%////)<<]K"33}DDDr   c                    U R                  U R                  S9nUR                  (       a   eUR                  (       a   eUR	                  S5      nUR                  S:X  d   eUR
                  R                  S5      U R                  :X  d   eg )Nr   r   re   )rh   r   rZ   rY   r   r   r   r   s      r   &test_with_quota_project_workforce_pool6TestCredentials.test_with_quota_project_workforce_pool  s    ::(,(H(H ; 
 %%%%////)<<]K"33}DDD$$(()FG//0	
0r   c                 `   U R                  [        [        U R                  U R                  U R
                  S/U R                  SS0S9n[        R                  R                  [        R                  SS S9 nUR                  S5      nUR                  U R                  U R                  U R                   U R                  U R"                  U R                  SS0[        [        U R                  U R
                  S/[$        S9  UR&                  S:X  d   e S S S 5        g ! , (       d  f       g = f)	Nr   r   r   )rW   rX   rS   rY   rZ   r[   rT   rU   r   r   r   r   )rb   r   r   r   r=   r   r   rm   r   r   r   r   r   r   r]   r^   r_   r`   r   rY   )r   r   r   new_creds       r   /test_with_quota_project_full_options_propagated?TestCredentials.test_with_quota_project_full_options_propagated  s   ++'..!22;;&<.2.T.T3KT2R , 	
 ZZ((*4  
"55mDH --#'#:#:..#22"&"8"8262X2X7OQU6V#+!%!6!6{{ *| 7 . $ ,,===3
 
 
s   7BD
D-c                     U R                  SS9nUR                  SU R                  U R                  U R                  U R
                  R                  5       SS.:X  d   eg )Ndummy_universe.comr\   r   )rG   rP   rQ   rR   rV   r\   )rb   r   r]   r^   r_   r`   copyr   s     r   	test_infoTestCredentials.test_info	  sb    ++<P+Q&"&"9"9!%!7!7!<!<!>3$
 
 	
 
r   c                     U R                  SS9nUR                  S:X  d   eU R                  5       nUR                  [        :X  d   eg )Nr  r  )rb   r\   r   r   s     r   test_universe_domain$TestCredentials.test_universe_domain  sN    ++<P+Q**.BBBB++-**.EEEEr   c                 j    U R                  5       nUR                  S5      nUR                  S:X  d   eg )Nr  )rb   with_universe_domainr\   )r   r   new_credentialss      r   test_with_universe_domain)TestCredentials.test_with_universe_domain  s6    ++-%::;OP..2FFFFr   c           	          U R                  U R                  S9nUR                  SU R                  U R                  U R
                  U R                  R                  5       U R                  [        S.:X  d   eg )Nr   r   )rG   rP   rQ   rR   rV   re   r\   )	rh   r   r   rf   rg   r_   r`   r  r   r   s     r   test_info_workforce_pool(TestCredentials.test_info_workforce_pool!  sy    ::(,(H(H ; 
 &//"&"C"C!%!7!7!<!<!>+/+K+K6$
 
 	
 
r   c                 ~   U R                  [        [        U R                  U R                  U R
                  SS0S9nUR                  SU R                  U R                  U R                  U R                  U R
                  SS0U R                  R                  5       U R                  [        [        [        S.:X  d   eg )Nr   r   )rW   rX   rY   rS   rT   rU   r   )rG   rP   rQ   rR   rS   rT   service_account_impersonationrV   rY   rW   rX   r\   )rb   r   r   r=   r   r   r   r]   r^   r_   r`   r  r   r   s     r   test_info_with_full_options+TestCredentials.test_info_with_full_options0  s    ++'!22...2.T.T3KT2R , 
 &"&"9"9"11151W1W.F-M!%!7!7!<!<!> $ 5 5"*6$
 
 	
 
r   c                 B    U R                  5       nUR                  b   eg N)rb   service_account_emailr   s     r   0test_service_account_email_without_impersonation@TestCredentials.test_service_account_email_without_impersonationI  s"    ++-00888r   c                 b    U R                  U R                  S9nUR                  [        :X  d   eg r   )rb   r   r"  r   r   s     r   -test_service_account_email_with_impersonation=TestCredentials.test_service_account_email_with_impersonationN  s7    ++.2.T.T , 
 004IIIIr   rP   c                 z    [        UU R                  U R                  U R                  S9nUR                  SL d   eg NrP   rQ   rR   rV   Fr   r^   r_   r`   is_userr   rP   r   s      r   test_is_user_with_non_users+TestCredentials.test_is_user_with_non_usersU  s>    %#66nn"44	
 ""e+++r   c                 z    [        UU R                  U R                  U R                  S9nUR                  SL d   eg Nr*  Tr+  r-  s      r   test_is_user_with_users'TestCredentials.test_is_user_with_users`  s>    %#66nn"44	
 ""d***r   c                     [        UU R                  U R                  U R                  U R                  S9nUR
                  SL d   eg )NrP   rQ   rR   rV   rT   F)r   r^   r_   r`   r   r,  r-  s      r   )test_is_user_with_users_and_impersonation9TestCredentials.test_is_user_with_users_and_impersonationk  sI     &#66nn"44.2.T.T
 ""e+++r   c                 z    [        UU R                  U R                  U R                  S9nUR                  SL d   eg r)  r   r^   r_   r`   is_workforce_poolr-  s      r   %test_is_workforce_pool_with_non_users5TestCredentials.test_is_workforce_pool_with_non_users{  s>    %#66nn"44	
 ,,555r   c                 z    [        UU R                  U R                  U R                  S9nUR                  SL d   eg r1  r9  r-  s      r   !test_is_workforce_pool_with_users1TestCredentials.test_is_workforce_pool_with_users  s>    %#66nn"44	
 ,,444r   c                     [        UU R                  U R                  U R                  U R                  S9nUR
                  SL d   eg )Nr5  T)r   r^   r_   r`   r   r:  r-  s      r   3test_is_workforce_pool_with_users_and_impersonationCTestCredentials.test_is_workforce_pool_with_users_and_impersonation  sI     &#66nn"44.2.T.T
 ,,444r   mock_expires_inr   2800z/google.auth.metrics.python_and_auth_lib_versionr   zgoogle.auth._helpers.utcnowc                 H   U R                   R                  5       nX4S'   [        R                  R                  [        R                  " [        U5      S9-   nSSS.nSU R                  SSU R                  S	.nU R                  [        R                  US
9nU R                  5       n	U	R                  U5        U R                  UR                  S   Xg5        U	R                  (       d   eU	R                   U:X  d   eU	R"                  (       a   eU	R$                  US   :X  d   eg )Nr7   seconds!application/x-www-form-urlencodedTgl-python/3.7 auth/1.1 google-byoid-sdk sa-impersonation/false config-lifetime/falseContent-Typex-goog-api-client/urn:ietf:params:oauth:grant-type:token-exchanger0   subject_token_0
grant_typerP   requested_token_typesubject_tokenrQ   rC   rs   r   r4   )SUCCESS_RESPONSEr  datetimemin	timedeltaintr]   r^   r   http_clientOKrb   refreshr   	call_argsr   r   r   r   )
r   unused_utcnowmock_auth_lib_valuerC  responseexpected_expiryr   r   r   r   s
             r   (test_refresh_without_client_auth_success8TestCredentials.test_refresh_without_client_auth_success  s    ((--/!0"++//(2D2D(3
 
 @!w

 L$S."&"9"9
 ((X(N++-G$(():):1)=wU    !!_444&&&&  H^$<<<<r   z7google.auth.external_account.Credentials._mtls_requiredTzEgoogle.auth.external_account.Credentials._get_mtls_cert_and_key_pathszpath/to/cert.pemzpath/to/key.pemc                 D   U R                   R                  5       nSUS'   [        R                  R                  [        R                  " US   S9-   nSSS.nSU R
                  SS	U R                  S
.nU R                  [        R                  US9n	U R                  5       n
U
R                  U	5        SnU R                  U	R                  S   XxU5        U
R                  (       d   eU
R                  U:X  d   eU
R                   (       a   eU
R"                  US   :X  d   eg )Nr   r7   rF  rH  rI  rJ  rM  r0   rN  rO  rS  rc  r   r4   )rT  r  rU  rV  rW  r]   r^   r   rY  rZ  rb   r[  r   r\  r   r   r   r   )r    mock_get_mtls_cert_and_key_pathsmock_mtls_requiredr]  r^  r_  r`  r   r   r   r   expected_cert_paths               r   test_refresh_with_mtls&TestCredentials.test_refresh_with_mtls  s+   & ((--/!%"++//(2D2D\*3
 
 @!w

 L$S."&"9"9
 ((X(N++-G$D((a '9K	
     !!_444&&&&  H^$<<<<r   c                    U R                   R                  5       nSUS'   [        R                  R                  [        R                  " US   S9-   nSSS.nSU R
                  SS	U R                  [        R                  R                  [        R                  " S
U R                  05      5      S.nU R                  [        R                  US9nU R!                  U R                  S9nUR#                  U5        U R%                  UR&                  S   XV5        UR(                  (       d   eUR*                  U:X  d   eUR,                  (       a   eUR.                  US   :X  d   eg )Nr   r7   rF  rH  rI  rJ  rM  r0   rN  userProject)rP  rP   rQ  rR  rQ   optionsrS  r   r   r4   )rT  r  rU  rV  rW  rf   rg   r   r   quoterp   rq   r   r   rY  rZ  rh   r[  r   r\  r   r   r   r   )	r   r]  test_auth_lib_valuer_  r`  r   r   r   r   s	            r   2test_refresh_workforce_without_client_auth_successBTestCredentials.test_refresh_workforce_without_client_auth_success  sZ    ((--/!%"++//(2D2D\*3
 
 @!w

 L//$S."&"C"C||))

M4+K+KLM	
 ((X(N::(,(H(H ; 
 	G$(():):1)=wU    !!_444&&&&  H^$<<<<r   c                    U R                   R                  5       nSUS'   [        R                  R                  [        R                  " US   S9-   nSSR                  [        5      SS.nSU R                  S	S
U R                  S.nU R                  [        R                  US9nU R                  [        [        U R                  S9nUR!                  U5        U R#                  UR$                  S   XV5        UR&                  (       d   eUR(                  U:X  d   eUR*                  (       a   eUR,                  US   :X  d   eg Nr   r7   rF  rH  Basic {}rI  rK  AuthorizationrL  rM  r0   rN  rO  rS  )rW   rX   re   r   r4   )rT  r  rU  rV  rW  r   BASIC_AUTH_ENCODINGrf   rg   r   rY  rZ  rh   r   r   r   r[  r   r\  r   r   r   r   )	r   r]  r^  r_  r`  r   r   r   r   s	            r   /test_refresh_workforce_with_client_auth_success?TestCredentials.test_refresh_workforce_with_client_auth_success   sF    ((--/!%"++//(2D2D\*3
 
 @'../BC!w
 L//$S."&"C"C
 ((X(N::'(,(H(H ; 
 	G$(():):1)=wU    !!_444&&&&  H^$<<<<r   c                 x   U R                   R                  5       nSUS'   [        R                  R                  [        R                  " US   S9-   nSSR                  [        5      SS.nSU R                  S	S
U R                  S.nU R                  [        R                  US9nU R                  [        [        S S9nUR                  U5        U R!                  UR"                  S   XV5        UR$                  (       d   eUR&                  U:X  d   eUR(                  (       a   eUR*                  US   :X  d   eg rr  )rT  r  rU  rV  rW  r   rv  rf   rg   r   rY  rZ  rh   r   r   r[  r   r\  r   r   r   r   )	r   r]  mock_lib_version_valuer_  r`  r   r   r   r   s	            r   Htest_refresh_workforce_with_client_auth_and_no_workforce_project_successXTestCredentials.test_refresh_workforce_with_client_auth_and_no_workforce_project_successJ  s@    ((--/!%"++//(2D2D\*3
 
 @'../BC!w
 L//$S."&"C"C
 ((X(N::'(, ; 
 	G$(():):1)=wU    !!_444&&&&  H^$<<<<r   z:google.auth.metrics.token_request_access_token_impersonatec                    [         R                  " 5       R                  SS9[        R                  " SS9-   R                  S5      S-   n[        R                  R                  US5      nU R                  R                  5       nSS	S
.nSU R                  SSU R                  SS.nSUS.nSSR                  US   5      [        SS.n	S U R                  SS.n
U R                  [        R                   U[        R                   US9nU R#                  U R$                  U R                  S9nUR'                  U5        [)        UR*                  5      S:X  d   eU R-                  UR*                  S   S   Xg5        U R/                  UR*                  S   S   U	U
5        UR0                  (       d   eUR2                  U:X  d   eUR4                  (       a   eUR6                  US   :X  d   eg )Nr   microsecondr   rF  TZ%Y-%m-%dT%H:%M:%SZrH  Sgl-python/3.7 auth/1.1 google-byoid-sdk sa-impersonation/true config-lifetime/falserJ  rM  r0   rN  #https://www.googleapis.com/auth/iamrP  rP   rQ  rR  rQ   r8   SA_ACCESS_TOKENaccessToken
expireTimeapplication/json	Bearer {}r4   0x0rK  authorizationrL  x-allowed-locations3600s	delegatesr8   lifetimerC   rs   rw   rx   rT   rZ      r   r  r   utcnowreplacerU  rW  	isoformatstrptimerT  r  r]   r^   r   5IMPERSONATE_ACCESS_TOKEN_REQUEST_METRICS_HEADER_VALUEr   r   rY  rZ  rb   r   r[  r   call_args_listr   r   r   r   r   r   r   mock_metrics_header_valuer^  expire_timer`  r{   token_headerstoken_request_datar}   impersonation_headersimpersonation_request_datar   r   s                r   6test_refresh_impersonation_without_client_auth_successFTestCredentials.test_refresh_impersonation_without_client_auth_successt  s    OO%%!%4x7I7IRV7WW
)C.3 #++44[BVW..335?!v

 L$S."&"9"9:
 -%"

 /(//~0NO!V#(	!
 [[&
" ((>>!,5	 ) 
 ++.2.T.T;; , 

 	G$ 7))*a///((""1%a(-	
 	00""1%a(!&	

     !!_444&&&&  $:=$IIIIr   c                    [         R                  " 5       R                  SS9[        R                  " SS9-   R                  S5      S-   n[        R                  R                  US5      nU R                  R                  5       nSS	S
.nSU R                  SSU R                  SS.n	SUS.n
SSR                  US   5      [        SS.nS U R                  SS.nU R                  [        R                   U[        R                   U
S9nU R#                  U R$                  U R                  S9nUR'                  U5        [)        UR*                  5      S:X  d   eSnU R-                  UR*                  S   S   UU	U5        U R/                  UR*                  S   S   UUU5        UR0                  (       d   eUR2                  U:X  d   eUR4                  (       a   eUR6                  U
S   :X  d   eg )Nr   r~  r   rF  r  r  r  rH  r  rJ  rM  r0   rN  r  r  r  r  r  r  r4   r  r  r  r  r  r  r  rc  r   r  r  )r   re  rf  r  r^  r  r`  r{   r  r  r}   r  r  r   r   expected_cert_pathss                   r   ,test_refresh_impersonation_with_mtls_success<TestCredentials.test_refresh_impersonation_with_mtls_success  s   0 OO%%!%4x7I7IRV7WW
)C.3 #++44[BVW..335?!v

 L$S."&"9"9:
 -%"

 /(//~0NO!V#(	!
 [[&
" ((>>!,5	 ) 
 ++.2.T.T;; , 

 	G$ 7))*a///E((""1%a(		
 	00""1%a(!&		
     !!_444&&&&  $:=$IIIIr   c                 d   [         R                  " 5       R                  SS9[        R                  " SS9-   R                  S5      S-   n[        R                  R                  US5      nU R                  R                  5       nSS	S
.nSU R                  SSU R                  S[        R                  R                  [        R                  " SU R                   05      5      S.nSUS.nSSR#                  US   5      [$        SS.n	S U R&                  SS.n
U R)                  [*        R,                  U[*        R,                  US9nU R/                  U R0                  U R&                  U R                   S9nUR3                  U5        [5        UR6                  5      S:X  d   eU R9                  UR6                  S   S   Xg5        U R;                  UR6                  S   S   U	U
5        UR<                  (       d   eUR>                  U:X  d   eUR@                  (       a   eURB                  US   :X  d   eg )Nr   r~  r   rF  r  r  r  rH  r  rJ  rM  r0   rN  r  rk  rP  rP   rQ  rR  rQ   r8   rl  r  r  r  r  r4   r  r  r  r  r  )rT   rZ   re   r  r   r  )"r   r  r  rU  rW  r  r  rT  r  rf   rg   r   r   rm  rp   rq   r   r   r  r   r   rY  rZ  rh   r   r[  r   r  r   r   r   r   r   r   r  s                r   @test_refresh_workforce_impersonation_without_client_auth_successPTestCredentials.test_refresh_workforce_impersonation_without_client_auth_success"  s:    OO%%!%4x7I7IRV7WW
)C.3 #++44[BVW..335?!v

 L//$S."&"C"C:||))

M4+K+KLM

 -%"

 /(//~0NO!V#(	!
 [[&
" ((>>!,5	 ) 
 ::.2.T.T;;(,(H(H ; 
 	G$ 7))*a///((""1%a(-	
 	00""1%a(!&	

     !!_444&&&&  $:=$IIIIr   c                    SSS.nSU R                   SSSU R                  S.nU R                  [        R                  U R
                  S	9nU R                  S
S/S/S9nUR                  U5        U R                  UR                  S   X#5        UR                  (       d   eUR                  (       a   eUR                  U R
                  S   :X  d   eUR                  S
S/5      (       d   eUR                  S/5      (       a   eg )NrH  rI  rJ  rM  r0   r3   rN  rP  rP   rQ  r8   rR  rQ   rS  r>   r?   ignoredrZ   r[   r   r4   r]   r^   r   rY  rZ  rT  rb   r[  r   r\  r   r   r   r   r   r^  r   r   r   r   s         r   Stest_refresh_without_client_auth_success_explicit_user_scopes_ignore_default_scopescTestCredentials.test_refresh_without_client_auth_success_explicit_user_scopes_ignore_default_scopesu  s"    @!w

 L$S$."&"9"9
 ((>>(=(= ) 
 ++h'%; , 
 	G$(():):1)=wU    &&&&  D$9$9.$IIII%%x&:;;;;))9+66666r   c                    SSS.nSU R                   SSSU R                  S.nU R                  [        R                  U R
                  S	9nU R                  S S
S/S9nUR                  U5        U R                  UR                  S   X#5        UR                  (       d   eUR                  (       a   eUR                  U R
                  S   :X  d   eUR                  S
S/5      (       d   eg )NrH  rI  rJ  rM  r0   r3   rN  r  rS  r>   r?   r  r   r4   r  r  s         r   Etest_refresh_without_client_auth_success_explicit_default_scopes_onlyUTestCredentials.test_refresh_without_client_auth_success_explicit_default_scopes_only  s    @!w

 L$S$."&"9"9
 ((>>(=(= ) 
 ++$h/ , 
 	G$(():):1)=wU    &&&&  D$9$9.$IIII%%x&:;;;;r   c                    U R                  [        R                  U R                  S9nU R	                  5       n[
        R                  " [        R                  5       nUR                  U5        S S S 5        WR                  S5      (       d   eUR                  (       a   eUR                  b   eg ! , (       d  f       NI= f)NrS  zWError code invalid_request: Invalid subject token - https://tools.ietf.org/html/rfc6749)r   rY  BAD_REQUESTERROR_RESPONSErb   r   r   r   
OAuthErrorr[  r   r   r   r   r   r   r   s       r   &test_refresh_without_client_auth_error6TestCredentials.test_refresh_without_client_auth_error  s    ((**1D1D ) 
 ++-]]:001W( 2 }}f
 
 	
 
 &&&&  ((( 21s   B22
C c                    U R                  [        R                  U R                  [        R                  U R
                  S9nU R                  U R                  U R                  S9n[        R                  " [        R                  5       nUR                  U5        S S S 5        WR                  S5      (       d   eUR                  (       a   eUR                   b   eg ! , (       d  f       NI= f)Nr  r  z*Unable to acquire impersonated credentials)r   rY  rZ  rT  r  IMPERSONATION_ERROR_RESPONSErb   r   r   r   r   r   RefreshErrorr[  r   r   r   r  s       r   4test_refresh_impersonation_without_client_auth_errorDTestCredentials.test_refresh_impersonation_without_client_auth_error  s    ((>>&&!,!8!8#@@	 ) 
 ++.2.T.T;; , 

 ]]:223w( 4 }}JKKKK&&&&  ((( 43s   C  
C.c                 J   U R                  SU R                  S9n[        R                  " [        R
                  5       nUR                  S 5        S S S 5        WR                  S5      (       d   eUR                  (       a   eUR                  b   eg ! , (       d  f       NI= f)Nz0https://iamcredentials.googleapis.com/v1/invalidr  zLUnable to determine target principal from service account impersonation URL.)
rb   r   r   r   r   r  r[  r   r   r   )r   r   r   s      r   9test_refresh_impersonation_invalid_impersonated_url_errorITestCredentials.test_refresh_impersonation_invalid_impersonated_url_error  s    ++.`;; , 

 ]]:223w% 4 }}[
 
 	
 
 &&&&  ((( 43s   B
B"c                    SSR                  [        5      SS.nSU R                  SSU R                  S.nU R	                  [
        R                  U R                  S	9nU R                  [        [        S
9nUR                  U5        U R                  UR                  S   X#5        UR                  (       d   eUR                  (       a   eUR                   U R                  S   :X  d   eg )NrH  rs  rI  rt  rM  r0   rN  rO  rS  )rW   rX   r   r4   )r   rv  r]   r^   r   rY  rZ  rT  rb   r   r   r[  r   r\  r   r   r   r  s         r   %test_refresh_with_client_auth_success5TestCredentials.test_refresh_with_client_auth_success  s     @'../BC!w
 L$S."&"9"9
 ((>>(=(= ) 
 ++} , 
 	G$(():):1)=wU    &&&&  D$9$9.$IIIIr   c                    [         R                  " 5       R                  SS9[        R                  " SS9-   R                  S5      S-   n[        R                  R                  US5      nU R                  R                  5       nSS	R                  [        5      S
S.nSU R                  SSU R                  SS.nSUS.nSSR                  US   5      [        SS.n	S U R                  SS.n
U R                  [         R"                  U[         R"                  US9nU R%                  [&        [(        U R*                  U R                  S/S9nUR-                  U5        [/        UR0                  5      S:X  d   eU R3                  UR0                  S   S   Xg5        U R5                  UR0                  S   S   U	U
5        UR6                  (       d   eUR8                  U:X  d   eUR:                  (       a   eUR<                  US   :X  d   eg ) Nr   r~  r   rF  r  r  r  rH  rs  r  rt  rM  r0   rN  r  r  r  r  r  r  r4   r  r  r  r  r  r  rW   rX   rT   rZ   r[   r  r   r  r   r  r  rU  rW  r  r  rT  r  r   rv  r]   r^   r  r   r   rY  rZ  rb   r   r   r   r[  r   r  r   r   r   r   r   r   r  s                r   Itest_refresh_impersonation_with_client_auth_success_ignore_default_scopesYTestCredentials.test_refresh_impersonation_with_client_auth_success_ignore_default_scopes  s     OO%%!%4x7I7IRV7WW
)C.3 #++44[BVW..335?'../BC!v
 L$S."&"9"9:
 -%"

 /(//~0NO!V#(	!
 [[&
" ((>>!,5	 ) 
 ++'.2.T.T;;%; , 
 	G$ 7))*a///((""1%a(-	
 	00""1%a(!&	

     !!_444&&&&  $:=$IIIIr   c                    [         R                  " 5       R                  SS9[        R                  " SS9-   R                  S5      S-   n[        R                  R                  US5      nU R                  R                  5       nSS	R                  [        5      S
S.nSU R                  SSU R                  SS.nSUS.nSSR                  US   5      [        SS.n	S U R                  SS.n
U R                  [         R"                  U[         R"                  US9nU R%                  [&        [(        U R*                  S U R                  S9nUR-                  U5        [/        UR0                  5      S:X  d   eU R3                  UR0                  S   S   Xg5        U R5                  UR0                  S   S   U	U
5        UR6                  (       d   eUR8                  U:X  d   eUR:                  (       a   eUR<                  US   :X  d   eg )Nr   r~  r   rF  r  r  r  rH  rs  r  rt  rM  r0   rN  r  r  r  r  r  r  r4   r  r  r  r  r  r  r  r   r  r  r  s                r   Ftest_refresh_impersonation_with_client_auth_success_use_default_scopesVTestCredentials.test_refresh_impersonation_with_client_auth_success_use_default_scopesb  s    OO%%!%4x7I7IRV7WW
)C.3 #++44[BVW..335?'../BC!v
 L$S."&"9"9:
 -%"

 /(//~0NO!V#(	!
 [[&
" ((>>!,5	 ) 
 ++'.2.T.T;; , 
 	G$ 7))*a///((""1%a(-	
 	00""1%a(!&	

     !!_444&&&&  $:=$IIIIr   c                 
   0 nU R                  [        R                  U R                  S9nU R	                  5       nUR                  U5        UR                  U5        USR                  U R                  S   5      SS.:X  d   eg )NrS  r  r4   r  r  r  )r   rY  rZ  rT  rb   r[  applyr   r   r   r   r   s       r   #test_apply_without_quota_project_id3TestCredentials.test_apply_without_quota_project_id  s    ((>>(=(= ) 
 ++-G$'"(//0E0En0UV#(
 
 	
 
r   c                    0 nU R                  [        R                  U R                  S9nU R	                  U R
                  S9nUR                  U5        UR                  U5        USR                  U R                  S   5      SS.:X  d   eg )NrS  r   r  r4   r  r  )	r   rY  rZ  rT  rh   r   r[  r  r   r  s       r   -test_apply_workforce_without_quota_project_id=TestCredentials.test_apply_workforce_without_quota_project_id  s    ((>>(=(= ) 
 ::(,(H(H ; 
 	G$'"(//0E0En0UV#(
 
 	
 
r   c                    [         R                  " 5       R                  SS9[        R                  " SS9-   R                  S5      S-   nSUS.nU R                  [        R                  U R                  R                  5       [        R                  US	9nU R                  U R                  U R                  S
9n0 nUR                  U5        UR                  U5        USR!                  US   5      SS.:X  d   eg )Nr   r~  r2   rF  r  r  r  r  r  r  r  r  r  r  )r   r  r  rU  rW  r  r   rY  rZ  rT  r  rb   r   r   r[  r  r   r   r  r}   r   r   r   s         r   1test_apply_impersonation_without_quota_project_idATestCredentials.test_apply_impersonation_without_quota_project_id  s    OO%%!%4x7I7IRV7WW
)C.3
 -%"
 ((>>&&++-!,5	 ) 
 ++.2.T.T;; , 
 G$'"(//0F}0UV#(
 
 	
 
r   c                 8   SS0nU R                  [        R                  U R                  S9nU R	                  U R
                  S9nUR                  U5        UR                  U5        USSR                  U R                  S   5      U R
                  SS.:X  d   eg )	Notherheader-valuerS  )rY   r  r4   r  r  r  x-goog-user-projectr  )	r   rY  rZ  rT  rb   r=   r[  r  r   r  s       r    test_apply_with_quota_project_id0TestCredentials.test_apply_with_quota_project_id  s    N+((>>(=(= ) 
 ++T=R=R+SG$'"#(//0E0En0UV#'#8#8#(	
 
 	
 
r   c                 (   [         R                  " 5       R                  SS9[        R                  " SS9-   R                  S5      S-   nSUS.nU R                  [        R                  U R                  R                  5       [        R                  US	9nU R                  U R                  U R                  U R                  S
9nSS0nUR                  U5        UR!                  U5        USSR#                  US   5      U R                  SS.:X  d   eg )Nr   r~  r2   rF  r  r  r  r  r  rT   rZ   rY   r  r  r  r  r  r  )r   r  r  rU  rW  r  r   rY  rZ  rT  r  rb   r   r   r=   r[  r  r   r  s         r   .test_apply_impersonation_with_quota_project_id>TestCredentials.test_apply_impersonation_with_quota_project_id  s   OO%%!%4x7I7IRV7WW
)C.3
 -%"
 ((>>&&++-!,5	 ) 
 ++.2.T.T;;!22 , 

 N+G$'"#(//0F}0UV#'#8#8#(	
 
 	
 
r   c                 l   SS0nU R                  [        R                  U R                  S9nU R	                  5       nUR                  USSU5        USSR                  U R                  S   5      SS	.:X  d   eUR                  USSU5        USSR                  U R                  S   5      SS	.:X  d   eg )
Nr  r  rS  r   https://example.com/apir  r4   r  r  r  r  )r   rY  rZ  rT  rb   before_requestr   r  s       r   test_before_request#TestCredentials.test_before_request*  s    N+((>>(=(= ) 
 ++- 	""7F4MwW#(//0E0En0UV#(
 
 	
 
 	""7F4MwW#(//0E0En0UV#(
 
 	
 
r   c                 ~   SS0nU R                  [        R                  U R                  S9nU R	                  U R
                  S9nUR                  USSU5        USSR                  U R                  S   5      S	S
.:X  d   eUR                  USSU5        USSR                  U R                  S   5      S	S
.:X  d   eg )Nr  r  rS  r   r   r  r  r4   r  r  )r   rY  rZ  rT  rh   r   r  r   r  s       r   test_before_request_workforce-TestCredentials.test_before_request_workforceC  s    N+((>>(=(= ) 
 ::(,(H(H ; 

 	""7F4MwW#(//0E0En0UV#(
 
 	
 
 	""7F4MwW#(//0E0En0UV#(
 
 	
 
r   c                 .   [         R                  " 5       R                  SS9[        R                  " SS9-   R                  S5      S-   nSUS.nU R                  [        R                  U R                  R                  5       [        R                  US	9nS
S0nU R                  U R                  S9nUR                  USSU5        USSR                  US   5      SS.:X  d   eUR                  USSU5        USSR                  US   5      SS.:X  d   eg )Nr   r~  r2   rF  r  r  r  r  r  r  r  r   r   r  r  r  r  r  )r   r  r  rU  rW  r  r   rY  rZ  rT  r  rb   r   r  r   )r   r  r}   r   r   r   s         r   !test_before_request_impersonation1TestCredentials.test_before_request_impersonation^  sA   OO%%!%4x7I7IRV7WW
)C.3
 -%"
 ((>>&&++-!,5	 ) 
 N+++.2.T.T , 

 	""7F4MwW#(//0F}0UV#(
 
 	
 
 	""7F4MwW#(//0F}0UV#(
 
 	
 
r   c                    0 nU R                  [        R                  U R                  S9nU R	                  5       nSUl        [        R                  R                  Ul        [        R                  R                  [        R                  -   [        R                  " SS9-   Ul        UR                  (       d   eUR                  (       a   eUR                  [         R"                  :X  d   eUR%                  USSU5        USSS	.:X  d   e[        R                  R                  [        R                  " SS9-   Ul        UR                  (       a   eUR                  (       d   eUR                  [         R&                  :X  d   eUR%                  USSU5        UR                  [         R"                  :X  d   eUS
R)                  U R                  S   5      SS	.:X  d   eg )NrS  r   r   rF  r   r  Bearer tokenr  r  r  r4   )r   rY  rZ  rT  rb   r   rU  rV  r   r   REFRESH_THRESHOLDrW  r   r   r   token_stater   FRESHr  STALEr   )r   r  r   r   r   s        r   test_before_request_expired+TestCredentials.test_before_request_expired  s   ((>>(=(= ) 
 ++-#&//33 !!(()  +, 	     &&&&&&**:*::::""7F4MwW +#(
 
 	
 
 '//33h6H6HQR6SS$$$$""""&&**:*::::""7F4MwW&&**:*:::: (//0E0En0UV#(
 
 	
 
r   c                    0 n[         R                   R                  [         R                  " SS9-   R                  S5      S-   nSUS.nU R	                  [
        R                  U R                  R                  5       [
        R                  US9nU R                  U R                  S9nS	Ul        [         R                   R                  Ul        [         R                   R                  [        R                  -   [         R                  " S
S9-   Ul        UR                   (       d   eUR"                  (       a   eUR$                  [&        R(                  :X  d   eUR+                  USSU5        UR$                  [&        R(                  :X  d   eUSSS.:X  d   e[         R                   R                  [         R                  " S
S9-   Ul        UR                   (       a   eUR"                  (       d   eUR$                  [&        R,                  :X  d   eUR+                  USSU5        UR$                  [&        R(                  :X  d   eUR+                  USSU5        USR/                  US   5      SS.:X  d   eg )Ni  rF  r  r  r  r  r  r   r   r   r   r  r  r  r  r  r  )rU  rV  rW  r  r   rY  rZ  rT  r  rb   r   r   r   r   r  r   r   r   r  r   r  r  r  r   )r   r  r   r  r}   r   r   s          r   )test_before_request_impersonation_expired9TestCredentials.test_before_request_impersonation_expired  sU   !!H$6$6t$DD
)C.3
 -%"
 ((>>&&++-!,5	 ) 
 ++.2.T.T , 
 $&//33 !!(()  +, 	     &&&&&&**:*::::""7F4MwW&&**:*:::: +#(
 
 	
 
 '//33h6H6HQR6SS$$$$""""&&**:*::::""7F4MwW&&**:*::::""7F4MwW (//0F}0UV#(
 
 	
 
r   )r   z//iam.googleapis.com/projectsz//iam.googleapis.com/projects/z#//iam.googleapis.com/project/123456z%//iam.googleapis.com/projects//123456z+//iam.googleapis.com/prefix_projects/123456z+//iam.googleapis.com/projects_suffix/123456c                     [        UU R                  U R                  U R                  S9nUR                  b   eUR                  S 5      b   eg Nr*  )r   r^   r_   r`   r   get_project_idr-  s      r   "test_project_number_indeterminable2TestCredentials.test_project_number_indeterminable  sU     &#66nn"44	
 ))111))$/777r   c                     [        U R                  U R                  U R                  U R                  S9nUR
                  U R                  :X  d   eg r  )r   r]   r^   r_   r`   r   PROJECT_NUMBERr   s     r    test_project_number_determinable0TestCredentials.test_project_number_determinable  sH    %]]#66nn"44	
 ))T-@-@@@@r   c                     [        U R                  U R                  U R                  U R                  U R
                  S9nUR                  b   eg )Nr   )r   rf   rg   r_   r`   r   r   r   s     r   test_project_number_workforce-TestCredentials.test_project_number_workforce  sK    %,,#@@nn"44(,(H(H
 ))111r   c                     [        U R                  U R                  U R                  U R                  S9nUR                  S 5      b   eg r  )r   r]   r^   r_   r`   r  r   s     r   test_project_id_without_scopes.TestCredentials.test_project_id_without_scopes!  sE    %]]#66nn"44	
 ))$/777r   c           	         U R                   R                  5       nSSS.nSU R                  SSU R                  SS.n[        R
                  " 5       R                  S	S
9[        R                  " SS9-   R                  S5      S-   n[        R                  R                  US5      nSUS.nSU R                  SR                  US   5      [        SS.n	S U R                  SS.n
U R                  [         R"                  U R                   R                  5       [         R"                  U[         R"                  U R$                  S9nU R'                  U R(                  U R                  U R                  S9nUR+                  U5      nXR,                  :X  d   e[/        UR0                  5      S:X  d   eU R3                  UR0                  S	   S   XE5        U R5                  UR0                  S   S   U	U
5        UR6                  (       d   eUR8                  U:X  d   eUR:                  (       a   eUR<                  US   :X  d   eU R?                  UR0                  S   S   U R@                  U R                  SR                  US   5      SS.5        UR+                  U5      nXR,                  :X  d   e[/        UR0                  5      S:X  d   eg ) NrH  r  rJ  rM  r0   rN  r  r  r   r~  r2   rF  r  r  r  r  r  r  r  r4   r  )rK  r  r  rL  r  r  r  )rC   rs   rw   rx   ry   rz   r     r   r  r  r  r  r  )!rT  r  r]   r^   r   r  r  rU  rW  r  r  r=   r   r  r   r   rY  rZ  'CLOUD_RESOURCE_MANAGER_SUCCESS_RESPONSErb   r   r  
PROJECT_IDr   r  r   r   r   r   r   r   r   r	  )r   r  r^  r{   r  r  r  r`  r}   r  r  r   r   
project_ids                 r   2test_get_project_id_cloud_resource_manager_successBTestCredentials.test_get_project_id_cloud_resource_manager_success,  s    ..335?!v

 L$S."&"9"9:
 OO%%!%4x7I7IRV7WW
)C.3 #++44[BVW,%"

 /#'#8#8(//~0NO!V#(!
 [[&
" ((>>&&++-!,5*5..(,(T(T ) 
 ++.2.T.T;;!22 , 
 !//8
__,,,7))*a///((""1%a(-	
 	00""1%a(!&	
     !!_444&&&&  $:=$IIII33""1%a('+'<'<!,!3!3*=9" (-
	
 !//8
__,,,7))*a///r   c                 2   SSS.nSU R                   SSU R                  S[        R                  R	                  [
        R                  " SU R                  05      5      S	.nU R                  [        R                  U R                  R                  5       [        R                  U R                  S
9nU R                  U R                  U R                   U R                  S9nUR#                  U5      nX`R$                  :X  d   e['        UR(                  5      S:X  d   eU R+                  UR(                  S   S   X#5        UR,                  (       d   eUR.                  (       a   eUR0                  U R                  S   :X  d   eU R3                  UR(                  S   S   U R                  U R                   SR5                  U R                  S   5      SS.5        UR#                  U5      nX`R$                  :X  d   e['        UR(                  5      S:X  d   eg )NrH  rI  rJ  rM  r0   rN  r3   rk  r  )rC   rs   ry   rz   )rZ   rY   re   r  r   r   r4   r  r  r  )rf   rg   r   r   rm  rp   rq   r   r   rY  rZ  rT  r  r  rh   r   r=   r  r  r   r  r   r   r   r   r   r   )r   r^  r  r  r   r   r  s          r   Atest_workforce_pool_get_project_id_cloud_resource_manager_successQTestCredentials.test_workforce_pool_get_project_id_cloud_resource_manager_success  s    @!w

 L//$S."&"C"C$||))

M4+K+KLM

 ((>>&&++-*5..(,(T(T	 ) 
 ::;;!22(,(H(H ; 
 !//8
__,,,7))*a///((""1%a(-	

     &&&&  D$9$9.$IIII33""1%a(,,'+'<'<!,!3!3)).9" (-
	
 !//8
__,,,7))*a///r   c                    [         R                  " 5       R                  SS9[        R                  " SS9-   R                  S5      S-   n[        R                  R                  US5      nU R                  R                  5       nSS	S
.nSU R                  SSU R                  SS.nSUS.nSSR                  US   5      [        SS.n	S U R                  SS.n
U R                  [        R                   U[        R                   US9nU R#                  U R$                  SS0U R                  S9nUR'                  U5        [)        UR*                  5      S:X  d   eU R-                  UR*                  S   S   Xg5        U R/                  UR*                  S   S   U	U
5        UR0                  (       d   eUR2                  U:X  d   eUR4                  (       a   eUR6                  US   :X  d   eg )Nr   r~  r   rF  r  r  r  rH  zRgl-python/3.7 auth/1.1 google-byoid-sdk sa-impersonation/true config-lifetime/truerJ  rM  r0   rN  r  r  r  r  r  r  r4   r  r  2800sr  r  r   )rT   rU   rZ   r  r   r  r  r  s                r   (test_refresh_impersonation_with_lifetime8TestCredentials.test_refresh_impersonation_with_lifetime  s    OO%%!%4x7I7IRV7WW
)C.3 #++44[BVW..335?!u

 L$S."&"9"9:
 -%"

 /(//~0NO!V#(	!
 [[&
" ((>>!,5	 ) 
 ++.2.T.T3KT2R;; , 
 	G$ 7))*a///((""1%a(-	
 	00""1%a(!&	

     !!_444&&&&  $:=$IIIIr   c                 "   U R                  [        R                  U R                  R	                  5       [        R
                  S9nU R                  U R                  S9nUR                  U5      nUb   e[        UR                  5      S:X  d   eg )N)rC   rs   ry   )rZ   r  )r   rY  rZ  rT  r  UNAUTHORIZEDrb   r   r  r   r  )r   r   r   r  s       r   0test_get_project_id_cloud_resource_manager_error@TestCredentials.test_get_project_id_cloud_resource_manager_error,  s     ((>>&&++-*5*B*B ) 

 ++4;;+? //8
!!!7))*a///r   r   )NNNNNNNr!  )mr!   r"   r#   r$   r_   r   r	  r+   r,   r   r]   rf   r   r^   rg   r`   rT  r  r=   r   r   r   r  r  r   r  classmethodr   rb   rh   rY  rZ  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r  r  r#  r&  r   markparametrizeTEST_NON_USER_AUDIENCESr.  TEST_USER_AUDIENCESr2  r6  r;  r>  rA  rm   r   !LANG_LIBRARY_METRICS_HEADER_VALUErU  rV  ra  rh  ro  rw  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r#  r%   r   r   r   r(   r(   V   s%   5I?NNGK	 f^Wk2	  	OfWk"  #G?#N !AB&L  #4:N
 *F
3
:
:;P
Q	R & !F=(
$  JB  ("0#=9/+  *..0/
 
8  *.$(
 
0  ~~!&*$(& &P 9=< <  9=) ) , ,
&<.*
	6
"@ 	6!
FD
"E
 %>N

FG


29
J [[Z)@A, B, [[Z)<=+ >+ [[Z)<=, >, [[Z)@A6 B6 [[Z)<=5 >5 [[Z)<=5 >5 [[.v?	ZZ96 
ZZ-H<M<M<Q<QR= S	 @=> 
ZZ96 
ZZ-H<M<M<Q<QR	ZZAPT 
ZZO<$=	 S	$=L 
ZZ96 
ZZ-H<M<M<Q<QR"= S	
"=H 
ZZ96 
ZZ-H<M<M<Q<QR#= S	
#=J 
ZZ96 
ZZ-H<M<M<Q<QR#= S	
#=J 
ZZDJ 
ZZ96EJ		EJN 
ZZDJ 
ZZ96 
ZZAPT 
ZZO<NJ			NJ` 
ZZDJ 
ZZ96IJ		IJV 
ZZ967	7B 
ZZ96<	<@))&) 
ZZ96J	J6 
ZZDJ 
ZZ96JJ		JJX 
ZZDJ 
ZZ96JJ		JJX

"
@
"!
F
2
6&
P 
ZZ-.*
 /*
X 
ZZ-.=
 /=
~ [[
	
	8	8A	2	8 
ZZDJ 
ZZ96^0		^0@ 
ZZ96B0	B0H 
ZZDJ 
ZZ96FJ		FJP0r   r(   c                  z    [         R                  " SS5      n U R                  S:X  d   eU R                  S:X  d   eg )NTestTokenTypeTestAudience)r   SupplierContextrQ   rP   )contexts    r   test_supplier_contextr0  =  s<    ..OG%%888~---r   )rU  http.clientclientrY  rp   r   rm   r   google.authr   r   r   r   google.auth.credentialsr   r   r  r*  r   r   rv  r   r)  r(  r   r   r   r(   r0  r   r   r   <module>r5     s     !       " ( ! ; . @ 6 %= !	0 K   82&22 2d0f d0N?.r   