
                             d dl Z d dlZd dlZd dlmZ  G d de      Zej                  d        Zd Z	ej                  j                  edd      d	        Z G d
 de      Z G d de      Zy)    N)
app_enginec                   .    e Zd ZdZd ZddZddZddZy)_AppIdentityModulezThe interface of the App Idenity app engine module.
    See https://cloud.google.com/appengine/docs/standard/python/refdocs
    /google.appengine.api.app_identity.app_identity
    c                     t               NNotImplementedError)selfs    Oplatform/gsutil/third_party/google-auth-library-python/tests/test_app_engine.pyget_application_idz%_AppIdentityModule.get_application_id       !##    Nc                     t               r   r   )r
   bytes_to_signdeadlines      r   	sign_blobz_AppIdentityModule.sign_blob    r   r   c                     t               r   r   )r
   r   s     r   get_service_account_namez+_AppIdentityModule.get_service_account_name#   r   r   c                     t               r   r   )r
   scopesservice_account_ids      r   get_access_tokenz#_AppIdentityModule.get_access_token&   r   r   r   )__name__
__module____qualname____doc__r   r   r   r    r   r   r   r      s    
$$$$r   r   c              #   x   K   t        j                  t        d      }| j                  t        d|       | yw)z9Mocks the app_identity module for google.auth.app_engine.T)instanceapp_identityN)mockcreate_autospecr   setattrr   )monkeypatchapp_identity_modules     r   r    r    *   s5      ../ADQ
N4GH
s   8:c                     t         j                  j                  | j                  _        t        j                         t         j                  j                  k(  sJ y r   )r!   sentinelprojectr   return_valuer   get_project_id)r    s    r   test_get_project_idr+   2   s;    37==3H3HL##0$$&$--*?*????r   r    newc                      t        j                  t              5 } t        j                         sJ 	 d d d         j                  d      sJ y # 1 sw Y   xY wNz!App Engine APIs are not available)pytestraisesEnvironmentErrorr   r*   match)excinfos    r    test_get_project_id_missing_apisr5   7   sF    	'	(G((*** 
) ===>>> 
)	(s   AAc                       e Zd Zd Zd Zy)
TestSignerc                     t         j                  j                  t         j                  j                  f|j                  _        t        j                         }|j                  J y r   )r!   r'   key_id	signaturer   r)   r   Signer)r
   r    signers      r   test_key_idzTestSigner.test_key_id@   sL    MM  MM##/
+
 ""$}}$$$r   c                 L   t         j                  j                  t         j                  j                  f|j                  _        t        j                         }d}|j                  |      }|t         j                  j                  k(  sJ |j                  j                  |       y Ns   123)
r!   r'   r9   r:   r   r)   r   r;   signassert_called_with)r
   r    r<   to_signr:   s        r   	test_signzTestSigner.test_signJ   s{    MM  MM##/
+
 ""$KK(	DMM3333311':r   N)r   r   r   r=   rC   r   r   r   r7   r7   ?   s    %;r   r7   c                   B   e Zd Zej                  j                  edd      d        Zd Zd Z	d Z
d Zd	 Zd
 Z ej                  dej                  j                        d        Z ej                  dej                  j                        d        Zd Zd Zd Zy)TestCredentialsr    Nr,   c                     t        j                  t              5 }t        j                          d d d        j                  d      sJ y # 1 sw Y   xY wr/   )r0   r1   r2   r   Credentialsr3   )r
   r4   s     r   test_missing_apisz!TestCredentials.test_missing_apisZ   s@    ]]+,""$ - }}ABBB -,s   AAc                     t        j                         }|j                  rJ |j                  rJ |j                  rJ |j
                  rJ |j                  sJ |j                  rJ y r   )r   rG   validexpiredr   default_scopesrequires_scopesquota_project_idr
   r    credentialss      r   test_default_statez"TestCredentials.test_default_statea   so     ,,. $$$$&&&&%%%%----****/////r   c                     t        j                         }|j                  rJ |j                  sJ |j	                  dg      }|j                  dg      sJ |j                  rJ y )Nemail)r   rG   r   rM   with_scopes
