
    j'                        S 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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SKJr  SSKJr  SSKrSSKJr  SSKrSSKJrJr  \" \" SSS5      5        SSKJ r    SSK!J"r"  Sr# SSK%r%Sr&Sr'     SS jr( " S S\RR                  5      r*g! \$ a    Sr# N3f = f! \$ a    Sr& N:f = f)z"Tests for gcs_json_credentials.py.    )absolute_import)print_function)division)unicode_literals)GceAssertionCredentials)reauth_creds)gcs_json_api)gcs_json_credentials)	CredTypes)CommandException)testcase)SetBotoConfigForTest)unittest)WrappedCredentialsN)ServiceAccountCredentials)add_moveMovedModulemockzunittest.mock)r   )load_pkcs12TFzThis is the error messagec                     / nU (       a/  UR                  SSU S   45        UR                  SSU S   45        OUR                  S5        UR                  SSU4SS	U4SS
U4SSU4/5        U$ )NCredentialsgs_service_key_filekeyfilegs_service_client_id	client_id)r   r   Ngs_oauth2_refresh_tokenGoogleComputeservice_accountgs_external_account_file(gs_external_account_authorized_user_file)appendextend)service_account_credsuser_account_creds	gce_credsexternal_account_creds&external_account_authorized_user_credsconfigs         8platform/gsutil/gslib/tests/test_gcs_json_credentials.pygetBotoCredentialsConfigr*   8   s     &
MM="7(35 6
MM="8(57 8 MM>?---!:<NO!#4i@!;(*!K8:	; < 
-    c                       \ rS rSrSr\R                  R                  \R                  S\R                  " \R                  " 5       SSSS/S9S9S	 5       rS
 r\R                  " \S5      \R                  R                  \R                  S\" \5      S9S 5       5       rS r\R                  R                  \R*                  S\" \5      S9S 5       r\R                  R                  \R.                  SSS9S 5       r\R                  R                  \S\" \5      S9S 5       rS r\R                  R                  \S\" \5      S9S 5       rS r\R                  R                  \S\" \5      S9S 5       rS r Sr!g)TestGcsJsonCredentialsP   z5Test logic for interacting with GCS JSON Credentials.%from_service_account_pkcs12_keystring123ab)	token_uriservice_account_emailscopes)return_valuec                    [         R                  " SS5      nU R                  US9n[        [	        USS.S95         U R                  [        R                  " 5       5        [        R                  " S S S S 5      nU R                  UR                  R                  S5        U R                  UR                  [        R                  5        S S S 5        g ! , (       d  f       g = f)Ngslibtests/test_data/test.p12contents?r   r   r#   r0   )pkgutilget_dataCreateTempFiler   r*   
assertTruer
   _HasOauth2ServiceAccountCredsr	   
GcsJsonApiassertEqualcredentialsr4   assertIsInstanceP12Credentials)self_r;   tmpfileclients        r)   "testOauth2ServiceAccountCredential9TestGcsJsonCredentials.testOauth2ServiceAccountCredentialS   s     )CDH!!8!4G	 8
 	

 oo*HHJK&&tT4>f
v))??G
F..0D0S0ST
 
 
s   BC
C!c                     [         R                  " SS5      nU R                  US9nU R                  [        5       n[
        R                  " U5        S S S 5        g ! , (       d  f       g = f)Nr8   r9   r:   )r?   r@   rA   assertRaises	Exceptionr
   CreateP12ServiceAccount)rI   r;   rK   excs       r)   8testP12CredentialsthrowsErrorIfProvidedWithMissingFieldsOTestGcsJsonCredentials.testP12CredentialsthrowsErrorIfProvidedWithMissingFieldsc   sR    )CDH!!8!4G			9	%227; 
