
                             d 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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  G d dej&                        Zy)zTests for stet_util.py.    )absolute_import)print_function)division)unicode_literalsN)storage_url)testcase)util)unittest)execution_util)	stet_util)mockc                      e Zd ZdZej
                  j                  ed      d        Zej
                  j                  ed      d        Z	ej
                  j                  ed      d        Z
ej
                  j                  ed      ej
                  j                  ed      d               Zej
                  j                  ed ej                  d	
            d        Zej
                  j                  ej"                  dd      ej
                  j                  ed ej                  d
            d               Zy	)TestStetUtilzTest STET utils.ExecuteExternalCommandc                    | j                         }d|_        t        j                         }t	        j
                  d      }t	        j
                  d      }t        j                  ddd|fg      5  t        j                  |||      }d d d        | j                  t	        j
                  d             |j                  dd	d
j                  |      dddg       |j                  j                  d       y # 1 sw Y   pxY w)Nstdoutstderrings://bucket/objGSUtilstet_binary_pathfake_binary_pathr   stet_config_pathin_.stet_tmpr   encrypt--config-file={}--blob-id=gs://bucket/objr   )CreateTempFilereturn_valuer   Mockr   StorageUrlFromStringr	   SetBotoConfigForTestr   encrypt_uploadassertEqualassert_called_once_withformatdebug)selfmock_execute_external_commandfake_config_pathmock_logger
source_urldestination_urlout_file_urls          -platform/gsutil/gslib/tests/test_stet_util.py1test_stet_upload_uses_binary_and_config_from_botoz>TestStetUtil.test_stet_upload_uses_binary_and_config_from_boto&   s     **,1E!.))+K11$7J!667HIO		"	":	%'78$ 
 --j/.9;l	
 	\ 55nEG!99!!"23#;  --h7#
 
s   0C77D c                    | j                         }| j                         }| j                  |d      }t        j                  d      }t        j                  dxx   t        j
                  j                  |z   z  cc<   d|_        t        j                         }t        j                  d      }t        j                  d      }t        j                  ddd	|fg      5  t        j                  |||      }	d d d        | j!                  	t        j                  d
             |j#                  |ddj%                  |      ddd
g       |j&                  j#                  d       |t        j                  d<   y # 1 sw Y   xY w)Nstet)tmpdir	file_namePATHr   r   r   r   r   Nr   r   r   r   r   r   r   )r    CreateTempDirosgetenvenvironpathpathsepr!   r   r"   r   r#   r	   r$   r   r%   r&   r'   r(   r)   )
r*   r+   r,   temporary_path_directoryfake_stet_binary_pathprevious_pathr-   r.   r/   r0   s
             r1   Atest_stet_upload_runs_with_binary_from_path_with_correct_settingszNTestStetUtil.test_stet_upload_runs_with_binary_from_path_with_correct_settingsB   se    **,#113 //7O:@ 0 BIIf%MJJv"''//,DDD1E!.))+K11$7J!667HIO		"	",	%'78$ 
 --j/.9;l	
 	\ 55nEG!99!!"23#;  --h7&BJJv'
 
s   E88Fc                 l   d|_         t        j                         }t        j                  d      }t        j                  d      }t        j                  ddg      5  t        j                  j                  t        j                  dt        j                  d      	      5  t        j                  |||      }d d d        d d d        | j                  t        j                  d
             |j                  g d       |j                  j                  d       y # 1 sw Y   exY w# 1 sw Y   ixY w)Nr   r   r   r   )r   r   NexistsTr!   newr   )r   r   r   r   r   r   )r!   r   r"   r   r#   r	   r$   patchobjectr:   r=   r   r%   r&   r'   r)   )r*   r+   r-   r.   r/   r0   s         r1   /test_stet_upload_uses_no_config_if_not_providedz<TestStetUtil.test_stet_upload_uses_no_config_if_not_providedf   s    2F!.))+K11$7J!667HIO		"	":,$ 
 ::RWW%!%!=  ? !//
O0;=?	
 	\ 55nEG!99 ;  --h7? ?	
 
s%   AD*"D:D*D'	#D**D3movec                    | j                         }d|_        t        j                         }t	        j
                  d      }t	        j
                  d      }d}t        j                  ddd|fg      5  t        j                  ||||       d d d        |j                  dd	d
j                  |      dddg       |j                  j                  d       |j                  dd       y # 1 sw Y   ]xY w)Nr   r   outz
out_.gstmpr   r   r   r   decryptr   r   zout_.stet_tmpr   )r    r!   r   r"   r   r#   r	   r$   r   decrypt_downloadr'   r(   r)   )r*   r+   	mock_mover,   r-   r.   r/   temporary_file_names           r1   5test_stet_download_runs_binary_and_replaces_temp_filezBTestStetUtil.test_stet_download_runs_binary_and_replaces_temp_file   s     **,1E!.))+K112CDJ!66u=O&		"	":	%'78$ 
   _!4kC	
 "99I!!"23#\?; 
 --h7%%o|D
 
s   2C''C0_get_stet_binary_from_pathNrE   rF   c                 X   | j                         }t        j                  d      }t        j                  d      }t        j                  ddd|fg      5  | j                  t              5  t        j                  ||d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r8   r   r   )	r    r   r#   r	   r$   assertRaisesKeyErrorr   r%   )r*   r,   r.   r/   s       r1   "test_stet_util_errors_if_no_binaryz/TestStetUtil.test_stet_util_errors_if_no_binary   s     **,11$7J!667HIO		"	",	%'78$ 
 X&  _dC '	
 
 '&	
 
s$   B +BB B	B  B)
expanduserT)autospecr   c                    | j                         }t        j                  d      }t        j                  d      }t        j                  ddd|fg      5  t        j                  ||t        j                                d d d        |j                  t        j                  d      t        j                  |      g       y # 1 sw Y   CxY w)Nr   r   r   r   r   r   )r    r   r#   r	   r$   r   r%   r   r"   assert_has_callscall)r*   mock_expanduserr,   r.   r/   s        r1   ,test_stet_util_expands_home_directory_symbolz9TestStetUtil.test_stet_util_expands_home_directory_symbol   s    
 **,11$7J!667HIO		"	":	%'78$ 
 z?DIIKH	

 $$	%	&	#	$	&'
 
s   *CC
)__name__
__module____qualname____doc__r   rH   rI   r   r2   rB   rJ   shutilrR   r   r"   rW   r:   r=   r^        r1   r   r   #   sT   ::^%=>8 ?86 ::^%=>!' ?!'F ::^%=>8 ?88 ::VV$::^%=>E ? %E0 ::Y1"5  7	D7	D ::RWWlT:::^-"0DE  G'G ;'re   r   )rb   
__future__r   r   r   r   r:   rc   gslibr   gslib.testsr   r	   gslib.tests.utilr
   gslib.utilsr   r   r   GsUtilUnitTestCaser   rd   re   r1   <module>rl      sE     & %  ' 	      % & ! W'8.. W're   