
    җ                        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Zd dlm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d      Zej                  j!                  ed	      Z eed
      5 Z ej.                  e      Zddd        G d de      Z G d de      Zy# 1 sw Y    xY w)    N)_helpers)
exceptions)	transport)
TokenState)credentialsz..datazauthorized_user.jsonrc                      e Zd ZdZdZdZdZdZed        Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Z ej&                  dd       ej&                  dej(                  j*                  ej.                  z         d               Zd Z ej&                  dd       ej&                  dej(                  j*                  ej.                  z         d               Z ej&                  dej(                  j*                        d        Z ej&                  dej(                  j*                        d        Z ej&                  dej(                  j*                        d        Zd Z ej&                  dej(                  j*                        d        Z ej&                  dd       ej&                  dej(                  j*                  ej.                  z         d               Z  ej&                  dd       ej&                  dej(                  j*                  ej.                  z         d               Z! ej&                  dd       ej&                  dej(                  j*                  ej.                  z         d               Z" ej&                  dd       ej&                  dej(                  j*                  ej.                  z         d               Z# ej&                  dd       ej&                  dej(                  j*                  ej.                  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. Z2e3jh                  jk                  e6jn                  d/k  d01      d2        Z8y3)4TestCredentialsz https://example.com/oauth2/tokenrefresh_token
rapt_token	client_idclient_secretc           	          t        j                  d | j                  | j                  | j                  | j
                  | j                  d      S )NT)tokenr   	token_urir   r   r   enable_reauth_refresh)r   CredentialsREFRESH_TOKEN	TOKEN_URI	CLIENT_IDCLIENT_SECRET
RAPT_TOKEN)clss    Wplatform/gsutil/third_party/google-auth-library-python/tests/oauth2/test_credentials.pymake_credentialsz TestCredentials.make_credentials.   sB    &&++mmmm++~~"&
 	
    c                    | j                         }|j                  rJ |j                  rJ |j                  rJ |j                  t
        j                  k(  sJ |j                  | j                  k(  sJ |j                  | j                  k(  sJ |j                  | j                  k(  sJ |j                  | j                  k(  sJ |j                  | j                   k(  sJ |j"                  J y )N)r   validexpiredrequires_scopestoken_stater   INVALIDr   r   r   r   r   r   r   r   r   r   refresh_handlerselfr   s     r   test_default_statez"TestCredentials.test_default_state:   s    ++-$$$$&&&&....&&**<*<<<<((D,>,>>>>$$666$$666((D,>,>>>>%%888**222r   c                     | j                         }d|_         |j                         rJ d|_         |j                         ddddk(  sJ y )Nzfake-account/path/to/fileuser credentials)credential_sourcecredential_type	principal)r   _accountget_cred_info_cred_file_pathr%   s     r   test_get_cred_infoz"TestCredentials.test_get_cred_infoJ   s_    ++--,;,,...&5#({((*!01'/
 
 	
 
r   c                     | j                         } |j                         rJ d|_         |j                         dddk(  sJ y )Nr)   r*   )r+   r,   )r   r/   r0   r%   s     r   test_get_cred_info_no_accountz-TestCredentials.test_get_cred_info_no_accountV   sT    ++-,;,,...&5#({((*!01/
 
 	
 
r   c                 v    | j                         }d|_         |j                         }|j                  dk(  sJ y )Nr)   )r   r0   
_make_copy)r&   r   	cred_copys      r   test__make_copy_get_cred_infoz-TestCredentials.test__make_copy_get_cred_info`   s<    ++-&5#*K**,	((O;;;r   c                     | j                         }d|_        d |_        i } |j                  t	        j
                         d d |       |d   dk(  sJ |d   dk(  sJ y )Nr   authorizationzBearer tokenzx-goog-api-clientzcred-type/u)r   r   expirybefore_requestmockMock)r&   r   headerss      r   test_token_usage_metricsz(TestCredentials.test_token_usage_metricsf   sh    ++-#!"""499;dGD'>999*+}<<<r   c                    ddg}t        j                  d      }t        j                  d      }t        j                  d d d d d d |d |	      }|j                  |u sJ ||_        |j                  |u sJ d |_        |j                  J y )Nemailprofile)ACCESS_TOKEN_1Nreturn_value)ACCESS_TOKEN_2N	r   r   r   r   r   r   scopesdefault_scopesr$   )r<   r=   r   r   r$   )r&   rH   original_refresh_handlerupdated_refresh_handlercredss        r   &test_refresh_handler_setter_and_getterz6TestCredentials.test_refresh_handler_setter_and_getterp   s    9%#'99:R#S "&))9Q"R''4

 $$(@@@@ 7$$(???? $$$,,,r   c                     ddg}t        j                  t              5 }t        j                  d d d d d d |d t               	       d d d        j                  d      sJ y # 1 sw Y   xY w)NrA   rB   rG   z7The provided refresh_handler is not a callable or None.)pytestraises	TypeErrorr   r   objectmatch)r&   rH   excinfos      r   test_invalid_refresh_handlerz,TestCredentials.test_invalid_refresh_handler   sh    9%]]9%##""# &
 & }}VWWW &%s   'A!!A*c                    t        j                  dd      }t        j                  t        j
                        5 }|j                  t        j                                d d d        j                  d      sJ y # 1 sw Y   xY w)Nr   dummy_universe.com)r   universe_domainzGrefresh is only supported in the default googleapis.com universe domain)
r   r   rO   rP   r   RefreshErrorrefreshr<   r=   rS   )r&   rL   rT   s      r   -test_refresh_with_non_default_universe_domainz=TestCredentials.test_refresh_with_non_default_universe_domain   si    ''+?
 ]]:223wMM$))+& 4 }}U
 	
 
 43s   $A;;Bz"google.oauth2.reauth.refresh_grantTautospeczgoogle.auth._helpers.utcnowrD   c           
         d}d}t        j                         t        j                  d      z   }dt        j
                  j                  i}|d |||f|_        t	        j                  t        j                        }| j                         } |j                  |       |j                  || j                  | j                  | j                   | j"                  d | j$                  d       |j&                  |k(  sJ |j(                  |k(  sJ |j                  t        j
                  j                  k(  sJ |j*                  |k(  sJ |j,                  sJ y )Nr   new_rapt_token  secondsid_tokenT)r   utcnowdatetime	timedeltar<   sentinelrc   rE   create_autospecr   Requestr   rZ   assert_called_withr   r   r   r   r   r   r:   r   r   )	r&   unused_utcnowrefresh_grantr   r_   r:   grant_responserequestr   s	            r   test_refresh_successz$TestCredentials.test_refresh_success   s>    )"X%7%7%DD$dmm&<&<= &
" &&y'8'89++- 	G$ 	((NNNNOO		
   E)))!!V+++##t}}'='====%%777     r   c                 .   t        j                  t        j                        }t	        j
                  d d       }t        j                  t        j                  d      5  |j                  |       d d d        |j                          y # 1 sw Y   xY w)N)r   r   znecessary fieldsrS   )r<   rh   r   ri   r   r   rO   rP   r   rY   rZ   assert_not_called)r&   rn   credentials_s      r   test_refresh_no_refresh_tokenz-TestCredentials.test_refresh_no_refresh_token   sk    &&y'8'89"..TN]]:22:LM  ) N 	!!# NMs    BBc           
      f   d}d}t        j                         t        j                  d      z   }dt        j
                  j                  i}|d |||f|_        t	        j                         }t	        j                  t        j                        }t        j                  d | j                  | j                  | j                   | j"                  | j$                  |      }	|	j'                  |       |j)                  || j                  | j                  | j                   | j"                  d | j$                  d       |	j*                  |k(  sJ |	j,                  |k(  sJ |	j                  t        j
                  j                  k(  sJ |	j.                  |k(  sJ |	j0                  sJ |j3                          y )Nr   r_   r`   ra   rc   r   r   r   r   r   r   r$   F)r   rd   re   rf   r<   rg   rc   rE   r=   rh   r   ri   r   r   r   r   r   r   r   rZ   rj   r   r:   r   r   rr   )
