
                             S SK r S SKrS SKJ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rS
S jrS r " S S	\5      rg)    N)_helpers)
exceptions)iam)	transportc                    [         R                  " [        R                  SS9nXl        Ub*  [
        R                  " U5      R                  S5      Ul        [         R                  " [        R                  5      nX#l
        U$ )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      sa    ##I$6$6FHO

4(//8""9#4#45G#N    c                  r   ^   " U 4S jS[         R                  R                  R                  5      m T " 5       $ )Nc                   8   >^  \ rS rSrUU 4S jrS rS rSrU =r$ ))make_credentials.<locals>.CredentialsImpl+   c                    > [         TU ]  5         SU l        [        R                  R                  [
        R                  -   U l        g )Ntoken)super__init__r   datetimeminr   REFRESH_THRESHOLDexpiry)selfCredentialsImpl	__class__s    r   r!   2make_credentials.<locals>.CredentialsImpl.__init__,   s5    /413 DJ"++//(2L2LLDKr   c                     g N )r&   r   s     r   refresh1make_credentials.<locals>.CredentialsImpl.refresh2   s    r   c                     [        5       er+   )NotImplementedError)r&   quota_project_ids     r   with_quota_project<make_credentials.<locals>.CredentialsImpl.with_quota_project5   s    %''r   )r%   r   )	__name__
__module____qualname____firstlineno__r!   r-   r2   __static_attributes____classcell__)r(   r'   s   @r   r'   r   +   s    	M		( 	(r   r'   )googleauthcredentialsCredentials)r'   s   @r   make_credentialsr>   *   s*    (&++11== ( r   c                   Z    \ rS rSrS rS rS rS r\R                  " SSS9S	 5       r
S
rg)
TestSigner;   c                    [         R                  R                  n[         R                  " [        R
                  R                  R                  SS9n[        R                  " X[         R                  R                  5      nUR                  [         R                  R                  :X  d   eUR                  U:X  d   eUR                  [         R                  R                  :X  d   eg )NTr   )r   sentinelr   r   r:   r;   r<   r=   r   Signerservice_account_email_request_credentials_service_account_emailr&   r   r<   signers       r   test_constructorTestSigner.test_constructor<   s    --''**KK##//$
 G$--2U2UV$--"7"7777""k111,,0S0SSSSr   c                     [         R                  " [        R                  R                  [        R                  R
                  [        R                  R                  5      nUR                  b   eg r+   )r   rD   r   rC   r   r<   rE   key_id)r&   rJ   s     r   test_key_idTestSigner.test_key_idH   sI    MM!!MM%%MM//
 }}$$$r   c                    Sn[         R                  " U5      R                  S5      n[        [        R
                  SU0S9n[        5       n[        R                  " X4[        R                  R                  5      nUR                  S5      nXa:X  d   eUR                  S   nUS   S   S	:X  d   eUR                  S:H    g )
Ns   DEADBEEFr
   
signedBlob)r   123   headerszContent-Typezapplication/json)base64	b64encodedecoder   http_clientOKr>   r   rD   r   rC   rE   sign	call_args
call_count)r&   	signatureencoded_signaturer   r<   rJ   returned_signaturekwargss           r   test_sign_bytesTestSigner.test_sign_bytesQ   s    	",,Y7>>wG{~~\CT4UV&(G$--2U2UV#[[/!...""1%i 04FFFFar   c                 d   [        [        R                  5      n[        5       n[        R
                  " X[        R                  R                  5      n[        R                  " [        R                  5         UR                  S5        S S S 5        UR                  S:H    g ! , (       d  f       N= f)NrS   rT   )r   rY   UNAUTHORIZEDr>   r   rD   r   rC   rE   pytestraisesr   TransportErrorr[   r]   rI   s       r   test_sign_bytes_failure"TestSigner.test_sign_bytes_failure`   sn    {778&(G$--2U2UV]]:445KK 6a 65   7B!!
B/z
time.sleepN)r   c                 d   [        [        R                  5      n[        5       n[        R
                  " X#[        R                  R                  5      n[        R                  " [        R                  5         UR                  S5        S S S 5        UR                  S:H    g ! , (       d  f       N= f)NrS      )r   rY   INTERNAL_SERVER_ERRORr>   r   rD   r   rC   rE   rf   rg   r   rh   r[   r]   )r&   	mock_timer   r<   rJ   s        r   !test_sign_bytes_retryable_failure,TestSigner.test_sign_bytes_retryable_failurej   sn    {@@A&(G$--2U2UV]]:445KK 6a 65rk   r,   )r4   r5   r6   r7   rK   rO   rb   ri   r   patchrp   r8   r,   r   r   r@   r@   ;   s6    
T%   
ZZ40  1 r   r@   r+   )rV   r"   http.clientclientrY   r   r   rf   google.authr   r   r   r   google.auth.credentialsr:   r   r>   objectr@   r,   r   r   <module>rx      s>      !      "  ! 	"8  8 r   