
    \                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dlm
Z
 ej                  j                  ej                  j                  e      d      Z eej                  j                  ed      d      5 Zej%                         Zddd        eej                  j                  ed	      d      5 Zej%                         Zddd        eej                  j                  ed
      d      5 Zej%                         Zddd        eej                  j                  ed      d      5 Zej%                         Zddd        eej                  j                  ed      d      5 Zej%                         Zddd       ej                  j                  ed      Z eed      5 Z ej2                  e      Zddd       ej6                  d        Zd Zd Zd Zej6                  d        Z d Z!ej6                  d        Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d  Z.d! Z/d" Z0d# Z1d$ Z2d% Z3d& Z4d' Z5d( Z6d) Z7d* Z8d+ Z9d, Z: G d- d.e;      Z< G d/ d0e;      Z=y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   }xY w# 1 sw Y   NxY w# 1 sw Y   xY w# 1 sw Y   xY w)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    t         j                  j                  t        d      S 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                     ddi}t        j                  | |      }t        j                  |      \  }}}}||k(  sJ |dd| j                  dk(  sJ y )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   s\    G$Ljj.G227;FGQl"""U76==IIIIr   c                     t        j                  | i ddi      }t        j                  |      }|dd| j                  ddk(  sJ y )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                     t        j                  | i ddi      }t        j                  |      }|dd| j                  dk(  sJ y )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    t         j                  j                  t        d      S r
   )r   ES256Signerr   EC_PRIVATE_KEY_BYTESr   r   r   es256_signerr3   R   s    (()=sCCr   c                     ddi}t        j                  | |      }t        j                  |      \  }}}}||k(  sJ |dd| j                  dk(  sJ y )Nr   r   r   ES256r   r   )r3   r    r!   r"   r#   r$   s         r   test_encode_basic_es256r6   W   s^    G$Ljj|4G227;FGQl"""U7<;N;NOOOOr   c                      d fd	}|S )Nc                    t        j                  t        j                               }d||dz   dddid}|j                  | xs i        |du r	d _        d }|rt        j                  ||      S t        j                  ||      S )	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   factoryztoken_factory.<locals>.factorya   s    ''(9:)9(
 	v|$ U?!FNF::lGFCC::fgf==r   )NNFr   )r   r3   rI   s   `` r   token_factoryrJ   _   s    >, Nr   c                     t        j                   |        t              }|d   dk(  sJ |d   dk(  sJ |d   d   dk(  sJ y )	Ncertsr<   r9   r?   r:   r@   r;   r   r   decodePUBLIC_CERT_BYTESrJ   r#   s     r   test_decode_validrR   z   sR    jj0ABG5>33336?k))):v&&000r   c                 .    |        }ddj                  |j                  d      dd        z   }t        j                  t              5 }t        j                  |t               d d d        j                  dt        d      z         sJ y # 1 sw Y   )xY w)Ns   M7.   .   rL   z(Header segment should be a JSON object: s   M7)
joinsplitpytestraises
ValueErrorr   rO   rP   matchstr)rJ   r#   excinfos      r   test_decode_header_objectr^      su    oG tyyt!4QR!899G	z	"g

7"34 
#==Ds5zQRRR 
#	"s   BBc                     t        j                  | d      }t        j                  t              5 }t        j
                  |t               d d d        j                  dt        d      z         sJ y # 1 sw Y   )xY w)NiatexprL   z)Payload segment should be a JSON object: s   ImlhdGV4cCI)	r   r   rX   rY   rZ   rO   rP   r[   r\   )r   r#   r]   s      r   test_decode_payload_objectra      sb     jj*G	z	"g

7"34 
#==4s>7JJ   
#	"s   A44A=c                     t        j                   | d      t              }|d   dk(  sJ |d   dk(  sJ |d   d	   d
k(  sJ y )NT)rG   rL   r<   r9   r?   r:   r@   r;   r   )r   rO   EC_PUBLIC_CERT_BYTESrQ   s     r   test_decode_valid_es256rd      sZ    jjt,4HG 5>33336?k))):v&&000r   c                     t        j                   |        t        d      }|d   dk(  sJ |d   dk(  sJ |d   d   dk(  sJ y )	Nr9   rM   audiencer<   r?   r:   r@   r;   r   rN   rQ   s     r   test_decode_valid_with_audiencerh      sZ    jj0;QG 5>33336?k))):v&&000r   c                     t        j                   |        t        ddg      }|d   dk(  sJ |d   dk(  sJ |d   d   d	k(  sJ y )
Nr9   zanother_audience@example.comrf   r<   r?   r:   r@   r;   r   rN   rQ   s     r   $test_decode_valid_with_audience_listrj      s`    jj(*HIG
 5>33336?k))):v&&000r   c                     t        j                   |        t        d      }|d   dk(  sJ |d   dk(  sJ |d   d   d	k(  sJ y )
NF)rM   verifyr<   r9   r?   r:   r@   r;   r   )r   rO   OTHER_CERT_BYTESrQ   s     r   test_decode_valid_unverifiedrn      sT    jj0@OG5>33336?k))):v&&000r   c                      t        j                  t              5 } t        j                  dt
               d d d         j                  d      sJ y # 1 sw Y   xY w)Nz1.2zWrong number of segmentsrX   rY   rZ   r   rO   rP   r[   r]   s    r   .test_decode_bad_token_wrong_number_of_segmentsrr      s@    	z	"g

5+, 
#==4555 
#	"s   AAc                      t        j                  t        t        f      5 } t	        j
                  dt               d d d         j                  d      sJ y # 1 sw Y   xY w)Nz1.2.3z+Incorrect padding|more than a multiple of 4)rX   rY   rZ   	TypeErrorr   rO   rP   r[   rq   s    r    test_decode_bad_token_not_base64ru      sE    	
I.	/7

7-. 
0==GHHH 
0	/s   AA c                  
   dj                  t        j                  d      gdz        } t        j                  t
              5 }t        j                  | t               d d d        j                  d      sJ y # 1 sw Y   xY w)NrT   s   123!   zCan\'t parse segment)
rV   base64urlsafe_b64encoderX   rY   rZ   r   rO   rP   r[   )tokenr]   s     r   test_decode_bad_token_not_jsonr{      sa    IIv//89A=>E	z	"g

5+, 
#==0111 
#	"s   A99Bc                     t        j                  | ddi      }t        j                  t              5 }t        j
                  |t               d d d        j                  d      sJ y # 1 sw Y   xY w)Nr   r   z%Token does not contain required claim)r   r   rX   rY   rZ   rO   rP   r[   )r   rz   r]   s      r   #test_decode_bad_token_no_iat_or_expr}      sU    JJv01E	z	"g

5+, 
#==ABBB 
#	"s   A))A2c           	      L    | dt        j                  t        j                         t        j                  d      z         i      }t        j                  t              5 }t        j                  |t        d       d d d        j                  d      sJ y # 1 sw Y   xY w)Nr=   rU   hoursrF   ;   clock_skew_in_secondszToken used too earlyr   rB   rC   datetime	timedeltarX   rY   rZ   r   rO   rP   r[   rJ   rz   r]   s      r   test_decode_bad_token_too_earlyr      s}    8,,!H$6$6Q$??
E 
z	"g

5+2F 
#==0111 
#	"   !BB#c           	      L    | dt        j                  t        j                         t        j                  d      z
        i      }t        j                  t              5 }t        j                  |t        d       d d d        j                  d      sJ y # 1 sw Y   xY w)Nr>   rU   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           	      @    | t        j                  t        j                         t        j                  d      z         t        j                  t        j                         t        j                  d      z
        d      }t        j                  |t               y )NrU   secondsr>   r=   r   r   rB   rC   r   r   r   rO   rP   rJ   rz   s     r   &test_decode_success_with_no_clock_skewr      st    ,,!H$6$6q$AA ,,!H$6$6q$AA	
	E JJu'(r   c           	      D    | t        j                  t        j                         t        j                  d      z         t        j                  t        j                         t        j                  d      z
        d      }t        j                  |t        d       y )N   r   r   r   rU   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                      |        }d}t        j                  t              5 }t        j                  |t
        |       d d d        j                  d      sJ y # 1 sw Y   xY w)Naudience2@example.comrg   Token has wrong audiencerp   rJ   rz   rg   r]   s       r   $test_decode_bad_token_wrong_audiencer     sN    OE&H	z	"g

5+h? 
#==4555 
#	"s   AA%c                      |        }ddg}t        j                  t              5 }t        j                  |t
        |       d d d        j                  d      sJ y # 1 sw Y   xY w)Nr   zaudience3@example.comr   r   rp   r   s       r   )test_decode_bad_token_wrong_audience_listr     sT    OE')@AH	z	"g

5+h? 
#==4555 
#	"s   AA'c                     t        j                  t              5 }t        j                   |        t
               d d d        j                  d      sJ y # 1 sw Y   xY w)N Could not verify token signature)rX   rY   rZ   r   rO   rm   r[   )rJ   r]   s     r   test_decode_wrong_certr     sB    	z	"g

=?$45 
#==<=== 
#	"s    AAc                     t         t        d}t        j                  t              5 }t        j                   |        |       d d d        j                  d      sJ y # 1 sw Y   xY w)N)r   2r   )rm   rP   rX   rY   rZ   r   rO   r[   rJ   rM   r]   s      r   test_decode_multicert_bad_certr   $  sL    "):;E	z	"g

=?E* 
#==<=== 
#	"s   AA(c                     dt         i}t        j                  t              5 }t	        j
                   |        |       d d d        j                  d      sJ y # 1 sw Y   xY w)Nr   z"Certificate for key id 1 not found)rP   rX   rY   rZ   r   rO   r[   r   s      r   test_decode_no_certr   +  sL    #$E	z	"g

=?E* 
#==>??? 
#	"s   AA#c                 f     | d      }dt         i}t        j                  ||      }|d   dk(  sJ y )NFrA   r   r?   r:   )rP   r   rO   rJ   rz   rM   r#   s       r   test_decode_no_key_idr   2  s9    'E#$Ejj&G6?k)))r   c                     t        j                  ddd      } dj                  t        d | ddg            }t	        j
                  t              5 }t        j                  |       d d d        j                  d      sJ y # 1 sw Y   xY w)Nr   fakealgr   r   rT   c                 J    t        j                  | j                  d            S Nutf-8rx   	b64encoder   segs    r   <lambda>z)test_decode_unknown_alg.<locals>.<lambda><      ((G)<=r   {}sig)
jsondumpsrV   maprX   rY   rZ   r   rO   r[   )headersrz   r]   s      r   test_decode_unknown_algr   9  sr    jj$
;<GII=PV?WXE 
z	"g

5 
#==$$$ 
#	"s   BBc                 ^   | j                  t        j                  d       t        j                  ddd      }dj                  t        d |ddg            }t        j                  t              5 }t        j                  |       d d d        j                  d      sJ y # 1 sw Y   xY w)	Nr5   r   r   rT   c                 J    t        j                  | j                  d            S r   r   r   s    r   r   z5test_decode_missing_crytography_alg.<locals>.<lambda>H  r   r   r   r   cryptography)delitemr   _ALGORITHM_TO_VERIFIER_CLASSr   r   rV   r   rX   rY   rZ   rO   r[   )monkeypatchr   rz   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   1B##B,c                 p     | d      }t         t        d}t        j                  ||      }|d   dk(  sJ y )N3rA   )r   r   r?   r:   )rm   rP   r   rO   r   s       r   test_roundtrip_explicit_key_idr   P  s9    %E"):;Ejj&G6?k)))r   c                       e Zd ZdZdZdZddiZdZ ej                  d      d	        Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestCredentialsservice-account@example.comsubjectrg   r;   r   NTautousec                 z    t        j                  || j                  | j                  | j                        | _        y N)r   CredentialsSERVICE_ACCOUNT_EMAILAUDIENCEcredentialsselfr   s     r   credentials_fixturez#TestCredentials.credentials_fixture^  s/    ??&&&&MM	
r   c                    t        t        d      5 }t        j                  |      }d d d        t        j
                  j                  | j                        }|j                  j                  |d   k(  sJ |j                  |d   k(  sJ |j                  |d   k(  sJ |j                  | j                  k(  sJ y # 1 sw Y   xY w)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_infoz.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                    t         j                         }t        j                  j	                  || j
                  | j                  | j                        }|j                  j                  |d   k(  sJ |j                  |d   k(  sJ |j                  | j
                  k(  sJ |j                  | j                  k(  sJ |j                  | j                  k(  sJ y Nr   rg   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_argsz3TestCredentials.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                 L   t         j                         }t        j                  j	                  t
        | j                        }|j                  j                  |d   k(  sJ |j                  |d   k(  sJ |j                  |d   k(  sJ |j                  | j                  k(  sJ y )Nr   r   r   )r   r   r   r   from_service_account_filer   r   r   r   r   r   r   r   s      r   test_from_service_account_filez.TestCredentials.test_from_service_account_file  s    #((*oo??% @ 
 ""))T2B-CCCC""d>&::::##tN';;;;$$555r   c                    t         j                         }t        j                  j	                  t
        | j                  | j                  | j                        }|j                  j                  |d   k(  sJ |j                  |d   k(  sJ |j                  | j                  k(  sJ |j                  | j                  k(  sJ |j                  | j                  k(  sJ y r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s      r   #test_from_service_account_file_argsz3TestCredentials.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                 4   | j                   j                  | j                   t        j                  j                        }t
        j                  j                  t        t        j                  j                        }t        |t
        j                        sJ |j                  j                  |j                  j                  k(  sJ |j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  |j                  k(  sJ y )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_credentialsz-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                 d    | j                   j                  rJ | j                   j                  rJ y r   r   validexpiredr   s    r   test_default_statez"TestCredentials.test_default_state  s/    ##))))##+++++r   c                    d}| j                   j                  |      }|j                  | j                   j                  k(  sJ |j                  | j                   j                  k(  sJ |j                  | j                   j                  k(  sJ |j
                  |k(  sJ |j                  | j                   j                  k(  sJ |j                  | j                   j                  k(  sJ y )Nr   r   )r   with_claimsr   r   r   r   r   _quota_project_id)r   r   new_credentialss      r   test_with_claimsz 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                     t         j                  j                  t        j	                         | j
                  d ddi      }|j                         \  }}t        j                  |t              }|d   dk(  sJ d|vsJ y )Nscopezfoo barr   r<   )	r   r   r   r   r   r   	_make_jwtrO   rP   )r   credrz   r$   r#   s        r   test__make_jwt_without_audiencez/TestCredentials.test__make_jwt_without_audience  s}    88 %%'LL&	2	 9 
 >>#q**U$56w9,,,G###r   c                    d}| j                   j                  |      }|j                  | j                   j                  k(  sJ |j                  | j                   j                  k(  sJ |j                  | j                   j                  k(  sJ |j
                  | j                   j
                  k(  sJ |j                  | j                   j                  k(  sJ |j                  | j                   j                  k(  sJ |j                  |k(  sJ y Nzproject-foo)	r   with_quota_projectr   r   r   r   r   r   r	  r   quota_project_idr
  s      r   test_with_quota_projectz'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                 x    d}| j                   j                  |      }t        j                  ||t              sJ y Ns   123r   
sign_bytesr   verify_signaturerP   r   to_sign	signatures      r   test_sign_byteszTestCredentials.test_sign_bytes  6    $$//8	%%gy:KLLLr   c                 d    t        | j                  j                  t        j                        sJ y r   r   r   r   r   r   r  s    r   test_signerzTestCredentials.test_signer  "    $**115??CCCr   c                 H    | j                   j                  t        d   k(  sJ y Nr   r   signer_emailr   r  s    r   test_signer_emailz!TestCredentials.test_signer_email  "    ,,0D^0TTTTr   c                 b    t        j                  |t              }|d   | j                  k(  sJ |S Nissr   rO   rP   r   r   rz   r#   s      r   _verify_tokenzTestCredentials._verify_token  0    **U$56u~!;!;;;;r   c                     | j                   j                  d        | j                   j                  sJ | j                   j                  rJ y r   )r   refreshr  r  r  s    r   test_refreshzTestCredentials.test_refresh  sC      &%%%%##+++++r   c                    | j                   j                  rJ | j                   j                  d        | j                   j                  rJ t        j                  d      5 }t        j                  d      }| j                   j                  |z   |_        | j                   j                  sJ 	 d d d        y # 1 sw Y   y xY w)Nzgoogle.auth._helpers.utcnowrU   )days)	r   r  r3  r   patchr   r   expiryreturn_value)r   rH   one_days      r   test_expiredzTestCredentials.test_expired  s    ##++++  &##++++ZZ56#((a0G#//66@C##++++ 766s   !AB88Cc                 J   i }| j                   j                  d        | j                   j                  d dd|       |d   }|j                  d      \  }}|j	                  d      | j                   j
                  k(  sJ | j                  |      }|d   | j                  k(  sJ y )NGEThttp://example.com?a=1#3authorization r   r<   )r   r3  before_requestrW   r   rz   r0  r   )r   r   header_valuer$   rz   r#   s         r   test_before_requestz#TestCredentials.test_before_request  s      &''%3W	
 /%%c*5 ||G$(8(8(>(>>>>$$U+u~...r   c                     | j                   j                  rJ | j                   j                  d ddi        | j                   j                  sJ y )Nr=  r>  )r   r  rA  r  s    r   test_before_request_refreshesz-TestCredentials.test_before_request_refreshes  sH    ##))))''e5OQST%%%%r   )__name__
__module____qualname__r   r   r   r   r   rX   fixturer   r   r   r   r   r   r  r  r  r  r  r#  r)  r0  r4  r;  rC  rE  r   r   r   r   r   W  s    9GH(KV^^D!
 "
6H 
6H E,
	W
$
EM
DU
,
	,/"&r   r   c                       e Zd ZdZdZddiZdZ ej                  d      d        Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestOnDemandCredentialsr   r   r;   r   NTr   c                 h    t        j                  || j                  | j                  d      | _        y )Nr   )max_cache_size)r   OnDemandCredentialsr   r   r   s     r   r   z+TestOnDemandCredentials.credentials_fixture  s-    22&&&&	
r   c                 B   t        t        d      5 }t        j                  |      }d d d        t        j
                  j                        }|j                  j                  |d   k(  sJ |j                  |d   k(  sJ |j                  |d   k(  sJ y # 1 sw Y   oxY w)Nr   r   r   )r   r   r   r   r   rN  r   r   r   r   r   r   s       r   r   z6TestOnDemandCredentials.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   t         j                         }t        j                  j	                  || j
                  | j                        }|j                  j                  |d   k(  sJ |j                  |d   k(  sJ |j                  | j
                  k(  sJ |j                  | j                  k(  sJ y N)r   r   r   r   )r   r   r   rN  r   r   r   r   r   r   r   r   r   s      r   r   z;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                     t         j                         }t        j                  j	                  t
              }|j                  j                  |d   k(  sJ |j                  |d   k(  sJ |j                  |d   k(  sJ y )Nr   r   )
r   r   r   rN  r   r   r   r   r   r   r   s      r   r   z6TestOnDemandCredentials.test_from_service_account_file2  s}    #((*--GG%
 ""))T2B-CCCC""d>&::::##tN';;;;r   c                 p   t         j                         }t        j                  j	                  t
        | j                  | j                        }|j                  j                  |d   k(  sJ |j                  |d   k(  sJ |j                  | j                  k(  sJ |j                  | j                  k(  sJ y rQ  )r   r   r   rN  r   r   r   r   r   r   r   r   r   r   s      r   r   z;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                    | j                   j                  | j                         }t        j                  j	                  t
              }t        |t        j                        sJ |j                  j                  |j                  j                  k(  sJ |j                  |j                  k(  sJ |j                  |j                  k(  sJ y r   )r   r   r   rN  r   r   r   r   r   r   r   r   s      r   r   z5TestOnDemandCredentials.test_from_signing_credentialsK  s    ++DDTEUEUV//II 
 *C,C,CDDD''..-2G2G2N2NNNN''=+@+@@@@((M,B,BBBBr   c                 d    | j                   j                  sJ | j                   j                  rJ y r   r  r  s    r   r  z*TestOnDemandCredentials.test_default_stateV  s/    %%%%##+++++r   c                 D   ddi}| j                   j                  |      }|j                  | j                   j                  k(  sJ |j                  | j                   j                  k(  sJ |j                  | j                   j                  k(  sJ |j
                  |k(  sJ y )Nmeepmoop)r   )r   r  r   r   r   r   )r   
new_claimsr
  s      r   r  z(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                    d}| j                   j                  |      }|j                  | j                   j                  k(  sJ |j                  | j                   j                  k(  sJ |j                  | j                   j                  k(  sJ |j
                  | j                   j
                  k(  sJ |j                  |k(  sJ y r  )r   r  r   r   r   r   r	  r  s      r   r  z/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                 x    d}| j                   j                  |      }t        j                  ||t              sJ y r  r  r  s      r   r  z'TestOnDemandCredentials.test_sign_byteso  r   r   c                 d    t        | j                  j                  t        j                        sJ y r   r"  r  s    r   r#  z#TestOnDemandCredentials.test_signert  r$  r   c                 H    | j                   j                  t        d   k(  sJ y r&  r'  r  s    r   r)  z)TestOnDemandCredentials.test_signer_emailw  r*  r   c                 b    t        j                  |t              }|d   | j                  k(  sJ |S r,  r.  r/  s      r   r0  z%TestOnDemandCredentials._verify_tokenz  r1  r   c                     t        j                  t        j                        5  | j                  j                  d        d d d        y # 1 sw Y   y xY wr   )rX   rY   r   RefreshErrorr   r3  r  s    r   r4  z$TestOnDemandCredentials.test_refresh  s4    ]]:223$$T* 433s   A		Ac                     i }| j                   j                  d dd|       |d   j                  d      \  }}| j                  |      }|d   dk(  sJ | j                   j                  d dd|       |d   j                  d      \  }}||k(  sJ y )Nr=  r>  r?  r@  r<   zhttp://example.comzhttp://example.com?b=2)r   rA  rW   r0  )r   r   r$   rz   r#   	new_tokens         r   rC  z+TestOnDemandCredentials.test_before_request  s    ''%3W	
 ?+11#65$$U+u~!5555 	''e5MwW/55c:9E!!!r   c                    t         j                  j                  t        j                  j                  f| j
                  j                  d<   | j
                  j                  d      }|t         j                  j                  k7  sJ y )Nrg   )r   r   rz   r   minr   _cache_get_jwt_for_audience)r   rz   s     r   test_expired_tokenz*TestOnDemandCredentials.test_expired_token  sf    MM!!/

+
   66zB+++++r   )rF  rG  rH  r   r   r   r   rX   rI  r   r   r   r   r   r   r  r  r  r  r#  r)  r0  r4  rC  rg  r   r   r   rK  rK    s    9G(KV^^D!
 "
<
H	<H	C,@EM
DU
+"&,r   rK  )>rx   r   r   osr   rX   google.authr   r   r   r   pathrV   dirname__file__DATA_DIRr   r   readr   rP   rm   r2   rc   r   r   r   rI  r   r%   r,   r/   r3   r6   rJ   rR   r^   ra   rd   rh   rj   rn   rr   ru   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   objectr   rK  r   r   r   <module>rp     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$499R= + ? ?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J43I= J
JJ$'J14J=