
    dJj                       S SK Jr  S SKrS SKJs  Jr  S SKrS SK	r	S SK
r
S SKrS SKJr  S SKJrJr  S SKr\	R$                  R'                  S \" \" \5      R-                  5       R.                  S   S-  5      5        S SKJr  S SKJrJrJr  S S	KJr  SS
 jr SS jr!\" S5      \" S5      \" SSS9S 5       5       5       r"\" S5      \" S5      \" SSS9S 5       5       5       r#\" S5      \" S5      \" SSS9S 5       5       5       r$S r%S r&S r'g)    )annotationsN)Path)	MagicMockpatch   src)Config)update_command_stateload_command_statesrecover_interrupted_commands)handle_server_rebootc                    U [         R                  S'   S[         R                  S'   SS KnSS KnUR	                  U5        UR                  5       $ )NWOLFPANEL_DEV_HOME1WOLFPANEL_API_MOCKr   )osenviron	importlibconfigreloadload_config)tmpr   config_modules      >D:\Programs\laragon\www\wolf\agent\tests\test_actions_power.py_fresh_configr      sC    '*BJJ#$'*BJJ#$"]#$$&&    c                b    [        U 5      nSSKJnJn  U" U5        U" USS5        [        U 5      $ )Nr   )ensure_dirsstore_credentials
server_123wp_agent_dev_token)r   identityr   r   )r   cfgr   r   s       r   _registered_configr$       s/    

