
    \                        S SK r S SK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
  \R                  R                  \R                  R                  \5      S5      r\" \R                  R                  \S5      S5       r\R%                  5       rSSS5        \" \R                  R                  \S	5      S5       r\R%                  5       rSSS5        \" \R                  R                  \S
5      S5       r\R%                  5       rSSS5        \" \R                  R                  \S5      S5       r\R%                  5       rSSS5        \" \R                  R                  \S5      S5       r\R%                  5       rSSS5        \R                  R                  \S5      r\" \S5       r\R2                  " \5      rSSS5        \R6                  S 5       rS rS rS r\R6                  S 5       r S r!\R6                  S 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  r.S! r/S" r0S# r1S$ r2S% r3S& r4S' r5S( r6S) r7S* r8S+ r9S, r: " S- S.\;5      r< " S/ S0\;5      r=g! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNb= f! , (       d  f       GN8= f! , (       d  f       GN
= f)1    N)_helpers)crypt)
exceptions)jwtdatazprivatekey.pemrbzpublic_cert.pemzother_cert.pemzes256_privatekey.pemzes256_public_cert.pemzservice_account.jsonc                  J    [         R                  R                  [        S5      $ N1)r   	RSASignerfrom_stringPRIVATE_KEY_BYTES     Hplatform/gsutil/third_party/google-auth-library-python/tests/test_jwt.pysignerr   4   s    ??&&'8#>>r   c                     SS0n[         R                  " X5      n[         R                  " U5      u  p4  nXA:X  d   eUSSU R                  S.:X  d   eg )NtestvalueJWTRS256typalgkidr   encode_unverified_decodekey_id)r   test_payloadencodedheaderpayload_s         r   test_encode_basicr%   9   sV    G$Ljj.G227;FQ"""U76==IIIIr   c                     [         R                  " U 0 SS0S9n[         R                  " U5      nUSSU R                  SS.:X  d   eg )Nextrar   r"   r   r   )r   r   r   r'   r   r   decode_headerr   r   r!   r"   s      r   test_encode_extra_headersr,   A   sP    jjWg,>?Gw'F}}	   r   c                     [         R                  " U 0 SS0S9n[         R                  " U5      nUSSU R                  S.:X  d   eg )Nr   foor(   r   r   r)   r+   s      r   !test_encode_custom_alg_in_headersr/   L   sA    jjUEN;Gw'FU5GGGGr   c                  J    [         R                  R                  [        S5      $ r
   )r   ES256Signerr   EC_PRIVATE_KEY_BYTESr   r   r   es256_signerr3   R   s    (()=sCCr   c                     SS0n[         R                  " X5      n[         R                  " U5      u  p4  nXA:X  d   eUSSU R                  S.:X  d   eg )Nr   r   r   ES256r   r   )r3   r    r!   r"   r#   r$   s         r   test_encode_basic_es256r6   W   sX    G$Ljj4G227;FQ"""U7<;N;NOOOOr   c                    ^ ^ SUU 4S jjnU$ )Nc                 "  > [         R                  " [         R                  " 5       5      nSUUS-   SSS0S.nUR                  U =(       d    0 5        USL a	  S Tl        S nU(       a  [
        R                  " TXAS9$ [
        R                  " TXAS9$ )	Naudience@example.comi,  	billy bobmetar   )audiatexpusermetadataFr   )r   datetime_to_secsutcnowupdate_key_idr   r   )claimsr   use_es256_signernowr#   r3   r   s        r   factorytoken_factory.<locals>.factorya   s    ''(9:)9(
 	v|$ U?!FNF::lGCC::fg==r   )NNFr   )r   r3   rI   s   `` r   token_factoryrK   _   s    > >, Nr   c                     [         R                  " U " 5       [        S9nUS   S:X  d   eUS   S:X  d   eUS   S   S:X  d   eg )	Ncertsr<   r9   r?   r:   r@   r;   r   r   decodePUBLIC_CERT_BYTESrK   r#   s     r   test_decode_validrS   z   sR    jj0ABG5>33336?k))):v&&000r   c                 @   U " 5       nSSR                  UR                  S5      SS  5      -   n[        R                  " [        5       n[
        R                  " U[        S9  S S S 5        WR                  S[        S5      -   5      (       d   eg ! , (       d  f       N3= f)Ns   M7.   .   rM   z(Header segment should be a JSON object: s   M7)
joinsplitpytestraises
ValueErrorr   rP   rQ   matchstr)rK   r#   excinfos      r   test_decode_header_objectr_      sx    oG tyyt!4QR!899G	z	"g