r&   rk   rl   r   r_   r:   rm   r$   rn   rL   s
             r   3test_refresh_with_refresh_token_and_refresh_handlerzCTestCredentials.test_refresh_with_refresh_token_and_refresh_handler   sy    )"X%7%7%DD$dmm&<&<= &
" ))+&&y'8'89'',,nnnn,,+
 	g 	((NNNNOO		
 {{e###||v%%%~~!7!7777>111 {{{ 	))+r   c                    t         j                   j                  t        j                  d      z   }t        j                  d|f      }ddg}dg}t        j
                  t        j                        }t        j                  d d d d d d |||	      }|j                  |       |j                  dk(  sJ |j                  |k(  sJ |j                  sJ |j                  rJ |j                  ||	       y )
N
  ra   ACCESS_TOKENrD   rA   rB   .https://www.googleapis.com/auth/cloud-platformrG   rH   )re   minrf   r<   r=   rh   r   ri   r   r   rZ   r   r:   r   r    rj   r&   rk   expected_expiryr$   rH   rI   rn   rL   s           r   0test_refresh_with_refresh_handler_success_scopesz@TestCredentials.test_refresh_with_refresh_handler_success_scopes$  s    "++//(2D2DT2RR))./1RS9%JK&&y'8'89'')+

 	g{{n,,,||...{{{==  **76*Br   c                     t         j                   j                  t        j                  d      z   }t        j                  d|f      }t        j                  d|f      }dg}t        j
                  t        j                        }t        j                  d d d d d d d ||	      }||_
        |j                  |       |j                  dk(  sJ |j                  |k(  sJ |j                  sJ |j                  rJ |j!                  ||       y )	Nry   ra   UNUSED_TOKENrD   rz   r{   rG   r|   )re   r}   rf   r<   r=   rh   r   ri   r   r   r$   rZ   r   r:   r   r    rj   )r&   rk   r   rJ   r$   rI   rn   rL   s           r   8test_refresh_with_refresh_handler_success_default_scopeszHTestCredentials.test_refresh_with_refresh_handler_success_default_scopes@  s    "++//(2D2DT2RR#'99(/:$
  ))./1RSJK&&y'8'89'')4

 !0g{{n,,,||...{{{==   	**7>*Jr   c                 6   t         j                   j                  t        j                  d      z   }t        j                  d |f      }ddg}dg}t        j
                  t        j                        }t        j                  d d d d d d |||	      }t        j                  t        j                  d	      5  |j                  |       d d d        |j                  J |j                   J |j"                  rJ |j%                  ||
       y # 1 sw Y   GxY w)Nry   ra   rD   rA   rB   r{   rG   zreturned token is not a stringrq   r|   )re   r}   rf   r<   r=   rh   r   ri   r   r   rO   rP   r   rY   rZ   r   r:   r   rj   r~   s           r   /test_refresh_with_refresh_handler_invalid_tokenz?TestCredentials.test_refresh_with_refresh_handler_invalid_tokena  s   "++//(2D2DT2RR))$1HI9%JK&&y'8'89'')+

 ]]##+K
 MM'"

 {{"""||###;;**76*B
 
s   7DDc                    t        j                  d      }ddg}dg}t        j                  t        j                        }t        j                  d d d d d d |||	      }t        j                  t        j                  d      5  |j                  |       d d d        |j                  J |j                  J |j                  rJ |j                  ||	       y # 1 sw Y   GxY w)
N)TOKENry   rD   rA   rB   r{   rG   z(returned expiry is not a datetime objectrq   r|   )r<   r=   rh   r   ri   r   r   rO   rP   r   rY   rZ   r   r:   r   rj   )r&   r$   rH   rI   rn   rL   s         r   0test_refresh_with_refresh_handler_invalid_expiryz@TestCredentials.test_refresh_with_refresh_handler_invalid_expiry  s    ))A9%JK&&y'8'89'')+

 ]]##+U
 MM'"

 {{"""||###;;**76*B
 
s   CC%c                 *   t         j                   j                  t        j                  z   }t	        j
                  d|f      }ddg}dg}t	        j                  t        j                        }t        j                  d d d d d d |||	      }t        j                  t        j                  d      5  |j                  |       d d d        |j                   J |j"                  J |j$                  rJ |j'                  ||	       y # 1 sw Y   GxY w)