C7c<)=>r   zsubprocess.Popenz
time.sleepzos.syncT)createc                   [        5       Ul        [        0 5      nUS   nSoTUL of(       do  [        R                  " SU4SXE45      [        R
                  " U5      [        R
                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=peSoCS	   oTU;   of(       do  [        R                  " S
U4SXE45      [        R
                  " U5      [        R
                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=peU R                  5         UR                  S5        UR                  S5        UR                  SS/SSS0S9  g )NsuccessTisz%(py1)s is %(py4)spy1py4assert %(py6)spy6zReboot command sentmessageinz%(py1)s in %(py4)s      	systemctlrebootFLC_ALLCshellenv)r   return_valuer   
@pytest_ar_call_reprcompare	_safereprAssertionError_format_explanationassert_called_onceassert_any_callassert_called_once_with		mock_sync
mock_sleep
mock_popenres@py_assert0@py_assert3@py_assert2@py_format5@py_format7s	            r   $test_reboot_action_systemctl_successrP   (   s     (kJ
r
"Cy>!T!T!!!!!>!!!>!!!T!!!!!!! 2	N2N22222 222 222N2222222  "q!r"&&	hsO ' r   c                   [        S5      [        5       /Ul        [        0 5      nUS   nSoTUL of(       do  [        R
                  " SU4SXE45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=peU R                  5         UR                  S	5        UR                  S
5        UR                  n	S	oU
:H  oU(       d  [        R
                  " SU4SX45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U	5      [        R                  " U
5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n	=pZUR                  SS/SSS0S9  UR                  S/SSS0S9  g )Nsystemctl not foundr'   Tr(   r*   r+   r.   r/   r4   r5   ==)z2%(py2)s
{%(py2)s = %(py0)s.call_count
} == %(py5)srI   )py0py2py5zassert %(py7)spy7r6   r7   Fr8   r9   r:   )FileNotFoundErrorr   side_effectr   r>   r?   r@   rA   rB   rC   rD   
call_count@py_builtinslocals_should_repr_global_name)rG   rH   rI   rJ   rK   rL   rM   rN   rO   @py_assert1@py_assert4@py_format6@py_format8s                r   #test_reboot_action_fallback_successrc   <   sG   
 00EF	TJ
r
"Cy>!T!T!!!!!>!!!>!!!T!!!!!!!  "q!r"   %A%A%%%%% %%%%%%:%%%%:%%% %%%A%%%%%%%X6e(TWYzXsOLr   c                `   [        S5      [        S5      /Ul        [        0 5      nUS   nSoTUL of(       do  [        R
                  " SU4SXE45      [        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS =n=peS
oCS   oTU;   of(       do  [        R
                  " SU4SXE45      [        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS =n=peg )NrR   zreboot failedr'   Fr(   r*   r+   r.   r/   z Failed to execute reboot commanderrorr1   r3   )	rY   OSErrorrZ   r   r>   r?   r@   rA   rB   rF   s	            r   test_reboot_action_failurerg   P   s    
 00EFP_H`aJ
r
"Cy>"U"U""""">""">"""U"""""""-=W======-===-==========r   c           	        [        [        U 5      5      n[        UR                  SSSSSS9  [        UR                  SSSSS	9  [	        5       n[        S
SS9   [        SSS9   [        X5        [        UR                  5      nUS   S   nSoTU:H  of(       do  [        R                  " SU4SXE45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=peUS   S   nSoTU:H  of(       do  [        R                  " SU4SXE45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=peUR                  R                  SSSSS.S.S5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)N401runningserver.reboot     @@old_timestatuscommand_typepre_reboot_boot_time
updated_at402some_action)ro   rp   rr   command_runner.load_agent_tokenr!   r=   #command_runner.get_system_boot_timeg     @ro   r'   rS   z%(py1)s == %(py4)sr+   r.   r/   failedi  	succeededTzServer rebooted successfully)r'   r0   ro   resultr$   strr
   var_dirr   r   r   r   r>   r?   r@   rA   rB   post_command_resultrD   	tmp_pathr#   
api_clientstatesrK   rL   rM   rN   rO   s	            r   *test_reboot_recovery_real_reboot_succeededr   \   s|   
S]
+C $" " J 
0?S	T	45	I$S5$S[[1 e}X&3)3)33333&333&333)3333333e}X&2(2(22222&222&222(2222222&&66%&*7UV !	
 
J 
U	T	I	I 
U	Ts%   G#EG7G
G	G
G'c           	        [        [        U 5      5      n[        UR                  SSSSSS9  [	        5       n[        SSS	9   [        S
SS	9   [        X5        [        UR                  5      nUS   S   nSoTU:H  of(       do  [        R                  " SU4SXE45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=peUR                  R                  SSSS0S.S5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)N403rj   rk   rl   rm   rn   ru   r!   rv   rw   ro   ry   rS   rx   r+   r.   r/   i  re   8Server did not reboot or boot time could not be verifiedr{   r}   r   s	            r   )test_reboot_recovery_agent_restart_failedr      s   
S]
+C $" J 
0?S	T	45	I$S5$S[[1 e}X&2(2(22222&222&222(2222222&&66""$^_ !	
 
J 
U	T	I	I 
U	T%   D9CD(D9(
D6	2D99
Ec           	        [        [        U 5      5      n[        UR                  SSSSSS9  [	        5       n[        SSS	9   [        S
S S	9   [        X5        [        UR                  5      nUS   S   nSoTU:H  of(       do  [        R                  " SU4SXE45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=peUR                  R                  SSSS0S.S5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)N404rj   rk   rl   rm   rn   ru   r!   rv   rw   ro   ry   rS   rx   r+   r.   r/   i  re   r   r{   r}   r   s	            r   (test_reboot_recovery_no_boot_time_failedr      s   
S]
+C $" J 
0?S	T	44	H$S5$S[[1 e}X&2(2(22222&222&222(2222222&&66""$^_ !	
 
I 
U	T	H	H 
U	Tr   )r   r~   returnr	   )(
__future__r   builtinsr\   _pytest.assertion.rewrite	assertionrewriter>   r   sys
subprocesstimepathlibr   unittest.mockr   r   pytestpathinsertr~   __file__resolveparentsr   r	   command_runnerr
   r   r   actions.powerr   r   r$   rP   rc   rg   r   r   r    r   r   <module>r      s(   "   	 
    *  3tH~--/77:UBC D  
 /' |y   " |yM   M" |y>   >+
\!
H!
r   