ó
    vDj  ã                   ó  • S SK rS SKJs  Jr  S SKrS SKJr  \R                  R                  S \" \" \5      R                  5       R                  S   S-  5      5        S SKJrJr  S SKrS SKrS SKJrJr  S rS rS	 rS
 rS rS rS SKJr  S r\ S:X  a¸  S SK!r!\"" \#" 5       RI                  5       5       V Vs/ sH  u  pU RK                  S5      (       d  M  UPM!     snn r&S r'\& HI  r( S\(RR                  RT                  ;   a  \(" \" S5      5        O\(" 5         \+" S\(R@                   35        MK     \R\                  " \'(       a  SOS 5        ggs  snn f ! \, a/    \'S-  r'\+" S\(R@                   35        \!RZ                  " 5          M¤  f = f)é    N)ÚPathé   Úsrc)Úhandle_cron_createÚhandle_cron_delete)Ú	MagicMockÚpatchc           
      ó¼  • Sn[        SUS9 n[        S5       nSSSS.n[        X@S	9nUS
   nSovUL oˆ(       do  [        R                  " SU4SXg45      [        R                  " U5      [        R                  " U5      S.-  n	SSU	0-  n
[        [        R                  " U
5      5      eS =n=p‡US   nSovU:H  oˆ(       do  [        R                  " SU4SXg45      [        R                  " U5      [        R                  " U5      S.-  n	SSU	0-  n
[        [        R                  " U
5      5      eS =n=p‡UR                  5         SnUR                  U5        [        U R                  S5      5      n[        U5      nSoØU:H  oî(       Gd  [        R                  " SU4SX�45      S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS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=píUS   ofR                  nSoè" US 9nUU:H  nU(       då  [        R                  " SU4S!UU45      [        R                  " U5      [        R                  " U5      [        R                  " U5      [        R                  " U5      S"[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS"S#.-  nS$S%U0-  n[        [        R                  " U5      5      eS =n=n=n=nnS S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)&Nú* * * * * original_command
úactions.cron.read_crontab©Úreturn_valueúactions.cron.write_crontabz*/5 * * * *úecho 1zwolfpanel-managed:cmd_123©ÚscheduleÚcommandÚcomment©Ú
backup_dirÚsuccessT©Úis©z%(py1)s is %(py4)s©Úpy1Úpy4úassert %(py6)sÚpy6Úcron_idÚcmd_123©ú==©z%(py1)s == %(py4)szB* * * * * original_command
*/5 * * * * echo 1 # wolfpanel:cmd_123
úcrontab_*.bakr   ©z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚlenÚbackups©Úpy0r   Úpy3r   úassert %(py8)sÚpy8r   úutf-8©Úencoding©zX%(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.read_text
}(encoding=%(py5)s)
} == %(py9)sÚexisting_crontab©r   r+   Úpy5Úpy7Úpy9úassert %(py11)sÚpy11)r	   r   Ú
@pytest_arÚ_call_reprcompareÚ	_safereprÚAssertionErrorÚ_format_explanationÚassert_called_onceÚassert_called_once_withÚlistÚglobr'   Ú@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	read_text©Útmp_pathr2   Ú	mock_readÚ
mock_writeÚpayloadÚresÚ@py_assert0Ú@py_assert3Ú@py_assert2Ú@py_format5Ú@py_format7Úexpected_new_crontabr(   Ú@py_assert5Ú@py_assert4Ú@py_format9Ú@py_assert6Ú@py_assert8Ú@py_format10Ú@py_format12s                       Ú=D:\Programs\laragon\www\wolf\agent\tests\test_actions_cron.pyÚtest_cron_create_successrZ      sl  € à5Ðä	Ð*Ð9IÒ	JÈiÜ	Ð+Ô	,°
ð &ØØ2ñ
ˆô
 ! Ñ>ˆà�9‰~Ð% Ð% Ð%×%×%×%Ò%ˆ~×%×%Ô%ˆ~×%×%Ó% ×%×%×%×%×%×%Ó%Ø�9‰~Ð* Ð* Ñ*×*×*×*Ò*ˆ~×*×*Ô*ˆ~×*×*Ó* ×*×*×*×*×*×*Ó*ð 	×$Ñ$Ô&ð  fÐØ×*Ñ*Ð+?Ô@ô �x—}‘} _Ó5Ó6ˆÜ�7‹|Ð ˜qÐ ˜qÑ × × × Ó ˆ|× × × × × Õ Œs× × × Ñ Œs× × × × × Ö �7× × × Ñ �7× × Õ ˆ|× × Ó ˜q× × × × × × Ó Ø�q‰zÐI×#Ñ#ÐI¨WÐIÐ#¨WÑ5ÐIÐ5Ð9IÑI×I×I×IÓIÐ5Ð9I×I×IÔIˆz×I×IÓIÐ#×I×IÓI¨W×I×IÓIÐ5×I×I×I×I×IÔIÐ9I×I×I×IÑIÐ9I×I×I×I×I×I×I×IÒI÷- 
-÷ 
KÐ	Jß	,Õ	,ú÷ 
KÕ	Jús#   �O™NN<Î+OÎ<
O
	ÏOÏ
Oc           
      ó˜  • Sn[        SUS9 n[        S5       nSS0n[        X@S9nUS   nS	ovUL oˆ(       do  [        R                  " S
U4SXg45      [        R                  " U5      [        R                  " U5      S.-  n	SSU	0-  n
[        [        R                  " U
5      5      eS =n=p‡US   nSovU:H  oˆ(       do  [        R                  " SU4SXg45      [        R                  " U5      [        R                  " U5      S.-  n	SSU	0-  n
[        [        R                  " U
5      5      eS =n=p‡SnUR                  U5        [        U R                  S5      5      n[        U5      nSoØU:H  oî(       Gd  [        R                  " SU4SX�45      S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS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=píUS   ofR                  nSoè" US9nUU:H  nU(       då  [        R                  " SU4SUU45      [        R                  " U5      [        R                  " U5      [        R                  " U5      [        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OSS .-  nS!S"U0-  n[        [        R                  " U5      5      eS =n=n=n=nnS S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)#NzZ* * * * * original_command
*/5 * * * * echo 1 # wolfpanel:cmd_123
1 2 3 4 5 other_command
r   r   r   Ú
command_idr!   r   r   Tr   r   r   r   r   r    r"   r$   ú3* * * * * original_command
1 2 3 4 5 other_command
r%   r   r&   r'   r(   r)   r,   r-   r   r.   r/   r1   r2   r3   r7   r8   )r	   r   r9   r:   r;   r<   r=   r?   r@   rA   r'   rB   rC   rD   rE   rF   s                       rY   Útest_cron_delete_successr^   +   s]  € ð	$ð ô 
Ð*Ð9IÒ	JÈiÜ	Ð+Ô	,°
à Ð+ˆÜ  Ñ>ˆà�9‰~Ð% Ð% Ð%×%×%×%Ò%ˆ~×%×%Ô%ˆ~×%×%Ó% ×%×%×%×%×%×%Ó%Ø�9‰~Ð* Ð* Ñ*×*×*×*Ò*ˆ~×*×*Ô*ˆ~×*×*Ó* ×*×*×*×*×*×*Ó*ð(ð 	ð 	×*Ñ*Ð+?Ô@ô �x—}‘} _Ó5Ó6ˆÜ�7‹|Ð ˜qÐ ˜qÑ × × × Ó ˆ|× × × × × Õ Œs× × × Ñ Œs× × × × × Ö �7× × × Ñ �7× × Õ ˆ|× × Ó ˜q× × × × × × Ó Ø�q‰zÐI×#Ñ#ÐI¨WÐIÐ#¨WÑ5ÐIÐ5Ð9IÑI×I×I×IÓIÐ5Ð9I×I×IÔIˆz×I×IÓIÐ#×I×IÓI¨W×I×IÓIÐ5×I×I×I×I×IÔIÐ9I×I×I×IÑIÐ9I×I×I×I×I×I×I×IÒI÷# 
-÷ 
KÐ	Jß	,Õ	,ú÷ 
KÕ	Jús#   �N;™N N*ÎN;Î*
N8	Î4N;Î;
O	c           	      óâ  • Sn[        SUS9 n[        S5       nSS0n[        X@S9nUS   nS	ovUL oˆ(       do  [        R                  " S
U4SXg45      [        R                  " U5      [        R                  " U5      S.-  n	SSU	0-  n
[        [        R                  " U
5      5      eS =n=p‡SnUR                  U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NzZ* * * * * original_command
# wolfpanel:cmd_123
*/5 * * * * echo 1
1 2 3 4 5 other_command
r   r   r   r\   r!   r   r   Tr   r   r   r   r   r]   )r	   r   r9   r:   r;   r<   r=   r?   )rG   r2   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   s               rY   Ú&test_cron_delete_separate_comment_liner`   G   sÂ   € ð	$ð ô 
Ð*Ð9IÒ	JÈiÜ	Ð+Ô	,°
à Ð+ˆÜ  Ñ>ˆà�9‰~Ð% Ð% Ð%×%×%×%Ò%ˆ~×%×%Ô%ˆ~×%×%Ó% ×%×%×%×%×%×%Ó%ð(ð 	ð 	×*Ñ*Ð+?Ô@÷ 
-÷ 
KÐ	Jß	,Õ	,ú÷ 
KÕ	Jús#   �C ™B%CÂ>C Ã
C	ÃC Ã 
C.c           	      óä  • Sn[        SUS9 n[        S5       nSS0n[        X@S9nUS   nS	ovUL oˆ(       do  [        R                  " S
U4SXg45      [        R                  " U5      [        R                  " U5      S.-  n	SSU	0-  n
[        [        R                  " U
5      5      eS =n=p‡SoeS   ovU;   oˆ(       do  [        R                  " SU4SXg45      [        R                  " U5      [        R                  " U5      S.-  n	SSU	0-  n
[        [        R                  " U
5      5      eS =n=p‡UR                  5         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   r   r   r   r\   Únonexistentr   r   Fr   r   r   r   r   z	not foundÚerror©Úin©z%(py1)s in %(py4)s)r	   r   r9   r:   r;   r<   r=   Úassert_not_called)rG   r2   rH   rI   rJ   rK   rL   rM   rN   rO   rP   s              rY   Útest_cron_delete_not_foundrh   ^   sø   € Ø5Ðä	Ð*Ð9IÒ	JÈiÜ	Ð+Ô	,°
à Ð/ˆÜ  Ñ>ˆà�9‰~Ð& Ð& Ð&×&×&×&Ò&ˆ~×&×&Ô&ˆ~×&×&Ó& ×&×&×&×&×&×&Ó&ØÐ* '™lÐ*˜lÑ*×*×*×*Ò*ˆ{×*×*Ô*ˆ{×*×*Ó*˜l×*×*×*×*×*×*Ó*Ø×$Ñ$Ô&÷ 
-÷ 
KÐ	Jß	,Õ	,ú÷ 
KÕ	Jús#   �E!™D&EÄ?E!Å
E	ÅE!Å!
E/c                 ó`  • SSSS.n[        XS9nUS   nSoCUL oU(       do  [        R                  " SU4S	X445      [        R                  " U5      [        R                  " U5      S
.-  nSSU0-  n[	        [        R
                  " U5      5      eS =n=pTSo2S   oCU;   oU(       do  [        R                  " SU4SX445      [        R                  " U5      [        R                  " U5      S
.-  nSSU0-  n[	        [        R
                  " U5      5      eS =n=pTSSSS.n[        X€S9n	U	S   nSoCUL oU(       do  [        R                  " SU4S	X445      [        R                  " U5      [        R                  " U5      S
.-  nSSU0-  n[	        [        R
                  " U5      5      eS =n=pTSo9S   oCU;   oU(       do  [        R                  " SU4SX445      [        R                  " U5      [        R                  " U5      S
.-  nSSU0-  n[	        [        R
                  " U5      5      eS =n=pTg )Nz
* * * * *
r   úwolfpanel-managed:123r   r   r   Fr   r   r   r   r   ÚNewlinerc   rd   rf   ú	* * * * *zecho 1
rm -rf /©r   r9   r:   r;   r<   r=   )
rG   rJ   rK   rL   rM   rN   rO   rP   Úpayload_cmdÚres_cmds
             rY   Ú#test_cron_create_validation_newlinerp   l   sr  € à!ØØ*ñ€Gô
 ˜WÑ
:€CØˆy‰>Ð"˜UÐ"˜UÐ"×"×"×"Ò"ˆ>×"×"Ô"ˆ>×"×"Ó"˜U×"×"×"×"×"×"Ó"ØÐ$˜G™Ð$˜Ñ$×$×$×$Ò$ˆ9×$×$Ô$ˆ9×$×$Ó$˜×$×$×$×$×$×$Ó$ð  Ø%Ø*ñ€Kô
 ! ÑB€GØ�9ÑÐ& Ð& Ð&×&×&×&Ò&Ð×&×&Ô&Ð×&×&Ó& ×&×&×&×&×&×&Ó&ØÐ( Ñ(Ð(Ð(Ñ(×(×(×(Ò(ˆ9×(×(Ô(ˆ9×(×(Ó(Ð(×(×(×(×(×(×(Ô(ó    c                 ó2  • SSSS.n[        XS9nUS   nSoCUL oU(       do  [        R                  " SU4S	X445      [        R                  " U5      [        R                  " U5      S
.-  nSSU0-  n[	        [        R
                  " U5      5      eS =n=pTSo2S   oCU;   oU(       do  [        R                  " SU4SX445      [        R                  " U5      [        R                  " U5      S
.-  nSSU0-  n[	        [        R
                  " U5      5      eS =n=pTg )Nrl   zecho 1 # try to break commentrj   r   r   r   Fr   r   r   r   r   zHash characterrc   rd   rf   rm   )rG   rJ   rK   rL   rM   rN   rO   rP   s           rY   Ú test_cron_create_validation_hashrs   €   s¸   € àØ2Ø*ñ€Gô
 ˜WÑ
:€CØˆy‰>Ð"˜UÐ"˜UÐ"×"×"×"Ò"ˆ>×"×"Ô"ˆ>×"×"Ó"˜U×"×"×"×"×"×"Ó"ØÐ+ 7™|Ð+˜|Ñ+×+×+×+Ò+Ð×+×+Ô+Ð×+×+Ó+˜|×+×+×+×+×+×+Ô+rq   )Úprocess_commandsc           	      ó  • [        5       nSUl        SUl        [        5       nSSSSSS.S	.S
S0 S	./UR                  l        [        SSS.S9nU[        5       S.n[        SSS9   [        SU5         [        X5        UR                  SSSS.5        UR                  R                  SSSSS.S.S5        U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ÚonlineÚ1r   úcron_job.createrl   r   zwolfpanel-managed:1r   )ÚidÚcommand_typerJ   é   zinvalid.typeTÚok)r   Úmessager   )rx   zcron_job.deletezcommand_runner.load_agent_tokenÚtokenzcommand_runner.HANDLERSÚ	succeeded)ÚstatusÚresultÚfailedrc   z&Unsupported command type: invalid.type)
r   r€   Ú	server_idÚget_pending_commandsr   r	   rt   r?   Úpost_command_resultÚassert_any_call)rG   ÚconfigÚ
api_clientÚmock_createÚmock_handlerss        rY   Ú+test_command_runner_dispatches_successfullyr‹   �   s%  € ä‹[€FØ€F„MØ€FÔô “€JàÐ"3È[Ðemð  {Pñ  AQñ  	RØ .¸RÑ@ð4€J×#Ñ#Ô0ô
 °TÀdÑ)KÑL€Kà&Ü$›;ñ€Mô 
Ð0¸wÓ	GÜ	Ð(¨-Õ	8ä˜Ô,ð 	×+Ñ+¸ÐQYÐf{Ñ,|Ô}ð 	×&Ñ&×6Ñ6ØØ"¸$È4Ñ.PÑQØô	
ð 	×&Ñ&×6Ñ6ØØ¨GÐ5]Ð+^Ñ_Øô	
÷ 
9÷ 
HÐ	Gß	8Õ	8ú÷ 
HÕ	Gús%   Á%C:Á2A&C)ÃC:Ã)
C7	Ã3C:Ã:
DÚ__main__Útest_rG   z/tmpzPASS zFAIL )/ÚbuiltinsrB   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter9   ÚsysÚpathlibr   ÚpathÚinsertÚstrÚ__file__ÚresolveÚparentsÚactions.cronr   r   ÚactionsÚpytestÚunittest.mockr   r	   rZ   r^   r`   rh   rp   rs   Úcommand_runnerrt   r‹   Ú__name__Ú	tracebackÚsortedÚglobalsÚitemsÚ
startswithÚfuncsÚfailuresÚfuncÚ__code__Úco_varnamesÚprintÚ	ExceptionÚ	print_excÚexit)ÚkÚvs   00rY   Ú<module>r°      sX  ðß  „ ƒ
Ý ð ‡�‡��‘3‘t˜H“~×-Ñ-Ó/×7Ñ7¸Ñ:¸UÑBÓCÔ Dç ?Û Û ß *òJò<Jò8Aò.'ò)ò(,õ ,ò(
ðV ˆzÓÛÙ!¡'£)§/¡/Ó"3Ô4ÔNÑ4‘4�1¸¿¹ÀW×8M�QÑ4ÒN€EØ€HÛˆð
	"à˜TŸ]™]×6Ñ6Ó6Ù‘T˜&“\Õ"á”Ù�E˜$Ÿ-™-˜Ð)Ö*ñ ð ‡H‚H–(‰Q Õ"ð! ùãNøð ó 	"Ø˜‰MˆHÙ�E˜$Ÿ-™-˜Ð)Ô*Ø×Ò×!ð	"ús   Â9EÃEÃ*AEÅ1FÆ
F