Nr   rD   rA   rB   r{   rG   zalready expiredrq   r|   )re   r}   r   REFRESH_THRESHOLDr<   r=   rh   r   ri   r   r   rO   rP   r   rY   rZ   r   r:   r   rj   r~   s           r   /test_refresh_with_refresh_handler_expired_tokenz?TestCredentials.test_refresh_with_refresh_handler_expired_token  s    "++//(2L2LL))'?1KL9%JK&&y'8'89'')+

 ]]:22:KLMM'" M {{"""||###;;**76*B MLs   1D		Dc                 z   ddg}dg}d}d}t        j                         t        j                  d      z   }t        j
                  j                  dd	}|d |||f|_        t	        j                  t        j                        }	t        j                  d | j                  | j                  | j                  | j                   ||| j"                  d
	      }
|
j%                  |	       |j'                  |	| j                  | j                  | j                  | j                   || j"                  d
       |
j(                  |k(  sJ |
j*                  |k(  sJ |
j                  t        j
                  j                  k(  sJ |
j-                  |      sJ |
j.                  |k(  sJ |
j0                  |k(  sJ |
j2                  sJ y )NrA   rB   r{   r   r_   r`   ra   email profilerc   scopeT)	r   r   r   r   r   rH   rI   r   r   r   rd   re   rf   r<   rg   rc   rE   rh   r   ri   r   r   r   r   r   r   r   rZ   rj   r   r:   
has_scopesr   granted_scopesr   )r&   rk   rl   rH   rI   r   r_   r:   rm   rn   rL   s              r   6test_credentials_with_scopes_requested_refresh_successzFTestCredentials.test_credentials_with_scopes_requested_refresh_success  s    9%JK)"X%7%7%DD&*mm&<&<W &
" &&y'8'89'',,nnnn,,)"&

 	g 	((NNNNOO		
 {{e###||v%%%~~!7!7777'''>111##v--- {{{r   c           
      r   ddg}d}d}t        j                         t        j                  d      z   }t        j
                  j                  dd}|d |||f|_        t	        j                  t        j                        }t        j                  d | j                  | j                  | j                  | j                   || j"                  d	
      }	|	j%                  |       |j'                  || j                  | j                  | j                  | j                   || j"                  d	       |	j(                  |k(  sJ |	j*                  |k(  sJ |	j                  t        j
                  j                  k(  sJ |	j-                  |      sJ |	j.                  |k(  sJ |	j0                  |k(  sJ |	j2                  sJ y )NrA   rB   r   r_   r`   ra   r   r   Tr   r   r   r   r   rI   r   r   r   
r&   rk   rl   rI   r   r_   r:   rm   rn   rL   s
             r   3test_credentials_with_only_default_scopes_requestedzCTestCredentials.test_credentials_with_only_default_scopes_requested  s    "9-)"X%7%7%DD&*mm&<&<W &
" &&y'8'89'',,nnnn,,)"&	
 	g 	((NNNNOO		
 {{e###||v%%%~~!7!7777///>111##~555 {{{r   c           
         ddg}d}d}t        j                         t        j                  d      z   }t        j
                  j                  dj                  |      d}|d |||f|_        t	        j                  t        j                        }t        j                  d | j                  | j                  | j                   | j"                  || j$                  d	
      }	|	j'                  |       |j)                  || j                  | j                  | j                   | j"                  || j$                  d	       |	j*                  |k(  sJ |	j,                  |k(  sJ |	j                  t        j
                  j                  k(  sJ |	j/                  |      sJ |	j0                  |k(  sJ |	j2                  |k(  sJ |	j4                  sJ y NrA   rB   r   r_   r`   ra    r   T)r   r   r   r   r   rH   r   r   r   rd   re   rf   r<   rg   rc   joinrE   rh   r   ri   r   r   r   r   r   r   r   rZ   rj   r   r:   r   r   r   r   )
r&   rk   rl   rH   r   r_   r:   rm   rn   rL   s
             r   5test_credentials_with_scopes_returned_refresh_successzETestCredentials.test_credentials_with_scopes_returned_refresh_success>  s    9%)"X%7%7%DD&*mm&<&<sxxPVGWX &
" &&y'8'89'',,nnnn,,"&	
 	g 	((NNNNOO		
 {{e###||v%%%~~!7!7777'''>111##v--- {{{r   c           
      t   ddg}d}d}t        j                         t        j                  d      z   }t        j
                  j                  dd}|d |||f|_        t	        j                  t        j                        }t        j                  d | j                  | j                  | j                  | j                   || j"                  d	      }	|	j%                  |       |j'                  || j                  | j                  | j                  | j                   || j"                  d       |	j(                  |k(  sJ |	j*                  |k(  sJ |	j                  t        j
                  j                  k(  sJ |	j-                  |      sJ |	j.                  |k(  sJ |	j0                  dgk(  sJ |	j2                  sJ y )
NrA   rB   r   r_   r`   ra   r   Tr   r   r   s
             r   Ltest_credentials_with_only_default_scopes_requested_different_granted_scopesz\TestCredentials.test_credentials_with_only_default_scopes_requested_different_granted_scopes  s    "9-)"X%7%7%DD&*mm&<&<wO &
" &&y'8'89'',,nnnn,,)"&	
 	g 	((NNNNOO		
 {{e###||v%%%~~!7!7777///>111##y000 {{{r   c           
         ddg}dg}d}d}t        j                         t        j                  d      z   }t        j
                  j                  dj                  |      d}|d |||f|_        t	        j                  t        j                        }	t        j                  d | j                  | j                  | j                   | j"                  || j$                  d	
      }
|
j'                  |	       |j)                  |	| j                  | j                  | j                   | j"                  || j$                  d	       |
j*                  |k(  sJ |
j,                  |k(  sJ |
j                  t        j
                  j                  k(  sJ |
j/                  |      sJ |
j0                  |k(  sJ |
j2                  |k(  sJ |
j4                  sJ y r   r   )r&   rk   rl   rH   scopes_returnedr   r_   r:   rm   rn   rL   s              r   =test_credentials_with_scopes_refresh_different_granted_scopeszMTestCredentials.test_credentials_with_scopes_refresh_different_granted_scopes  s    9%"))"X%7%7%DD..XXo.
 &
" &&y'8'89'',,nnnn,,"&	
 	g 	((NNNNOO		
 {{e###||v%%%~~!7!7777'''>111##666 {{{r   c                     t        j                  d| j                  | j                  | j                  | j
                  d      }i }|j                  |       |d   dk(  sJ d|d   v sJ y )Nr   quota-project-123r   r   r   r   r   quota_project_idx-goog-user-projectr9   r   r   r   r   r   r   applyr&   rL   r>   s      r    test_apply_with_quota_project_idz0TestCredentials.test_apply_with_quota_project_id  ss    '',,nnnn,,0
 G,-1DDDD'/2222r   c                     t        j                  d| j                  | j                  | j                  | j
                        }i }|j                  |       d|vsJ d|d   v sJ y )Nr   )r   r   r   r   r   r   r9   r   r   s      r   #test_apply_with_no_quota_project_idz3TestCredentials.test_apply_with_no_quota_project_id  si    '',,nnnn,,
 G$G333'/2222r   c                     t        j                  d| j                  | j                  | j                  | j
                  d      }|j                  d      }|j                  dk(  sJ i }|j                  |       d|v sJ y )Nr   r   r   znew-project-456r   )	r   r   r   r   r   r   with_quota_projectr   r   )r&   rL   	new_credsr>   s       r   test_with_quota_projectz'TestCredentials.test_with_quota_project"  s    '',,nnnn,,0
 ,,->?	))->>>>G$///r   c                     t        j                  d      }|j                  dk(  sJ |j                  d      }|j                  dk(  sJ y )Nr   r   googleapis.comrW   )r   r   rX   with_universe_domainr&   rL   r   s      r   test_with_universe_domainz)TestCredentials.test_with_universe_domain2  sM    ''g6$$(8888../CD	((,@@@@r   c                     t        j                  d      }|j                  dk(  sJ |j                  d      }|j                  dk(  sJ y )Nr   r    zmock@example.com)r   r   accountwith_accountr   s      r   test_with_accountz!TestCredentials.test_with_account8  sJ    ''g6}}"""&&'9:	  $6666r   c                     t         j                         }t        j                  j	                  |      }d}|j
                  t        j                  k(  sJ |j                  |      }|j
                  |k(  sJ y )Nz&https://oauth2-eu.googleapis.com/token)AUTH_USER_INFOcopyr   r   from_authorized_user_info
