ó
    SšLjš  ã                  ó~  • S SK Jr  S SKrS SKJs  Jr  S SKJ	r	J
r
  S SKrS SKrS SKJrJrJrJr  \
" S5      S 5       r\
" S5      S 5       r\
" S5      S 5       rS	 rS
 r\
" S5      S 5       r\
" S5      S 5       r\
" S5      S 5       r\
" S5      S 5       r\
" SSS9\
" S5      S 5       5       r\
" S5      S 5       rg)é    )ÚannotationsN)Ú	MagicMockÚpatch)Úhandle_service_startÚhandle_service_stopÚhandle_service_restartÚhandle_service_statuszsubprocess.runc           	     ó~  • [        SSSS9U l        [        SS05      nUS   nSo2UL oD(       do  [        R                  " SU4S	X#45      [        R
                  " U5      [        R
                  " U5      S
.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCSo!S   o2U;   oD(       do  [        R                  " SU4SX#45      [        R
                  " U5      [        R
                  " U5      S
.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCU R                  / SQSSSSS0SS9  g )Nr   Ú ©Ú
returncodeÚstdoutÚstderrÚserviceÚnginxÚsuccessT©Úis©z%(py1)s is %(py4)s©Úpy1Úpy4úassert %(py6)sÚpy6zstarted successfullyÚmessage©Úin©z%(py1)s in %(py4)s©Ú	systemctlÚstartr   é   ÚLC_ALLÚCF©Úcapture_outputÚtextÚtimeoutÚenvÚcheck)	r   Úreturn_valuer   Ú
@pytest_arÚ_call_reprcompareÚ	_safereprÚAssertionErrorÚ_format_explanationÚassert_called_once_with©Úmock_runÚresÚ@py_assert0Ú@py_assert3Ú@py_assert2Ú@py_format5Ú@py_format7s          Ú@D:\Programs\laragon\www\wolf\agent\tests\test_actions_service.pyÚtest_service_start_successr;      så   € ä%°¸2ÀbÑI€HÔä
 	¨7Ð3Ó
4€CØˆy‰>Ð!˜TÐ!˜TÐ!×!×!×!Ò!ˆ>×!×!Ô!ˆ>×!×!Ó!˜T×!×!×!×!×!×!Ó!Ø!Ð3¨¡^Ð3 ^Ñ3×3×3×3Ò3Ð!×3×3Ô3Ð!×3×3Ó3 ^×3×3×3×3×3×3Ó3à×$Ñ$Ú'ØØØØ�sˆOØð %ò ó    c                óP  • [        SSSS9U l        [        SS05      nUS   nSo2UL oD(       do  [        R                  " S	U4S
X#45      [        R
                  " U5      [        R
                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCUS   nSo2U:H  oD(       do  [        R                  " SU4SX#45      [        R
                  " U5      [        R
                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCg )Né   r   z
Job failedr   r   r   r   Fr   r   r   r   r   Úerror©ú==©z%(py1)s == %(py4)s)r   r+   r   r,   r-   r.   r/   r0   r2   s          r:   Útest_service_start_failurerC      s¼   € ä%°¸2ÀlÑS€HÔä
 	¨7Ð3Ó
4€CØˆy‰>Ð"˜UÐ"˜UÐ"×"×"×"Ò"ˆ>×"×"Ô"ˆ>×"×"Ó"˜U×"×"×"×"×"×"Ó"Øˆw‰<Ð'˜<Ð'˜<Ñ'×'×'×'Ò'ˆ<×'×'Ô'ˆ<×'×'Ó'˜<×'×'×'×'×'×'Ô'r<   c                óä  • [         R                  " / SQSS9U l        [        SS05      nUS   nSo2UL oD(       do  [        R
                  " SU4S	X#45      [        R                  " U5      [        R                  " U5      S
.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCSo!S   o3R                  ow" 5       o‚U;   oD(       d™  [        R
                  " SU4SX(45      [        R                  " U5      [        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  n	SSU	0-  n
[        [        R                  " U
5      5      eS =n=n=n=pxg )Nr   r"   )r(   r   r   r   Fr   r   r   r   r   zcommand failedr?   r   )zD%(py1)s in %(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py4)s.lower
}()
})r   r   r   Úpy8zassert %(py10)sÚpy10)
Ú
subprocessÚTimeoutExpiredÚside_effectr   r,   r-   r.   r/   r0   Úlower)r3   r4   r5   r6   r7   r8   r9   Ú@py_assert5Ú@py_assert7Ú@py_format9Ú@py_format11s              r:   Útest_service_start_timeoutrO   '   sð   € ä%×4Ò4Ò5TÐ^`Ña€HÔä
 	¨7Ð3Ó
