
                             d dl Z d dlZd dlm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 d dlZd
dZd Z G d d	e      Zy)    N)_helpers)
exceptions)iam)	transportc                    t        j                  t        j                  d      }| |_        |)t        j                  |      j                  d      |_        t        j                  t        j                        }||_
        |S )NTinstanceutf-8)mockcreate_autospecr   ResponsestatusjsondumpsencodedataRequestreturn_value)r   r   responserequests       Hplatform/gsutil/third_party/google-auth-library-python/tests/test_iam.pymake_requestr      se    ##I$6$6FHHO

4(//8""9#4#45G#GN    c                  p      G  fddt         j                  j                  j                                  S )Nc                   .     e Zd Z fdZd Zd Z xZS ))make_credentials.<locals>.CredentialsImplc                     t         |           d| _        t        j                  j                  t
        j                  z   | _        y )Ntoken)super__init__r   datetimeminr   REFRESH_THRESHOLDexpiry)selfCredentialsImpl	__class__s    r   r    z2make_credentials.<locals>.CredentialsImpl.__init__,   s5    /413 DJ"++//(2L2LLDKr   c                      y N )r%   r   s     r   refreshz1make_credentials.<locals>.CredentialsImpl.refresh2   s    r   c                     t               r)   )NotImplementedError)r%   quota_project_ids     r   with_quota_projectz<make_credentials.<locals>.CredentialsImpl.with_quota_project5   s    %''r   )__name__
__module____qualname__r    r+   r/   __classcell__)r'   r&   s   @r   r&   r   +   s    	M		(r   r&   )googleauthcredentialsCredentials)r&   s   @r   make_credentialsr8   *   s*    (&++11== ( r   c                   X    e Zd Zd Zd Zd Zd Z ej                  dd      d        Z	y)	
TestSignerc                    t         j                  j                  }t        j                  t        j
                  j                  j                  d      }t        j                  ||t         j                  j                        }|j                  t         j                  j                  k(  sJ |j                  |k(  sJ |j                  t         j                  j                  k(  sJ y )NTr   )r   sentinelr   r   r4   r5   r6   r7   r   Signerservice_account_email_request_credentials_service_account_emailr%   r   r6   signers       r   test_constructorzTestSigner.test_constructor<   s    --''**KK##//$
 G[$--2U2UV$--"7"7777""k111,,0S0SSSSr   c                     t        j                  t        j                  j                  t        j                  j
                  t        j                  j                        }|j                  J y r)   )r   r=   r   r<   r   r6   r>   key_id)r%   rC   s     r   test_key_idzTestSigner.test_key_idH   sI    MM!!MM%%MM//
 }}$$$r   c                    d}t        j                  |      j                  d      }t        t        j
                  d|i      }t               }t        j                  ||t        j                  j                        }|j                  d      }||k(  sJ |j                  d   }|d   d   d	k(  sJ |j                  dk(   y )
Ns   DEADBEEFr
   
signedBlob)r   123   headerszContent-Typezapplication/json)base64	b64encodedecoder   http_clientOKr8   r   r=   r   r<   r>   sign	call_args
call_count)r%   	signatureencoded_signaturer   r6   rC   returned_signaturekwargss           r   test_sign_byteszTestSigner.test_sign_bytesQ   s    	",,Y7>>wG{~~\CT4UV&(G[$--2U2UV#[[/!Y...""1%i 04FFFFar   c                 X   t        t        j                        }t               }t	        j
                  ||t        j                  j                        }t        j                  t        j                        5  |j                  d       d d d        |j                  dk(   y # 1 sw Y   xY w)NrJ   rK   )r   rP   UNAUTHORIZEDr8   r   r=   r   r<   r>   pytestraisesr   TransportErrorrR   rT   rB   s       r   test_sign_bytes_failurez"TestSigner.test_sign_bytes_failure`   sp    {778&(G[$--2U2UV]]:445KK 6a 65   6B  B)z
time.sleepN)r   c                 X   t        t        j                        }t               }t	        j
                  ||t        j                  j                        }t        j                  t        j                        5  |j                  d       d d d        |j                  dk(   y # 1 sw Y   xY w)NrJ      )r   rP   INTERNAL_SERVER_ERRORr8   r   r=   r   r<   r>   r\   r]   r   r^   rR   rT   )r%   	mock_timer   r6   rC   s        r   !test_sign_bytes_retryable_failurez,TestSigner.test_sign_bytes_retryable_failurej   sp    {@@A&(G[$--2U2UV]]:445KK 6a 65r`   )
r0   r1   r2   rD   rG   rY   r_   r   patchre   r*   r   r   r:   r:   ;   s8    
T%   TZZ40  1 r   r:   r)   )rM   r!   http.clientclientrP   r   r   r\   google.authr   r   r   r   google.auth.credentialsr4   r   r8   objectr:   r*   r   r   <module>rl      s>      !      "  ! 	"8  8 r   