
    "                     |   d 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 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 d Z eede	j,                         d Z eedd       e ej0                  dddd      fZ G d dej4                        Z G d dej8                        Zy)zTests for the reauth module.    N)patch)http_client)urllib)client)reauth)errors)reauth_creds)_reauth_client)Oauth2WithReauthCredentialsc                       y N r       Kplatform/gsutil/third_party/google-reauth-python/tests/test_reauth_creds.py<lambda>r   '   s    tr   statusc                       y r   r   r   r   r   r   r   *   s    $r   new_access_tokennew_refresh_tokeni  )access_tokenrefresh_token
expires_inc                       e Zd Zd Zd Zd Zy)	MockStorec                     d | _         y r   credentialsselfs    r   __init__zMockStore.__init__5   s
    r   c                     || _         y r   r   )r   r   s     r   
locked_putzMockStore.locked_put8   s
    &r   c                     | j                   S r   r   r   s    r   
locked_getzMockStore.locked_get;   s    r   N)__name__
__module____qualname__r    r"   r$   r   r   r   r   r   4   s     ' r   r   c                       e Zd ZdZd Z ed      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 Zd Zy)ReauthCredsTestz;This class contains tests for Oauth2WithReauthCredentials. c                     t        j                  |i |}| j                  |j                         |j	                         S r   )mockr   
addCleanupstopstart)r   argskwargspatchers       r   
StartPatchzReauthCredsTest.StartPatchB   s1    **d-f-%}}r   #google_reauth.reauth.get_rapt_tokenc                      y)N
rapt_tokenr   r   r/   r0   s      r   get_rapt_tokenzReauthCredsTest.get_rapt_tokenG   s    r   c                 f    | j                  d      }||_        | j                  d      }||_        |S )Nzhttplib2.Http.requestzhttplib2.Http)r2   side_effectrequest)r   request_side_effectrequest_mock	http_mocks       r   
_http_mockzReauthCredsTest._http_mockK   s5    '>?#6 OOO4	(	r   c                     | j                         }t               }|j                  |       |j                  |       | j	                  ||||||       y r   )
_get_credsr   	set_store_do_refresh_request_check_credentials)r   r=   r   r   token_expiryinvalidcredsstores           r   _run_refresh_testz!ReauthCredsTest._run_refresh_testR   sJ    !!!),ulM ,g	7r   c                 V    t        ddddt        j                  ddddd	d
      dd      S )N	old_tokenidsecretold_refresh_token                 	token_uri
user_agentr   	client_idclient_secretr   rD   rT   rU   )r   datetimer   s    r   r@   zReauthCredsTest._get_creds\   s7    *$H-!**4Ar2rB!#% 	%r   c                    |r|j                         n|}| j                  ||j                         | j                  ||j                         | j                  ||j                         | j                  ||j                         | j                  ||j                         | j                  ||j                         | j                  ||j
                         | j                  ||j
                         y r   )r$   assertEqualr   r   rD   rE   )r   rF   rG   r   r   rD   rE   stored_credss           r   rC   z"ReauthCredsTest._check_credentialsd   s    -2u'')u'9'9:|'@'@A(;(;<(B(BCu'9'9:|'@'@A%--0,"6"67r   c                     | j                  d      }d|_        | j                  d      }t        j                  dddddd	      |_        y )
Nr3   r5   zoauth2client.client._UTCNOWrN   rO   rP   rQ   rR   rS   )r2   return_valuerY   )r   get_raptcurrent_datetimes      r   setUpzReauthCredsTest.setUpy   sG    ??#HI*??+HI(0(9(9$1b"b(Q%r   c           	      "   t        j                  ddddddd      }t        j                  |      }| j	                  d	|j
                  j                         | j	                  d|j                         | j	                  d|j                         y )
NatcicsrttetuuarV   r   )	r   OAuth2Credentialsr   from_OAuth2Credentialsr[   	__class__r%   rW   rX   )r   origcreds      r   testFromOAuth2Credentialsz)ReauthCredsTest.testFromOAuth2Credentials   sz    ''TTT +AA$G68O8OPt~~.t112r   c                 h   t        j                  t        j                  ddddddddd	            }| j	                  d |j
                         t        j                  t        j                  ddddd