_token_uri_GOOGLE_OAUTH2_TOKEN_ENDPOINTwith_token_uri)r&   inforL   new_token_uricreds_with_new_token_uris        r   test_with_token_uriz#TestCredentials.test_with_token_uri>  sj    ""$''AA$G@;#L#LLLL#(#7#7#F '22mCCCr   c                    t         j                         }t        j                  j	                  |      }|j
                  |d   k(  sJ |j                  |d   k(  sJ |j                  |d   k(  sJ |j                  t        j                  k(  sJ |j                  J ddg}t        j                  j	                  ||      }|j
                  |d   k(  sJ |j                  |d   k(  sJ |j                  |d   k(  sJ |j                  t        j                  k(  sJ |j                  |k(  sJ d|d<   t        j                  j	                  |      }|j                  |d   gk(  sJ ddg|d<   t        j                  j	                  |      }|j                  |d   k(  sJ t        j                  ddd	d
dd      }|j                         dz   |d<   t        j                  j	                  |      }|j                  |k(  sJ |j                  sJ y )Nr   r   r   rA   rB   rH              6      Zr:   )r   r   r   r   r   r   r   r   r   r   rH   re   	isoformatr:   r    )r&   r   rL   rH   r:   s        r   test_from_authorized_user_infoz.TestCredentials.test_from_authorized_user_infoJ  s   ""$''AA$G""d?&;;;;${"3333""d?&;;;;+"K"KKKK||###9%''AA$O""d?&;;;;${"3333""d?&;;;;+"K"KKKK||v%%% X''AA$G||X////!9-X''AA$G||tH~---""4BB:))+c1X''AA$G||v%%%}}}r   c                    t         j                         }t        j                  j	                  t
              }|j                  |d   k(  sJ |j                  |d   k(  sJ |j                  |d   k(  sJ |j                  t        j                  k(  sJ |j                  J |j                  J ddg}t        j                  j	                  t
        |      }|j                  |d   k(  sJ |j                  |d   k(  sJ |j                  |d   k(  sJ |j                  t        j                  k(  sJ |j                  |k(  sJ y )Nr   r   r   rA   rB   )r   r   r   r   from_authorized_user_fileAUTH_USER_JSON_FILEr   r   r   r   r   rH   r   )r&   r   rL   rH   s       r   test_from_authorized_user_filez.TestCredentials.test_from_authorized_user_filej  sD   ""$''AABUV""d?&;;;;${"3333""d?&;;;;+"K"KKKK||###'''9%''AA
 ""d?&;;;;${"3333""d?&;;;;+"K"KKKK||v%%%r   c                    t         j                         }t        j                  j	                  t
        d      }t        j                  j                  |      }|j                  |d   k(  sJ |j                  |d   k(  sJ |j                  |d   k(  sJ |j                  t        j                  k(  sJ |j                  J |j                  dk(  sJ y )Nz$authorized_user_with_rapt_token.jsonr   r   r   rapt)r   r   ospathr   DATA_DIRr   r   r   r   r   r   r   r   rH   r   )r&   r   	file_pathrL   s       r   .test_from_authorized_user_file_with_rapt_tokenz>TestCredentials.test_from_authorized_user_file_with_rapt_token  s    ""$GGLL+QR	''AA)L""d?&;;;;${"3333""d?&;;;;+"K"KKKK||###6)))r   c                    t         j                         }t        j                  dddddd      }|j                         dz   |d<   t        j
                  j                  |      }|j                  |k(  sJ |j                         }t        j                  |      }|j                  d	      |j                  k(  sJ |j                  d
      |j                  k(  sJ |j                  d      |j                  k(  sJ |j                  d      |j                  k(  sJ |j                  d      |j                   k(  sJ |j                  d      |j"                  k(  sJ |j                  d      |d   k(  sJ |j                  d      |j$                  k(  sJ |j                  d      |j&                  k(  sJ |j                  dg      }t        j                  |      }|j                  d	      |j                  k(  sJ |j                  d
      |j                  k(  sJ |j                  d      |j                  k(  sJ |j                  d      |j                  k(  sJ |j                  d      |j                   k(  sJ |j                  d      J d |_        |j                         }t        j                  |      }|j                  d      J y )Nr   r   r   r   r   r   r   r:   r   r   r   r   rH   r   rX   r   )strip)r   r   re   r   r   r   r   r:   to_jsonjsonloadsgetr   r   r   r   rH   r   rX   r   )r&   r   r:   rL   json_outputjson_asdicts         r   test_to_jsonzTestCredentials.test_to_json  sv   ""$""4BB:))+c1X''AA$G||v%%% mmojj-w'5;;666/53F3FFFF{+u>>>{+u>>>x(ELL888/53F3FFFFx(DN:::01U5J5JJJJy)U]]::: mm?*;m<jj-w'5;;666/53F3FFFF{+u>>>{+u>>>x(ELL888/777 mmojj-x(000r   c                    | j                         }t        j                  t        j                  |            }t	        |j
                        j                         t	        |j
                        j                         k(  sJ t	        |j
                        D ]1  }|dk(  rt        ||      J t        ||      t        ||      k(  r1J  y )N_refresh_worker)r   pickler   dumpslist__dict__sortgetattr)r&   rL   	unpickledattrs       r   test_pickle_and_unpicklez(TestCredentials.test_pickle_and_unpickle  s    %%'LLe!45	 ENN#((*d93E3E.F.K.K.MMMM(D((y$/777ud+wy$/GGGG )r   c                     | j                         }|`t        j                  t        j                  |            }|j
                  dk(  sJ y )Nr   )r   _universe_domainr   r   r   rX   r&   rL   r   s      r   (test_pickle_and_unpickle_universe_domainz8TestCredentials.test_pickle_and_unpickle_universe_domain  sF     %%'"LLe!45	 ((,<<<<r   c           	      @   t        j                         t        j                  d      z   }t	        j
                  d|f      }t        j                  d d d d d d |      }t        j                  t        j                  |            }t        |j                        j                         t        |j                        j                         k(  sJ t        |j                        D ]6  }|dk(  s|dk(  rt        ||      J t        ||      t        ||      k(  r6J  y )Nry   ra   r   rD   rv   _refresh_handlerr   )r   rd   re   rf   r<   r=   r   r   r   r   r   r   r   r   r   )r&   r   r$   rL   r   r   s         r   -test_pickle_and_unpickle_with_refresh_handlerz=TestCredentials.test_pickle_and_unpickle_with_refresh_handler  s    "//+h.@.@.NN))'?1KL''+
 LLe!45	 ENN#((*d93E3E.F.K.K.MMMM(D ))T5F-Fy$/777ud+wy$/GGGG )r   c                     | j                         }|j                  d= |j                  d= |j                  d= t        j                  t        j                  |            }|j
                  J y )N_quota_project_idr   r   )r   r   r   r   r   r   r   s      r   "test_pickle_with_missing_attributez2TestCredentials.test_pickle_with_missing_attribute  sd    %%'
 NN./NN-.NN,-LLe!45	 ))111r   )      z1pickle file can only be loaded with Python >= 3.5)reasonc                     t        t        j                  j                  t        d      d      5 }t        j                  |      }|j                  J 	 d d d        y # 1 sw Y   y xY w)Nz old_oauth_credentials_py3.picklerb)openr   r   r   r   r   loadr   )r&   fr   s      r   $test_unpickle_old_credentials_picklez4TestCredentials.test_unpickle_old_credentials_pickle  sS     GGLL#EF
 ++a.K//777	
 
 