4€CØˆy‰>Ð"˜UÐ"˜UÐ"×"×"×"Ò"ˆ>×"×"Ô"ˆ>×"×"Ó"˜U×"×"×"×"×"×"Ó"ØÐ3 7™|Ð3×1Ñ1Ð3Ð1Ó3Ð3Ð3Ñ3×3×3×3Ò3Ð×3×3Ô3Ð×3×3Ó3˜|×3×3Ó3Ð1×3×3Ó3Ð3×3×3×3×3×3×3×3Ð3r<   c                 ó.  • [        SS05      n U S   nSo!UL o3(       do  [        R                  " SU4SX45      [        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[	        [        R
                  " U5      5      eS =n=p2S
oS   o!U;   o3(       do  [        R                  " SU4SX45      [        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[	        [        R
                  " U5      5      eS =n=p2g )Nr   znginx; rm -rf /r   Fr   r   r   r   r   zInvalid service name formatr?   r   r   ©r   r,   r-   r.   r/   r0   ©r4   r5   r6   r7   r8   r9   s         r:   Ú test_service_invalid_name_formatrS   /   s¬   € ä
 	Ð+<Ð=Ó
>€CØˆy‰>Ð"˜UÐ"˜UÐ"×"×"×"Ò"ˆ>×"×"Ô"ˆ>×"×"Ó"˜U×"×"×"×"×"×"Ó"Ø(Ð8°©LÐ8¨LÑ8×8×8×8Ò8Ð(×8×8Ô8Ð(×8×8Ó8¨L×8×8×8×8×8×8Ô8r<   c                 ó.  • [        SS05      n U S   nSo!UL o3(       do  [        R                  " SU4SX45      [        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[	        [        R
                  " U5      5      eS =n=p2S
oS   o!U;   o3(       do  [        R                  " SU4SX45      [        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[	        [        R
                  " U5      5      eS =n=p2g )Nr   zsystemd-udevdr   Fr   r   r   r   r   znot in the whitelistr?   r   r   rQ   rR   s         r:   Útest_service_not_whitelistedrU   5   s«   € ä
 	¨?Ð;Ó
<€CØˆy‰>Ð"˜UÐ"˜UÐ"×"×"×"Ò"ˆ>×"×"Ô"ˆ>×"×"Ó"˜U×"×"×"×"×"×"Ó"Ø!Ð1¨¡\Ð1 \Ñ1×1×1×1Ò1Ð!×1×1Ô1Ð!×1×1Ó1 \×1×1×1×1×1×1Ô1r<   c           	     ó~  • [        SSSS9U l        [        SS05      nUS   nSo2UL oD(       do  [        R                  " SU4S	X#45      [        R
                  " U5      [        R
                  " U5      S
.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCSo!S   o2U;   oD(       do  [        R                  " SU4SX#45      [        R
                  " U5      [        R
                  " U5      S
.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCU R                  / SQSSSSS0SS9  g )Nr   r   r   r   Úmysqlr   Tr   r   r   r   r   zstopped successfullyr   r   r   )r    ÚstoprW   r"   r#   r$   Fr%   )	r   r+   r   r,   r-   r.   r/   r0   r1   r2   s          r:   Útest_service_stop_successrY   ;   så   € ä%°¸2ÀbÑI€HÔä
˜y¨'Ð2Ó
3€CØˆy‰>Ð!˜TÐ!˜TÐ!×!×!×!Ò!ˆ>×!×!Ô!ˆ>×!×!Ó!˜T×!×!×!×!×!×!Ó!Ø!Ð3¨¡^Ð3 ^Ñ3×3×3×3Ò3Ð!×3×3Ô3Ð!×3×3Ó3 ^×3×3×3×3×3×3Ó3à×$Ñ$Ú&ØØØØ�sˆOØð %ò r<   c           	     ó~  • [        SSSS9U l        [        SS05      nUS   nSo2UL oD(       do  [        R                  " SU4S	X#45      [        R
                  " U5      [        R
                  " U5      S
.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCSo!S   o2U;   oD(       do  [        R                  " SU4SX#45      [        R
                  " U5      [        R
                  " U5      S
.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCU R                  / SQSSSSS0SS9  g )Nr   r   r   r   Úredisr   Tr   r   r   r   r   zrestarted successfullyr   r   r   )r    Úrestartr[   r"   r#   r$   Fr%   )	r   r+   r   r,   r-   r.   r/   r0   r1   r2   s          r:   Útest_service_restart_successr]   L   så   € ä%°¸2ÀbÑI€HÔä
  )¨WÐ!5Ó
6€CØˆy‰>Ð!˜TÐ!˜TÐ!×!×!×!Ò!ˆ>×!×!Ô!ˆ>×!×!Ó!˜T×!×!×!×!×!×!Ó!Ø#Ð5¨9¡~Ð5 ~Ñ5×5×5×5Ò5Ð#×5×5Ô5Ð#×5×5Ó5 ~×5×5×5×5×5×5Ó5à×$Ñ$Ú)ØØØØ�sˆOØð %ò r<   c           	     óŠ  • [        SSSS9U l        [        SS05      nUS   nSo2UL oD(       do  [        R                  " S	U4S
X#45      [        R
                  " U5      [        R
                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCUS   nSo2U:H  oD(       do  [        R                  " SU4SX#45      [        R
                  " U5      [        R
                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCUS   nSo2U:H  oD(       do  [        R                  " SU4SX#45      [        R
                  " U5      [        R
                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCU R                  / SQSSSSS0SS9  g )Nr   z$ActiveState=active
SubState=running
r   r   r   r   r   Tr   r   r   r   r   ÚstatusÚactiver@   rB   Ú	sub_stateÚrunning)r    ÚshowzS--property=ActiveState,SubState,MainPID,MemoryCurrent,ActiveEnterTimestampMonotonicr   r"   r#   r$   Fr%   )	r   r+   r	   r,   r-   r.   r/   r0   r1   r2   s          r:   Ú"test_service_status_active_runningrd   ]   s<  € ä%ØØ7Øñ€HÔô   ¨GÐ 4Ó
5€CØˆy‰>Ð!˜TÐ!˜TÐ!×!×!×!Ò!ˆ>×!×!Ô!ˆ>×!×!Ó!˜T×!×!×!×!×!×!Ó!Øˆx‰=Ð$˜HÐ$˜HÑ$×$×$×$Ò$ˆ=×$×$Ô$ˆ=×$×$Ó$˜H×$×$×$×$×$×$Ó$Øˆ{ÑÐ(˜yÐ(˜yÑ(×(×(×(Ò(Ð×(×(Ô(Ð×(×(Ó(˜y×(×(×(×(×(×(Ó(à×$Ñ$Ú}ØØØØ�sˆOØð %ò r<   c                ór  • [        SSSS9U l        [        SS05      nUS   nSo2UL oD(       do  [        R                  " S	U4S
X#45      [        R
                  " U5      [        R
                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCUS   nSo2U:H  oD(       do  [        R                  " SU4SX#45      [        R
                  " U5      [        R
                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCUS   nSo2U:H  oD(       do  [        R                  " SU4SX#45      [        R
                  " U5      [        R
                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCUS   nS o2UL oD(       do  [        R                  " S	U4S
X#45      [        R
                  " U5      [        R
                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCUS   nS o2UL oD(       do  [        R                  " S	U4S
X#45      [        R
                  " U5      [        R
                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCUS   nS o2UL oD(       do  [        R                  " S	U4S
X#45      [        R
                  " U5      [        R
                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCg )Nr   z#ActiveState=inactive
SubState=dead
r   r   r   Údockerr   Tr   r   r   r   r   r_   Úinactiver@   rB   ra   ÚdeadÚpidÚmemory_bytesÚuptime_seconds©r   r+   r	   r,   r-   r.   r/   r0   r2   s          r:   Ú!test_service_status_inactive_deadrm   s   s  € ä%ØØ6Øñ€HÔô   ¨HÐ 5Ó
6€CØˆy‰>Ð!˜TÐ!˜TÐ!×!×!×!Ò!ˆ>×!×!Ô!ˆ>×!×!Ó!˜T×!×!×!×!×!×!Ó!Øˆx‰=Ð&˜JÐ&˜JÑ&×&×&×&Ò&ˆ=×&×&Ô&ˆ=×&×&Ó&˜J×&×&×&×&×&×&Ó&Øˆ{ÑÐ%˜vÐ%˜vÑ%×%×%×%Ò%Ð×%×%Ô%Ð×%×%Ó%˜v×%×%×%×%×%×%Ó%àˆu‰:Ð˜Ð˜Ð×××Òˆ:××Ôˆ:××Ó˜××××××ÓØˆ~ÑÐ& $Ð& $Ð&×&×&×&Ò&Ð×&×&Ô&Ð×&×&Ó& $×&×&×&×&×&×&Ó&ØÐÑ Ð( DÐ( DÐ(×(×(×(Ò(Ð ×(×(Ô(Ð ×(×(Ó( D×(×(×(×(×(×(Ô(r<   zbuiltins.openT)Úcreatec                óÎ  • [        SSSS9U l        [        5       nSUR                  l        X!R                  R                  l        [	        SS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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   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   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=peg )Nr   zoActiveState=active
SubState=running
MainPID=1234
MemoryCurrent=52428800
ActiveEnterTimestampMonotonic=90000000
r   r   z100.00 380.00
r   r   r   Tr   r   r   r   r   ri   iÒ  r@   rB   rj   i   rk   g      $@)
r   r+   ÚreadlineÚ	__enter__r	   r,   r-   r.   r/   r0   )	r3   Ú	mock_openÚhandler4   r5   r6   r7   r8   r9   s	            r:   Ú-test_service_status_reports_pid_memory_uptimert   …   s�  € ô &ØðOð ñ€HÔô ‹[€FØ#4€F‡O�OÔ Ø4:×Ñ×$Ñ$Ô1ä
 ¨GÐ 4Ó
5€CØˆy‰>Ð!˜TÐ!˜TÐ!×!×!×!Ò!ˆ>×!×!Ô!ˆ>×!×!Ó!˜T×!×!×!×!×!×!Ó!Øˆu‰:Ð˜Ð˜Ñ×××Òˆ:××Ôˆ:××Ó˜××××××ÓØˆ~ÑÐ* (Ð* (Ñ*×*×*×*Ò*Ð×*×*Ô*Ð×*×*Ó* (×*×*×*×*×*×*Ó*àÐÑ Ð( DÐ( DÑ(×(×(×(Ò(Ð ×(×(Ô(Ð ×(×(Ó( D×(×(×(×(×(×(Ô(r<   c                óN  • [        SSSS9U l        [        SS05      nUS   nS o2UL oD(       do  [        R                  " SU4S	X#45      [        R
                  " U5      [        R
                  " U5      S
.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCUS   nS o2UL oD(       do  [        R                  " SU4S	X#45      [        R
                  " U5      [        R
                  " U5      S
.-  nSSU0-  n[        [        R                  " U5      5      eS =n=pCg )Nr   zEActiveState=inactive
SubState=dead
MainPID=0
MemoryCurrent=[not set]
r   r   r   r[   ri   r   r   r   r   r   rj   rl   r2   s          r:   Ú$test_service_status_zero_pid_is_nullrv   œ   sÆ   € ä%ØØZØñ€HÔô
   ¨GÐ 4Ó
5€CØˆu‰:Ð˜Ð˜Ð×××Òˆ:××Ôˆ:××Ó˜××××××ÓØˆ~ÑÐ& $Ð& $Ð&×&×&×&Ò&Ð×&×&Ô&Ð×&×&Ó& $×&×&×&×&×&×&Ô&r<   )Ú
__future__r   ÚbuiltinsÚ@py_builtinsÚ_pytest.assertion.rewriteÚ	assertionÚrewriter,   Úunittest.mockr   r   rG   ÚpytestÚactions.servicer   r   r   r	   r;   rC   rO   rS   rU   rY   r]   rd   rm   rt   rv   © r<   r:   Ú<module>r�      s#  ðÝ "ç  „ × *Û Û ÷ó ñ ÐÓñó ðñ  ÐÓñ(ó ð(ñ ÐÓñ4ó ð4ò9ò2ñ ÐÓñó ðñ  ÐÓñó ðñ  ÐÓñó ðñ* ÐÓñ)ó ð)ñ" €˜tÑ$ÙÐÓñ)ó ó %ð)ñ* ÐÓñ'ó ñ'r<   