7"34 
#==Ds5zQRRRR 
#	"s   B
Bc                    [         R                  " U S5      n[        R                  " [        5       n[         R
                  " U[        S9  S S S 5        WR                  S[        S5      -   5      (       d   eg ! , (       d  f       N3= f)NiatexprM   z)Payload segment should be a JSON object: s   ImlhdGV4cCI)	r   r   rY   rZ   r[   rP   rQ   r\   r]   )r   r#   r^   s      r   test_decode_payload_objectrb      sg     jj*G	z	"g

7"34 
#==4s>7JJ    
#	"s   A99
Bc                     [         R                  " U " SS9[        S9nUS   S:X  d   eUS   S:X  d   eUS   S	   S
:X  d   eg )NT)rG   rM   r<   r9   r?   r:   r@   r;   r   )r   rP   EC_PUBLIC_CERT_BYTESrR   s     r   test_decode_valid_es256re      sZ    jjt,4HG 5>33336?k))):v&&000r   c                     [         R                  " U " 5       [        SS9nUS   S:X  d   eUS   S:X  d   eUS   S   S:X  d   eg )	Nr9   rN   audiencer<   r?   r:   r@   r;   r   rO   rR   s     r   test_decode_valid_with_audienceri      sZ    jj0;QG 5>33336?k))):v&&000r   c                     [         R                  " U " 5       [        SS/S9nUS   S:X  d   eUS   S:X  d   eUS   S   S	:X  d   eg )
Nr9   zanother_audience@example.comrg   r<   r?   r:   r@   r;   r   rO   rR   s     r   $test_decode_valid_with_audience_listrk      s`    jj(*HIG
 5>33336?k))):v&&000r   c                     [         R                  " U " 5       [        SS9nUS   S:X  d   eUS   S:X  d   eUS   S   S	:X  d   eg )
NF)rN   verifyr<   r9   r?   r:   r@   r;   r   )r   rP   OTHER_CERT_BYTESrR   s     r   test_decode_valid_unverifiedro      sT    jj0@OG5>33336?k))):v&&000r   c                      [         R                  " [        5       n [        R                  " S[
        5        S S S 5        W R                  S5      (       d   eg ! , (       d  f       N'= f)Nz1.2zWrong number of segmentsrY   rZ   r[   r   rP   rQ   r\   r^   s    r   .test_decode_bad_token_wrong_number_of_segmentsrs      sC    	z	"g

5+, 
#==45555 
#	"s   A
A&c                      [         R                  " [        [        45       n [        R
                  " S[        5        S S S 5        W R                  S5      (       d   eg ! , (       d  f       N'= f)Nz1.2.3z+Incorrect padding|more than a multiple of 4)rY   rZ   r[   	TypeErrorr   rP   rQ   r\   rr   s    r    test_decode_bad_token_not_base64rv      sH    	
I.	/7

7-. 
0==GHHHH 
0	/s   A
A,c                  $   SR                  [        R                  " S5      /S-  5      n [        R                  " [
        5       n[        R                  " U [        5        S S S 5        WR                  S5      (       d   eg ! , (       d  f       N'= f)NrU   s   123!   zCan\'t parse segment)
rW   base64urlsafe_b64encoderY   rZ   r[   r   rP   rQ   r\   )tokenr^   s     r   test_decode_bad_token_not_jsonr|      sd    IIv//89A=>E	z	"g

5+, 
#==01111 
#	"s   B
Bc                    [         R                  " U SS05      n[        R                  " [        5       n[         R
                  " U[        5        S S S 5        WR                  S5      (       d   eg ! , (       d  f       N'= f)Nr   r   z%Token does not contain required claim)r   r   rY   rZ   r[   rP   rQ   r\   )r   r{   r^   s      r   #test_decode_bad_token_no_iat_or_expr~      sX    JJv01E	z	"g

5+, 
#==ABBBB 
#	"s   A11
A?c           
      X   U " S[         R                  " [         R                  " 5       [        R                  " SS9-   5      0S9n[
        R                  " [        5       n[        R                  " U[        SS9  S S S 5        WR                  S5      (       d   eg ! , (       d  f       N'= f)Nr=   rV   hoursrF   ;   clock_skew_in_secondszToken used too earlyr   rB   rC   datetime	timedeltarY   rZ   r[   r   rP   rQ   r\   rK   r{   r^   s      r   test_decode_bad_token_too_earlyr      s    8,,!H$6$6Q$??
E 
z	"g

5+2F 
#==01111 
#	"   B
B)c           
      X   U " S[         R                  " [         R                  " 5       [        R                  " SS9-
  5      0S9n[
        R                  " [        5       n[        R                  " U[        SS9  S S S 5        WR                  S5      (       d   eg ! , (       d  f       N'= f)Nr>   rV   r   r   r   r   zToken expiredr   r   s      r   test_decode_bad_token_expiredr      s    8,,!H$6$6Q$??
E 
z	"g

5+2F 
#==)**** 
#	"r   c           
      <   U " [         R                  " [         R                  " 5       [        R                  " SS9-   5      [         R                  " [         R                  " 5       [        R                  " SS9-
  5      S.S9n[
        R                  " U[        5        g )NrV   secondsr>   r=   r   r   rB   rC   r   r   r   rP   rQ   rK   r{   s     r   &test_decode_success_with_no_clock_skewr      st    ,,!H$6$6q$AA ,,!H$6$6q$AA	
	E JJu'(r   c           
      :   U " [         R                  " [         R                  " 5       [        R                  " SS9-   5      [         R                  " [         R                  " 5       [        R                  " SS9-
  5      S.S9n[
        R                  " U[        SS9  g )N   r   r   r   rV   r   r   r   s     r   *test_decode_success_with_custom_clock_skewr      sv    ,,!H$6$6q$AA ,,!H$6$6q$AA	
	E JJu'qAr   c                     U " 5       nSn[         R                  " [        5       n[        R                  " U[
        US9  S S S 5        WR                  S5      (       d   eg ! , (       d  f       N'= f)Naudience2@example.comrh   Token has wrong audiencerq   rK   r{   rh   r^   s       r   $test_decode_bad_token_wrong_audiencer     sQ    OE&H	z	"g

5+h? 
#==45555 
#	"s   A  
A.c                     U " 5       nSS/n[         R                  " [        5       n[        R                  " U[
        US9  S S S 5        WR                  S5      (       d   eg ! , (       d  f       N'= f)Nr   zaudience3@example.comr   r   rq   r   s       r   )test_decode_bad_token_wrong_audience_listr     sW    OE')@AH	z	"g

5+h? 
#==45555 
#	"s   A""
A0c                     [         R                  " [        5       n[        R                  " U " 5       [
        5        S S S 5        WR                  S5      (       d   eg ! , (       d  f       N'= f)N Could not verify token signature)rY   rZ   r[   r   rP   rn   r\   )rK   r^   s     r   test_decode_wrong_certr     sE    	z	"g

=?$45 
#==<==== 
#	"s   !A
A+c                     [         [        S.n[        R                  " [        5       n[
        R                  " U " 5       U5        S S S 5        WR                  S5      (       d   eg ! , (       d  f       N'= f)N)r   2r   )rn   rQ   rY   rZ   r[   r   rP   r\   rK   rN   r^   s      r   test_decode_multicert_bad_certr   $  sO    "):;E	z	"g

=?E* 
#==<==== 
#	"s   A&&
A4c                     S[         0n[        R                  " [        5       n[        R
                  " U " 5       U5        S S S 5        WR                  S5      (       d   eg ! , (       d  f       N'= f)Nr   z"Certificate for key id 1 not found)rQ   rY   rZ   r[   r   rP   r\   r   s      r   test_decode_no_certr   +  sO    #$E	z	"g

=?E* 
#==>???? 
#	"s   A!!
A/c                 b    U " SS9nS[         0n[        R                  " X5      nUS   S:X  d   eg )NFrA   r   r?   r:   )rQ   r   rP   rK   r{   rN   r#   s       r   test_decode_no_key_idr   2  s7    'E#$Ejj&G6?k)))r   c                  8   [         R                  " SSS.5      n SR                  [        S U SS/5      5      n[        R
                  " [        5       n[        R                  " U5        S S S 5        WR                  S5      (       d   eg ! , (       d  f       N'= f)Nr   fakealgr   r   rU   c                 L    [         R                  " U R                  S5      5      $ Nutf-8ry   	b64encoder   segs    r   <lambda>)test_decode_unknown_alg.<locals>.<lambda><      ((G)<=r   {}sig)
jsondumpsrW   maprY   rZ   r[   r   rP   r\   )headersr{   r^   s      r   test_decode_unknown_algr   9  su    jj$
;<GII=PV?WXE 
z	"g

5 
#==$$$$ 
#	"s   B
Bc                 x   U R                  [        R                  S5        [        R                  " SSS.5      nSR                  [        S USS/5      5      n[        R                  " [        5       n[        R                  " U5        S S S 5        WR                  S5      (       d   eg ! , (       d  f       N'= f)	Nr5   r   r   rU   c                 L    [         R                  " U R                  S5      5      $ r   r   r   s    r   r   5test_decode_missing_crytography_alg.<locals>.<lambda>H  r   r   r   r   cryptography)delitemr   _ALGORITHM_TO_VERIFIER_CLASSr   r   rW   r   rY   rZ   r[   rP   r\   )monkeypatchr   r{   r^   s       r   #test_decode_missing_crytography_algr   D  s    88'Bjj$9:GII=PV?WXE 
z	"g

5 
#==)))) 
#	"s   3B++
B9c                 l    U " SS9n[         [        S.n[        R                  " X5      nUS   S:X  d   eg )N3rA   )r   r   r?   r:   )rn   rQ   r   rP   r   s       r   test_roundtrip_explicit_key_idr   P  s7    %E"):;Ejj&G6?k)))r   c                       \ rS rSrSrSrSrSS0rSr\	R                  " SS	9S
 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 rS rS rS rS rS rSrg)TestCredentialsiW  service-account@example.comsubjectrh   r;   r   NTautousec                 |    [         R                  " UU R                  U R                  U R                  5      U l        g N)r   CredentialsSERVICE_ACCOUNT_EMAILAUDIENCEcredentialsselfr   s     r   credentials_fixture#TestCredentials.credentials_fixture^  s/    ??&&&&MM	
r   c                    [        [        S5       n[        R                  " U5      nS S S 5        [        R
                  R                  WU R                  S9nUR                  R                  US   :X  d   eUR                  US   :X  d   eUR                  US   :X  d   eUR                  U R                  :X  d   eg ! , (       d  f       N= f)Nrr   private_key_idclient_email)openSERVICE_ACCOUNT_JSON_FILEr   loadr   r   from_service_account_infor   _signerr   _issuer_subject	_audiencer   fhinfor   s       r   test_from_service_account_info.TestCredentials.test_from_service_account_infog  s    +S1R99R=D 2 oo??4== @ 
 ""))T2B-CCCC""d>&::::##tN';;;;$$555 21s   B>>
Cc                    [         R                  5       n[        R                  R	                  UU R
                  U R                  U R                  S9nUR                  R                  US   :X  d   eUR                  US   :X  d   eUR                  U R
                  :X  d   eUR                  U R                  :X  d   eUR                  U R                  :X  d   eg Nr   rh   additional_claimsr   r   )SERVICE_ACCOUNT_INFOcopyr   r   r   SUBJECTr   ADDITIONAL_CLAIMSr   r   r   r   r   _additional_claimsr   r   r   s      r   #test_from_service_account_info_args3TestCredentials.test_from_service_account_info_argst  s    #((*oo??LL]]"44	 @ 
 ""))T2B-CCCC""d>&::::##t||333$$555--1G1GGGGr   c                 N   [         R                  5       n[        R                  R	                  [
        U R                  S9nUR                  R                  US   :X  d   eUR                  US   :X  d   eUR                  US   :X  d   eUR                  U R                  :X  d   eg )Nr   r   r   )r   r   r   r   from_service_account_filer   r   r   r   r   r   r   r   s      r   test_from_service_account_file.TestCredentials.test_from_service_account_file  s    #((*oo??% @ 
 ""))T2B-CCCC""d>&::::##tN';;;;$$555r   c                    [         R                  5       n[        R                  R	                  [
        U R                  U R                  U R                  S9nUR                  R                  US   :X  d   eUR                  US   :X  d   eUR                  U R                  :X  d   eUR                  U R                  :X  d   eUR                  U R                  :X  d   eg r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s      r   #test_from_service_account_file_args3TestCredentials.test_from_service_account_file_args  s    #((*oo??%LL]]"44	 @ 
 ""))T2B-CCCC""d>&::::##t||333$$555--1G1GGGGr   c                 :   U R                   R                  U R                   [        R                  R                  S9n[
        R                  R                  [        [        R                  R                  S9n[        U[
        R                  5      (       d   eUR                  R                  UR                  R                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   eg )Nr   )r   from_signing_credentialsmocksentinelnew_audiencer   r   r   r   
isinstancer   r   r   r   r   r   jwt_from_signingjwt_from_infos      r   test_from_signing_credentials-TestCredentials.test_from_signing_credentials  s    ++DDt}}'A'A E 
 AA 4==+E+E B 
 *COO<<<<''..-2G2G2N2NNNN''=+@+@@@@((M,B,BBBB))]-D-DDDDr   c                 x    U R                   R                  (       a   eU R                   R                  (       a   eg r   r   validexpiredr   s    r   test_default_state"TestCredentials.test_default_state  s/    ##))))##+++++r   c                    SnU R                   R                  US9nUR                  U R                   R                  :X  d   eUR                  U R                   R                  :X  d   eUR                  U R                   R                  :X  d   eUR
                  U:X  d   eUR                  U R                   R                  :X  d   eUR                  U R                   R                  :X  d   eg )Nr  r   )r   with_claimsr   r   r   r   r   _quota_project_id)r   r  new_credentialss      r   test_with_claims TestCredentials.test_with_claims  s    %**666M&&$*:*:*B*BBBB&&$*:*:*B*BBBB''4+;+;+D+DDDD((L88811T5E5E5X5XXXX00D4D4D4V4VVVVr   c                     [         R                  R                  [        R	                  5       U R
                  S SS0S9nUR                  5       u  p#[         R                  " U[        5      nUS   S:X  d   eSU;  d   eg )Nscopezfoo barr   r<   )	r   r   r   r   r   r   	_make_jwtrP   rQ   )r   credr{   r$   r#   s        r   test__make_jwt_without_audience/TestCredentials.test__make_jwt_without_audience  s{    88 %%'LL&	2	 9 
 >>#**U$56w9,,,G###r   c                 *   SnU R                   R                  U5      nUR                  U R                   R                  :X  d   eUR                  U R                   R                  :X  d   eUR                  U R                   R                  :X  d   eUR
                  U R                   R
                  :X  d   eUR                  U R                   R                  :X  d   eUR                  U R                   R                  :X  d   eUR                  U:X  d   eg Nzproject-foo)	r   with_quota_projectr   r   r   r   r   r   r  r   quota_project_idr  s      r   test_with_quota_project'TestCredentials.test_with_quota_project  s    (**==>NO&&$*:*:*B*BBBB&&$*:*:*B*BBBB''4+;+;+D+DDDD((D,<,<,F,FFFF11T5E5E5X5XXXX00D4D4D4W4WWWW004DDDDr   c                     SnU R                   R                  U5      n[        R                  " X[        5      (       d   eg Ns   123r   
sign_bytesr   verify_signaturerQ   r   to_sign	signatures      r   test_sign_bytesTestCredentials.test_sign_bytes  7    $$//8	%%g:KLLLLr   c                 n    [        U R                  R                  [        R                  5      (       d   eg r   r  r   r   r   r   r  s    r   test_signerTestCredentials.test_signer  %    $**115??CCCCr   c                 J    U R                   R                  [        S   :X  d   eg Nr   r   signer_emailr   r  s    r   test_signer_email!TestCredentials.test_signer_email  "    ,,0D^0TTTTr   c                 f    [         R                  " U[        5      nUS   U R                  :X  d   eU$ Nissr   rP   rQ   r   r   r{   r#   s      r   _verify_tokenTestCredentials._verify_token  0    **U$56u~!;!;;;;r   c                     U R                   R                  S 5        U R                   R                  (       d   eU R                   R                  (       a   eg r   )r   refreshr  r  r  s    r   test_refreshTestCredentials.test_refresh  sC      &%%%%##+++++r   c                    U R                   R                  (       a   eU R                   R                  S 5        U R                   R                  (       a   e[        R                  " S5       n[
        R                  " SS9nU R                   R                  U-   Ul        U R                   R                  (       d   e S S S 5        g ! , (       d  f       g = f)Nzgoogle.auth._helpers.utcnowrV   )days)	r   r  rD  r  patchr   r   expiryreturn_value)r   rH   one_days      r   test_expiredTestCredentials.test_expired  s    ##++++  &##++++ZZ56#((a0G#//66@C##++++ 766s   ,AC
Cc                 L   0 nU R                   R                  S 5        U R                   R                  S SSU5        US   nUR                  S5      u  p4UR	                  S5      U R                   R
                  :X  d   eU R                  U5      nUS   U R                  :X  d   eg )NGEThttp://example.com?a=1#3authorization r   r<   )r   rD  before_requestrX   r   r{   r@  r   )r   r   header_valuer$   r{   r#   s         r   test_before_request#TestCredentials.test_before_request  s      &''%3W	
 /%%c* ||G$(8(8(>(>>>>$$U+u~...r   c                     U R                   R                  (       a   eU R                   R                  S SS0 5        U R                   R                  (       d   eg )NrP  rQ  )r   r  rT  r  s    r   test_before_request_refreshes-TestCredentials.test_before_request_refreshes  sH    ##))))''e5OQST%%%%r   r   )__name__
__module____qualname____firstlineno__r   r   r   r   r   rY   fixturer   r   r   r   r   r  r  r  r  r"  r,  r1  r8  r@  rE  rM  rV  rY  __static_attributes__r   r   r   r   r   W  s    9GH(K^^D!
 "
6H 
6H E,
	W
$
EM
DU
,
	,/"&r   r   c                       \ rS rSrSrSrSS0rSr\R                  " SS9S	 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 rS rS rS rSrg)TestOnDemandCredentialsi  r   r   r;   r   NTr   c                 d    [         R                  " UU R                  U R                  SS9U l        g )Nr   )max_cache_size)r   OnDemandCredentialsr   r   r   s     r   r   +TestOnDemandCredentials.credentials_fixture  s-    22&&&&	
r   c                 T   [        [        S5       n[        R                  " U5      nS S S 5        [        R
                  R                  W5      nUR                  R                  US   :X  d   eUR                  US   :X  d   eUR                  US   :X  d   eg ! , (       d  f       Nw= f)Nr   r   r   )r   r   r   r   r   rf  r   r   r   r   r   r   s       r   r   6TestOnDemandCredentials.test_from_service_account_info  s    +S1R99R=D 2 --GGM""))T2B-CCCC""d>&::::##tN';;;; 21s   B
B'c                 h   [         R                  5       n[        R                  R	                  XR
                  U R                  S9nUR                  R                  US   :X  d   eUR                  US   :X  d   eUR                  U R
                  :X  d   eUR                  U R                  :X  d   eg N)r   r   r   r   )r   r   r   rf  r   r   r   r   r   r   r   r   r   s      r   r   ;TestOnDemandCredentials.test_from_service_account_info_args&  s    #((*--GG,,$:P:P H 
 ""))T2B-CCCC""d>&::::##t||333--1G1GGGGr   c                    [         R                  5       n[        R                  R	                  [
        5      nUR                  R                  US   :X  d   eUR                  US   :X  d   eUR                  US   :X  d   eg )Nr   r   )
r   r   r   rf  r   r   r   r   r   r   r   s      r   r   6TestOnDemandCredentials.test_from_service_account_file2  s}    #((*--GG%
 ""))T2B-CCCC""d>&::::##tN';;;;r   c                 r   [         R                  5       n[        R                  R	                  [
        U R                  U R                  S9nUR                  R                  US   :X  d   eUR                  US   :X  d   eUR                  U R                  :X  d   eUR                  U R                  :X  d   eg rk  )r   r   r   rf  r   r   r   r   r   r   r   r   r   r   s      r   r   ;TestOnDemandCredentials.test_from_service_account_file_args=  s    #((*--GG%LL"44 H 
 ""))T2B-CCCC""d>&::::##t||333--1G1GGGGr   c                    U R                   R                  U R                   5      n[        R                  R	                  [
        5      n[        U[        R                  5      (       d   eUR                  R                  UR                  R                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   eg r   )r   r   r   rf  r   r   r  r   r   r   r   r  s      r   r  5TestOnDemandCredentials.test_from_signing_credentialsK  s    ++DDTEUEUV//II 
 *C,C,CDDDD''..-2G2G2N2NNNN''=+@+@@@@((M,B,BBBBr   c                 x    U R                   R                  (       d   eU R                   R                  (       a   eg r   r  r  s    r   r  *TestOnDemandCredentials.test_default_stateV  s/    %%%%##+++++r   c                 F   SS0nU R                   R                  US9nUR                  U R                   R                  :X  d   eUR                  U R                   R                  :X  d   eUR                  U R                   R                  :X  d   eUR
                  U:X  d   eg )Nmeepmoop)r   )r   r  r   r   r   r   )r   
new_claimsr  s      r   r  (TestOnDemandCredentials.test_with_claims\  s    f%
**666T&&$*:*:*B*BBBB&&$*:*:*B*BBBB''4+;+;+D+DDDD11Z???r   c                    SnU R                   R                  U5      nUR                  U R                   R                  :X  d   eUR                  U R                   R                  :X  d   eUR                  U R                   R                  :X  d   eUR
                  U R                   R
                  :X  d   eUR                  U:X  d   eg r  )r   r  r   r   r   r   r  r   s      r   r"  /TestOnDemandCredentials.test_with_quota_projecte  s    (**==>NO&&$*:*:*B*BBBB&&$*:*:*B*BBBB''4+;+;+D+DDDD11T5E5E5X5XXXX004DDDDr   c                     SnU R                   R                  U5      n[        R                  " X[        5      (       d   eg r%  r&  r)  s      r   r,  'TestOnDemandCredentials.test_sign_byteso  r.  r   c                 n    [        U R                  R                  [        R                  5      (       d   eg r   r0  r  s    r   r1  #TestOnDemandCredentials.test_signert  r3  r   c                 J    U R                   R                  [        S   :X  d   eg r5  r6  r  s    r   r8  )TestOnDemandCredentials.test_signer_emailw  r:  r   c                 f    [         R                  " U[        5      nUS   U R                  :X  d   eU$ r<  r>  r?  s      r   r@  %TestOnDemandCredentials._verify_tokenz  rB  r   c                     [         R                  " [        R                  5         U R                  R                  S 5        S S S 5        g ! , (       d  f       g = fr   )rY   rZ   r   RefreshErrorr   rD  r  s    r   rE  $TestOnDemandCredentials.test_refresh  s4    ]]:223$$T* 433s   A


Ac                    0 nU R                   R                  S SSU5        US   R                  S5      u  p#U R                  U5      nUS   S:X  d   eU R                   R                  S SSU5        US   R                  S5      u  p%XS:X  d   eg )NrP  rQ  rR  rS  r<   zhttp://example.comzhttp://example.com?b=2)r   rT  rX   r@  )r   r   r$   r{   r#   	new_tokens         r   rV  +TestOnDemandCredentials.test_before_request  s    ''%3W	
 ?+11#6$$U+u~!5555 	''e5MwW/55c:!!!r   c                    [         R                  R                  [        R                  R                  4U R
                  R                  S'   U R
                  R                  S5      nU[         R                  R                  :w  d   eg )Nrh   )r  r  r{   r   minr   _cache_get_jwt_for_audience)r   r{   s     r   test_expired_token*TestOnDemandCredentials.test_expired_token  sf    MM!!/

+
   66zB+++++r   r[  )r\  r]  r^  r_  r   r   r   r   rY   r`  r   r   r   r   r   r  r  r  r"  r,  r1  r8  r@  rE  rV  r  ra  r   r   r   rc  rc    s    9G(K^^D!
 "
<
H	<H	C,@EM
DU
+"&,r   rc  )>ry   r   r   osr  rY   google.authr   r   r   r   pathrW   dirname__file__DATA_DIRr   r   readr   rQ   rn   r2   rd   r   r   r   r`  r   r%   r,   r/   r3   r6   rK   rS   r_   rb   re   ri   rk   ro   rs   rv   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   objectr   rc  r   r   r   <module>r     s      	      "  77<<16:	"'',,x!1
2D9R	 : 
"'',,x!2
3T:b	 ; 
"'',,x!1
2D9Rwwy : 
"'',,x!7
8$?2779 @ 
"'',,x!8
94@B779 A GGLL3IJ 	
#T*b99R= + ? ?JH D DP  41S	11116I2C
2
+)B66>>@*%	**s&f s&lQ,f Q,] :9 ;: :9 @? A@
 +*sH   	I3JJ=J)9J;7K3
J
J
J&)
J8;
K

K