dddd	            }| j	                  t        j                  dddddd      |j
                         y )Nr   rW   rX   r   foorT   rU   F)r   rW   rX   r   rD   rT   rU   rE   z2018-03-02T21:26:13ZrN   rO   rP   rQ   rR   rS   )r   	from_jsonjsondumpsr[   rD   rY   )r   rn   s     r   testTokenExpiryFromJsonz'ReauthCredsTest.testTokenExpiryFromJson   s    *44TZZ*$,,!$&A 6   	t001*44TZZ*$,,2$&A 6   	**4Ar2rB**	,r   c                     d }| j                  | j                  |      ddt        j                  dddddd	      d
       y )Nc                     t         S r   _token_responser6   s      r   r;   zHReauthCredsTest.testRefreshNoReauthRequired.<locals>.request_side_effect       ""r   r   r   rN   rO   rP      rR   rS   F)rH   r>   rY   r   r;   s     r   testRefreshNoReauthRequiredz+ReauthCredsTest.testRefreshNoReauthRequired   sE    	# 	OO/0dAq"b"5	r   c                     t         t        t        j                  ddd      fgfd}| j	                  | j                  |      ddt        j                  ddd	d
dd      d       y )Ninvalid_grantrapt_requirederrorerror_subtypec                 $    j                         S r   popr   r/   r0   	responsess      r   r;   zFReauthCredsTest.testRefreshReauthRequired.<locals>.request_side_effect       ==?"r   r   r   rN   rO   rP   r{   rR   rS   F)ry   _error_responsers   rt   rH   r>   rY   )r   r;   r   s     @r   testRefreshReauthRequiredz)ReauthCredsTest.testRefreshReauthRequired   sn    djj(!0*2 3 45	
	# 	OO/0dAq"b"5	r   c                    t         t        j                  ddd      ft         t        j                  ddd      fgfd}| j                         }t	               }|j                  |       | j                  t        j                        5  |j                  | j                  |             d d d        | j                  ||ddt        j                  ddd	d
dd      d       y # 1 sw Y   8xY w)Nr   r   r   c                 $    j                         S r   r   r   s      r   r;   z<ReauthCredsTest.testInvalidRapt.<locals>.request_side_effect   r   r   rJ   rM   rN   rO   rP   rQ   rR   rS   T)r   rs   rt   r@   r   rA   assertRaisesr   HttpAccessTokenRefreshErrorrB   r>   rC   rY   )r   r;   rF   rG   r   s       @r   testInvalidRaptzReauthCredsTest.testInvalidRapt   s    djj(!0*2 3 4 djj(!0*2 3 4	5		# !vAAB%%doo6I&JK C 	5dAq"b"5	 CBs   !C%%C.c                     d }| j                         }t               }|j                  |       |j                  | j	                  |             | j                  ||ddt        j                  dddddd	      d
       y )Nc                     t         S r   rx   r6   s      r   r;   zAReauthCredsTest.testRefreshWithStore.<locals>.request_side_effect   rz   r   r   r   rN   rO   rP   r{   rR   rS   F)r@   r   rA   rB   r>   rC   rY   )r   r;   rF   rG   s       r   testRefreshWithStorez$ReauthCredsTest.testRefreshWithStore   st    	# !!!$//2E"FG





D!QB
3
	r   c                     d }| j                         }|j                  | j                  |             | j                  |d ddt	        j                  dddddd	      d
       y )Nc                     t         S r   rx   r6   s      r   r;   z?ReauthCredsTest.testRefreshNoStore.<locals>.request_side_effect   rz   r   r   r   rN   rO   rP   r{   rR   rS   F)r@   rB   r>   rC   rY   )r   r;   rF   s      r   testRefreshNoStorez"ReauthCredsTest.testRefreshNoStore   sa    	# !!!$//2E"FG4dAq"b"5	r   c                 R    d }| j                  | j                  |      ddd d       y )Nc                 >    t         t        j                  ddd      fS )Nr   r   )r   r   )_ok_responsers   rt   r6   s      r   r;   z@ReauthCredsTest.testRefreshNoExpiry.<locals>.request_side_effect   s&    

%7&9;<= =r   r   r   F)rH   r>   r|   s     r   testRefreshNoExpiryz#ReauthCredsTest.testRefreshNoExpiry   s0    	= 	OO/0	r   N)r%   r&   r'   __doc__r2   r   r7   r>   rH   r@   rC   ra   ro   ru   r}   r   r   r   r   r   r   r   r   r)   r)   ?   sf    E
 01 27%8*R3,.	 2"r   r)   )r   base64rY   rs   osunittestr+   r   	six.movesr   r   oauth2clientr   google_reauthr   r   r	   r
   google_reauth.reauth_credsr   r   setattrOKr   rt   ry   Storager   TestCaser)   r   r   r   <module>r      s    #    	    !        & ( B  h / 4 ( DJJ+>Q	 !"   Ah'' Ar   