s   $AA&N)9__name__
__module____qualname__r   r   r   r   r   classmethodr   r'   r1   r3   r7   r?   rM   rU   r[   r<   patchre   r}   r   r   ro   rt   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rO   markskipifsysversion_infor   r   r   r   r   '   s   2I#MJI#M	
 	
3 


<=-4X"	
 TZZ4tDTZZ%&&**X-G-GG,!	 E
,!\$ TZZ4tDTZZ%&&**X-G-GG;,	 E
;,z TZZ-H<M<M<Q<QRC SC6 TZZ-H<M<M<Q<QRK SK@ TZZ-H<M<M<Q<QRC SC<C: TZZ-H<M<M<Q<QRC SC8 TZZ4tDTZZ%&&**X-G-GG<	 E
<| TZZ4tDTZZ%&&**X-G-GG:	 E
:x TZZ4tDTZZ%&&**X-G-GG:	 E
:x TZZ4tDTZZ%&&**X-G-GG:	 E
:x TZZ4tDTZZ%&&**X-G-GG>	 E
>@330 A7
D@&*
*"1HH	=H42  [[6!B  8	8r   r   c                       e Zd Zd Z ej
                  dd      d        Zd Z ej
                  dd       ej
                  dd      d	               Zy
)TestUserAccessTokenCredentialsc                     t        j                  t        d      5  t        j                         }|j
                  J |j                  d      }|j
                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)N(UserAccessTokenCredentials is deprecatedrq   r   )rO   warnsUserWarningr   UserAccessTokenCredentialsr.   r   )r&   creds     r   test_instancez,TestUserAccessTokenCredentials.test_instance  sf    \\I
 99;D==((($$Y/D==I---
 
 
s   AA++A4z,google.auth._cloud_sdk.get_auth_access_tokenTr\   c                     t        j                  t        d      5  d|_        t	        j
                         }|j                  d        |j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  rq   access_token)rO   r  r  rE   r   r  rZ   r   )r&   get_auth_access_tokenr  s      r   test_refreshz+TestUserAccessTokenCredentials.test_refresh  s\    \\I
 2@!.99;DLL::///
 
 