has_scopesr
   r    rP   scoped_credentialss       r   test_with_scopesz TestCredentials.test_with_scopesn   si     ,,.%%%%****(44gY?!,,gY777%55555r   c                     t        j                         }|j                  rJ |j                  rJ |j                  sJ |j                  d dg      }|j                  dg      sJ |j                  rJ y )NrS   r   rL   )r   rG   r   rL   rM   rT   rU   rV   s       r   test_with_default_scopesz(TestCredentials.test_with_default_scopesy   s     ,,.%%%%----****(44	 5 
 ",,gY777%55555r   c                     t        j                         }|j                  rJ |j                  rJ |j	                  d      }|j                  dk(  sJ y )Nzproject-foo)r   rG   r   rN   with_quota_project)r
   r    rP   quota_project_credss       r   test_with_quota_projectz'TestCredentials.test_with_quota_project   sS     ,,.%%%%////)<<]K"33}DDDr   c                     t         j                  j                  |j                  _        t        j                         }|j                  t         j                  j                  k(  sJ |j                  j                  sJ y r   )r!   r'   service_account_emailr   r)   r   rG   calledrO   s      r   #test_service_account_email_implicitz3TestCredentials.test_service_account_email_implicit   s`    MM// 	--: !,,.00DMM4W4WWWW44;;;;r   c                     t        j                  t        j                  j                        }|j                  t        j                  j                  k(  sJ |j
                  j                  rJ y )N)r   )r   rG   r!   r'   ra   r   rb   rO   s      r   #test_service_account_email_explicitz3TestCredentials.test_service_account_email_explicit   sW     ,,#}}BB
 00DMM4W4WWWW88?????r   zgoogle.auth._helpers.utcnow)r)   c           	         d}d}||f|j                   _        t        j                  dgdg      }|j	                  d        |j                   j                  |j                  |j                         |j                  |k(  sJ |j                  t        j                  dddd	d
d      k(  sJ |j                  sJ |j                  rJ y )Ntokena&rS   profilerZ                    )r   r)   r   rG   refreshrA   r   _service_account_idrg   expirydatetimerJ   rK   r
   utcnowr    rg   ttlrP   s         r   test_refreshzTestCredentials.test_refresh   s    5:CZ%%2 ,,9i[
 	D!%%88 ? ?	
   E)))!!X%6%6tQAq!%LLLL    &&&&&r   c           	         d}d}||f|j                   _        t        j                  dg      }|j	                  d        |j                   j                  |j                  |j                         |j                  |k(  sJ |j                  t        j                  ddddd	d
      k(  sJ |j                  sJ |j                  rJ y )Nrg   rh   rS   )rL   rj   rk   rl   rm   rn   ro   )r   r)   r   rG   rp   rA   rL   rq   rg   rr   rs   rJ   rK   rt   s         r    test_refresh_with_default_scopesz0TestCredentials.test_refresh_with_default_scopes   s    5:CZ%%2 ,,WIFD!%%88&&(G(G	
   E)))!!X%6%6tQAq!%LLLL    &&&&&r   c                 L   t         j                  j                  t         j                  j                  f|j                  _        t        j                         }d}|j                  |      }|t         j                  j                  k(  sJ |j                  j                  |       y r?   )
r!   r'   r9   r:   r   r)   r   rG   
sign_bytesrA   )r
   r    rP   rB   r:   s        r   test_sign_byteszTestCredentials.test_sign_bytes   s}    MM  MM##/
+ !,,.**73	DMM3333311':r   c                 x    t        j                         }t        |j                  t         j                        sJ y r   )r   rG   
isinstancer<   r;   rO   s      r   test_signerzTestCredentials.test_signer   s,     ,,.+,,j.?.?@@@r   c                 b    t        j                         }|j                  |j                  k(  sJ y r   )r   rG   signer_emailra   rO   s      r   test_signer_emailz!TestCredentials.test_signer_email   s*     ,,.'';+L+LLLLr   )r   r   r   r!   patchobjectr   rH   rQ   rX   r[   r_   rc   re   rs   minrw   ry   r|   r   r   r   r   r   rE   rE   Y   s    	ZZz>t<C =C0	66E<@ TZZ-H<M<M<Q<QR' S'$ TZZ-H<M<M<Q<QR' S' ;AMr   rE   )rs   r!   r0   google.authr   r   r   fixturer    r+   r   r5   r7   rE   r   r   r   <module>r      s       "$ $&  @
 :~48? 9?; ;4@Mf @Mr   