ó
    Š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   € Ø'*„B‡J�JÐ#Ñ$Ø'*„B‡J�JÐ#Ñ$ÛÛ"Ø×Ñ�]Ô#Ø×$Ñ$Ó&Ð&ó    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ÿ   € ô (›k€JÔä
˜rÓ
"€CØˆy‰>Ð!˜TÐ!˜TÐ!×!×!×!Ò!ˆ>×!×!Ô!ˆ>×!×!Ó!˜T×!×!×!×!×!×!Ó!Ø Ð2¨	¡NÐ2 NÑ2×2×2×2Ò2Ð ×2×2Ô2Ð ×2×2Ó2 N×2×2×2×2×2×2Ó2à× Ñ Ô"Ø×Ñ˜qÔ!Ø×Ñ˜rÔ"Ø×&Ñ&Ø	�hÐØØ�sˆOð 'ò 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	o©U
:H  oU(       dº  [        R
                  " SU4SXš4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  € ô
 0Ð0EÓFÌ	ËÐT€JÔä
˜rÓ
"€CØˆy‰>Ð!˜TÐ!˜TÐ!×!×!×!Ò!ˆ>×!×!Ô!ˆ>×!×!Ó!˜T×!×!×!×!×!×!Ó!à× Ñ Ô"Ø×Ñ˜qÔ!Ø×Ñ˜rÔ"ð × Ñ Ð% AÐ% AÑ%×%×%×%Ò%Ð ×%×%×%×%×%Õ%ˆ:×%×%×%Ñ%ˆ:×%×%Õ%Ð ×%×%Ó% A×%×%×%×%×%×%Ó%Ø×Ñ ¨XÐ6¸eÈ(ÐTWÈÐÑYØ×Ñ ˜z°¸XÀs¸OÐÒ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Á   € ô
 0Ð0EÓFÌÐP_ÓH`Ða€JÔä
˜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Ü	Ð4À5Ó	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Õ	Tús%   Á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Ü	Ð4À5Ó	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Ü	Ð4À4Ó	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Õ	TúrŠ   )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(  ðÝ "ç  „ ƒ	Û 
Û Û Ý ß *Û ð ‡�‡��‘3‘t˜H“~×-Ñ-Ó/×7Ñ7¸Ñ:¸UÑBÓCÔ Då ÷ñ õ
 /ô'ôñ ÐÓÙ€|ÓÙ€y˜Ññó ó ó ðñ" ÐÓÙ€|ÓÙ€y˜ÑñMó ó ó ðMñ" ÐÓÙ€|ÓÙ€y˜Ññ>ó ó ó ð>ò+
ò\!
óH!
r   