s   >A$$A-c                    t        j                  t        d      5  t        j                         }|j                  d      }|j                  dk(  sJ |j                  |j                  k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  rq   zproject-foo)rO   r  r  r   r  r   r   r.   )r&   r  quota_project_creds      r   r   z6TestUserAccessTokenCredentials.test_with_quota_project  sq    \\I
 99;D!%!8!8!G%77=HHH%..$--???
 
 
s   AA88Bz:google.oauth2.credentials.UserAccessTokenCredentials.applyz<google.oauth2.credentials.UserAccessTokenCredentials.refreshc                    t        j                  t        d      5  t        j                         }|j                  t        j                         ddi        |j                          |j                          d d d        y # 1 sw Y   y xY w)Nr  rq   GETzhttps://example.com)	rO   r  r  r   r  r;   r<   r=   assert_called)r&   rZ   r   r  s       r   test_before_requestz2TestUserAccessTokenCredentials.test_before_request  si     \\I
 99;D		U4I2N!!#!
 
 
s   AB  B	N)	r  r  r  r  r<   r  r  r   r   r  r   r   r  r     so    . TZZ>N0 O0@ TZZDt TZZFQU""r   r  )re   r   r   r   r  r<   rO   google.authr   r   r   google.auth.credentialsr   google.oauth2r   r   r   dirname__file__r   r   r   fhr  r   rR   r   r  r  r   r   <module>r'     s      	  
     " ! . % 77<<14@ggll8-CD 	
s#rTYYr]N $V8f V8r,"V ,"{ $#s   CC