&	%	%s   A
A*z%p12credentials requires cryptography.__init__)side_effectc           	      d   [         R                  " SS5      nU R                  US9n[        [	        USS.S95         U R                  5        nU R                  [        5       n[        R                  " S [        R                  " 5       S S 5        S S S 5        U R                  [        [        WR                  5      5        U R                  [         R"                  UR$                  S   5        S S S 5        S S S 5        g ! , (       d  f       Nu= f! , (       d  f       N(= f! , (       d  f       g = f)Nr8   r9   r:   r<   r=   r>   r   )r?   r@   rA   r   r*   
assertLogsrP   rQ   r	   rD   logging	getLoggerassertInERROR_MESSAGEstr	exceptionr   OAUTH2_SERVICE_ACCOUNToutputrI   rJ   r;   rK   loggerrS   s         r)   testOauth2ServiceAccountFailure6TestGcsJsonCredentials.testOauth2ServiceAccountFailurei   s    
 )CDH!!8!4G	 8
 	

 ??y)S

!
!$(9(9(;T4
H *mS%78i66a8HI	 
 
 *) 
 
s<   D!D#-C?AD.D!?
D	D
D	D!!
D/c                 *   [        [        SS95         U R                  [        R                  " 5       5        [
        R                  " S S S S 5      nU R                  UR                  [        R                  5        S S S 5        g ! , (       d  f       g = f)Nr<   r$   )r   r*   rB   r
   _HasOauth2UserAccountCredsr	   rD   rG   rF   r   Oauth2WithReauthCredentials)rI   rL   s     r)   testOauth2UserCredential/TestGcsJsonCredentials.testOauth2UserCredential{   si    	6#N	O
oo*EEGH&&tT4>f
F..(DDF 
P	O	Os   A(B
Bc           	         [        [        SS95         U R                  5        nU R                  [        5       n[
        R                  " S [        R                  " 5       S S 5        S S S 5        U R                  [        [        WR                  5      5        U R                  [        R                  UR                  S   5        S S S 5        S S S 5        g ! , (       d  f       Nu= f! , (       d  f       N(= f! , (       d  f       g = f)Nr<   rg   r   )r   r*   rY   rP   rQ   r	   rD   rZ   r[   r\   r]   r^   r_   r   OAUTH2_USER_ACCOUNTra   rI   rJ   rc   rS   s       r)   testOauth2UserFailure,TestGcsJsonCredentials.testOauth2UserFailure   s     
6#N	O??y)S

!
!$(9(9(;T4
H *mS%78i33V]]15EF	  
P	O))  
P	O:   C8C'-C'AC'C8
C$ C''
C5	1C88
Dr   T)autospecc                 "  ^ U4S jnS TR                   l        STR                   l        UTR                   l        [	        [        SS95         U R                  [        R                  " 5       5        [        R                  " S S S S 5      nU R                  UR                  [        5        U R                  UR                  R                  S5        U R                  UR                  R                  S 5        S S S 5        g ! , (       d  f       g = f)Nc                 (   > U TR                   l        g )N)r6   store)ru   mock_credentialss    r)   	set_store;TestGcsJsonCredentials.testGCECredential.<locals>.set_store   s    ,1##)r+   rEfrEshtOkEnr<   r%   )r6   r   refresh_tokenrw   r   r*   rB   r
   _HasGceCredsr	   rD   rG   rF   r   rE   assertIs)rI   rv   rw   rL   s    `  r)   testGCECredential(TestGcsJsonCredentials.testGCECredential   s    
2 /3!!+2@!!/.7!!+	6E	F
oo*779:&&tT4>f
F..0GH
v))77H
mmF&&00$7 
G	F	Fs   B*D  
Dc           	         [        [        SS95         U R                  5        nU R                  [        5       n[
        R                  " S [        R                  " 5       S S 5        S S S 5        U R                  [        [        WR                  5      5        U R                  [        R                  UR                  S   5        S S S 5        S S S 5        g ! , (       d  f       Nu= f! , (       d  f       N(= f! , (       d  f       g = f)Nr<   rz   r   )r   r*   rY   rP   rQ   r	   rD   rZ   r[   r\   r]   r^   r_   r   GCEra   rn   s       r)   testGCECredentialFailure/TestGcsJsonCredentials.testGCECredentialFailure   s     
6E	F??y)S

!
!$(9(9(;T4
H *mS%78immV]]1%56	  
G	F))  
G	Frq   c                    [         R                  " SS5      nU R                  US9n[        [	        US95         [
        R                  " S S S S 5      nU R                  UR                  [        5        S S S 5        g ! , (       d  f       g = f)Nr8   6tests/test_data/test_external_account_credentials.jsonr:   r&   
r?   r@   rA   r   r*   r	   rD   rG   rF   r   rI   r;   rK   rL   s       r)   testExternalAccountCredential4TestGcsJsonCredentials.testExternalAccountCredential   s}    IKH!!8!4G	 @
B&&tT4>f
F..0BC
B 
B 
B   :A<<
B
c           	      ^   [         R                  " SS5      nU R                  US9n[        [	        US95         U R                  5        nU R                  [        5       n[        R                  " S [        R                  " 5       S S 5        S S S 5        U R                  [        [        WR                  5      5        U R                  [         R"                  UR$                  S   5        S S S 5        S S S 5        g ! , (       d  f       Nu= f! , (       d  f       N(= f! , (       d  f       g = f)Nr8   r   r:   r   r   )r?   r@   rA   r   r*   rY   rP   rQ   r	   rD   rZ   r[   r\   r]   r^   r_   r   EXTERNAL_ACCOUNTra   rb   s         r)   testExternalAccountFailure1TestGcsJsonCredentials.testExternalAccountFailure   s     IKH!!8!4G	 @
B??y)S

!
!$(9(9(;T4
H *mS%78i00&--2BC	 
B 
B *) 
B 
B<   D
D -C<AD+D<
D
D
D	D
D,c                    [         R                  " SS5      nU R                  US9n[        [	        US95         [
        R                  " S S S S 5      nU R                  UR                  [        5        S S S 5        g ! , (       d  f       g = f)Nr8   Ftests/test_data/test_external_account_authorized_user_credentials.jsonr:   r'   r   r   s       r)   +testExternalAccountAuthorizedUserCredentialBTestGcsJsonCredentials.testExternalAccountAuthorizedUserCredential   s    PH !!8!4G	 3:	<
= &&tT4>f
F..0BC	
= 
= 
=r   c           	      ^   [         R                  " SS5      nU R                  US9n[        [	        US95         U R                  5        nU R                  [        5       n[        R                  " S [        R                  " 5       S S 5        S S S 5        U R                  [        [        WR                  5      5        U R                  [         R"                  UR$                  S   5        S S S 5        S S S 5        g ! , (       d  f       Nu= f! , (       d  f       N(= f! , (       d  f       g = f)Nr8   r   r:   r   r   )r?   r@   rA   r   r*   rY   rP   rQ   r	   rD   rZ   r[   r\   r]   r^   r_   r    EXTERNAL_ACCOUNT_AUTHORIZED_USERra   rb   s         r)   (testExternalAccountAuthorizedUserFailure?TestGcsJsonCredentials.testExternalAccountAuthorizedUserFailure   s     PH !!8!4G	 3:	<
= ??y)S

!
!$(9(9(;T4
H *mS%78i@@mmA&	(	 
= 
= *) 
= 
=r   c                     [        [        SSSS.S95         U R                  [        5         [        R
                  " S S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr<   r=   )r$   r#   )r   r*   rP   r   r	   rD   )rI   s    r)   /testOauth2ServiceAccountAndOauth2UserCredentialFTestGcsJsonCredentials.testOauth2ServiceAccountAndOauth2UserCredential   sg    	 C03258#	$
% -.dD$7 /
% 
% /.
% 
%s"   A)AA)
A&	"A))
A7 N)"__name__
__module____qualname____firstlineno____doc__r   patchobjectr
   rH   MockrM   rT   r   
skipUnless
HAS_CRYPTO
ValueErrorr]   rd   rj   r   ri   ro   credentials_libr~   r   r   r   r   r   r   r   r   __static_attributes__r   r+   r)   r-   r-   P   s   =::)88<"6"E"Ediik]bz  JM  OR  IS  #T  UUUU< z#JK::)88!+M!:  <J< LJF ::\==!+M!:  <G<G ::)99."  $8$8 ::,!+M!:  <7<7D ::'!+M!:  <
D<
D
D ::'!+M!:  <(<( 8r+   r-   )NNNNN)+r   
__future__r   r   r   r   apitools.base.pyr   google_reauthr   r8   r	   r
   gslib.cred_typesr   gslib.exceptionr   gslib.testsr   gslib.tests.utilr   r   gslib.utils.wrapped_credentialsr   rZ   oauth2client.service_accountr   r?   sixr   r   	six.movesr   OpenSSL.cryptor   HAS_OPENSSLImportErrorcryptographyr   r]   r*   GsUtilUnitTestCaser-   r   r+   r)   <module>r      s    ) & %  ' 4 &  & & ,   1 % >  B  % VV_	5 6 (+* , +/0Y8X88 Y8I  +  *s$   B5 C 5C ?C CC