ó
    •âDjy  ã                   ó$  • 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Jr  S SKrS SKJrJrJr  S rS rS	 rS
 rS rS rS rS rS r g)é    N)ÚPathé   Úsrc)Úhandle_sftp_createÚhandle_sftp_deleteÚhandle_sftp_reset_password)Ú	MagicMockÚpatchÚcallc                  óV  • SSSS.n [        SSS9 n[        S5       n[        5       nS	Ul        X2l        [	        U 5      nUS
   nSoeUL ow(       do  [
        R                  " SU4SXV45      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n	[        [
        R                  " U	5      5      eS =n=pvUS   nSoeU:H  ow(       do  [
        R                  " SU4SXV45      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n	[        [
        R                  " U	5      5      eS =n=pvUR                  S5        UR                  n
SoºU:H  of(       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
=pk[        / SQSSSS9[        S/SSSSS9[        / S QSSSS9[        / S!QSSSS9/nUR!                  U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)"NÚmysiteÚsecret_passwordú/var/www/mysite©Úusername_suffixÚpasswordÚhome_directoryúactions.sftp.user_existsF©Úreturn_valueúsubprocess.runr   ÚsuccessT©Úis©z%(py1)s is %(py4)s©Úpy1Úpy4úassert %(py6)sÚpy6ÚusernameÚwolf_sftp_mysite©ú==©z%(py1)s == %(py4)sé   )z2%(py2)s
{%(py2)s = %(py0)s.call_count
} == %(py5)sÚmock_run)Úpy0Úpy2Úpy5zassert %(py7)sÚpy7)	Úuseraddz-mz-dr   z-sz/usr/sbin/nologinz-gzwww-datar"   ©Úcapture_outputÚtextÚcheckÚchpasswdz wolf_sftp_mysite:secret_password©Úinputr.   r/   r0   )ÚchmodÚ750r   )Úchownzwolf_sftp_mysite:www-datar   )r
   r	   Ú
returncoder   r   Ú
@pytest_arÚ_call_reprcompareÚ	_safereprÚAssertionErrorÚ_format_explanationÚassert_called_once_withÚ
call_countÚ@py_builtinsÚlocalsÚ_should_repr_global_namer   Úassert_has_calls)ÚpayloadÚmock_existsr'   Úmock_subÚresÚ@py_assert0Ú@py_assert3Ú@py_assert2Ú@py_format5Ú@py_format7Ú@py_assert1Ú@py_assert4Ú@py_format6Ú@py_format8Úcallss                  Ú=D:\Programs\laragon\www\wolf\agent\tests\test_actions_sftp.pyÚtest_sftp_create_successrR      sü  € à#Ø%Ø+ñ€Gô 
Ð)¸Ò	>À+Ü	ÐÔ	  Hä“;ˆØˆÔØ (Ôä  Ó)ˆà�9‰~Ð% Ð% Ð%×%×%×%Ò%ˆ~×%×%Ô%ˆ~×%×%Ó% ×%×%×%×%×%×%Ó%Ø�:‰Ð4Ð"4Ð4Ð"4Ñ4×4×4×4Ò4ˆ×4×4Ô4ˆ×4×4Ó4Ð"4×4×4×4×4×4×4Ó4à×+Ñ+Ð,>Ô?ð ×"Ñ"Ð' aÐ' aÑ'×'×'×'Ò'Ð"×'×'×'×'×'Õ'ˆx×'×'×'Ñ'ˆx×'×'Õ'Ð"×'×'Ó' a×'×'×'×'×'×'Ó'ô Ò|ð  NRð  Y]ð  ejñ  kÜ�*�Ð%GÐX\ÐcgÐotÑuÜÒ4ÀTÐPTÐ\aÑbÜÒJÐ[_ÐfjÐrwÑxð	
ˆð 	×!Ñ! %Ô(÷5 
!÷ 
?Ð	>ß	 Õ	 ú÷ 
?Õ	>ús#   ‘J�IJ	É8JÊ	
J	ÊJÊ
J(c            	      óø  • SSSS.n [        SSS9   [        S5       n[        5       nS	Ul        X!l        [	        U 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=peS S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nzmy-site!_123$r   r   r   r   Fr   r   r   r   Tr   r   r   r   r    r!   Úwolf_sftp_mysite_123r#   r%   )
r
   r	   r7   r   r   r8   r9   r:   r;   r<   )	rC   r'   rE   rF   rG   rH   rI   rJ   rK   s	            rQ   Ú!test_sftp_create_sanitized_suffixrU   2   s  € à*Ø%Ø+ñ€Gô 
Ð)¸Ó	>Ü	ÐÔ	  Hä“;ˆØˆÔØ (Ôä  Ó)ˆà�9‰~Ð% Ð% Ð%×%×%×%Ò%ˆ~×%×%Ô%ˆ~×%×%Ó% ×%×%×%×%×%×%Ó%Ø�:‰Ð8Ð"8Ð8Ð"8Ñ8×8×8×8Ò8ˆ×8×8Ô8ˆ×8×8Ó8Ð"8×8×8×8×8×8×8Ó8÷ 
!÷ 
?Ð	>ß	 Õ	 ú÷ 
?Õ	>ús#   ‘E+�D,EÅ	E+Å
E(	Å$E+Å+
E9c                  ó~  • SSSS.n [        SSS9   [        U 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=pCS S S 5        g ! , (       d  f       g = f)Nz!!!r   r   r   r   Fr   r   r   r   r   r   r    zInvalid or emptyÚerror©Úin©z%(py1)s in %(py4)s©r
   r   r8   r9   r:   r;   r<   ©rC   rF   rG   rH   rI   rJ   rK   s          rQ   Útest_sftp_create_invalid_suffixr]   G   sÏ   € à Ø%Ø+ñ€Gô 
Ð)¸Ó	>Ü  Ó)ˆØ�9‰~Ð& Ð& Ð&×&×&×&Ò&ˆ~×&×&Ô&ˆ~×&×&Ó& ×&×&×&×&×&×&Ó&Ø!Ð1¨¡\Ð1 \Ñ1×1×1×1Ò1Ð!×1×1Ô1Ð!×1×1Ó1 \×1×1×1×1×1×1Ó1÷ 
?×	>Ö	>úó   ‘DD.Ä.
D<c                  ó~  • SSSS.n [        SSS9   [        U 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=pCS S S 5        g ! , (       d  f       g = f)Nr   r   r   r   r   Tr   r   Fr   r   r   r   r    zalready existsrW   rX   rZ   r[   r\   s          rQ   Útest_sftp_create_duplicate_userr`   T   sÏ   € à#Ø%Ø+ñ€Gô 
Ð)¸Ó	=Ü  Ó)ˆØ�9‰~Ð& Ð& Ð&×&×&×&Ò&ˆ~×&×&Ô&ˆ~×&×&Ó& ×&×&×&×&×&×&Ó&ØÐ/ w¡<Ð/ <Ñ/×/×/×/Ò/Ð×/×/Ô/Ð×/×/Ó/ <×/×/×/×/×/×/Ó/÷ 
>×	=Ö	=úr^   c            	      ó>  • SS0n [        SSS9 n[        S5       n[        5       nSUl        X2l        [	        U 5      nUS   nSoeUL ow(       do  [
        R                  " S	U4S
XV45      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n	[        [
        R                  " U	5      5      eS =n=pvUS   nSoeU:H  ow(       do  [
        R                  " SU4SXV45      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n	[        [
        R                  " U	5      5      eS =n=pvUR                  S5        UR                  / SQSSSS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr!   r"   r   Tr   r   r   r   r   r   r   r   r    r#   r%   )Úuserdelz-rr"   Fr-   )r
   r	   r7   r   r   r8   r9   r:   r;   r<   r=   ©
rC   rD   r'   rE   rF   rG   rH   rI   rJ   rK   s
             rQ   Útest_sftp_delete_successrd   b   s,  € àÐ&ð€Gô 
Ð)¸Ò	=ÀÜ	ÐÔ	  Hä“;ˆØˆÔØ (Ôä  Ó)ˆà�9‰~Ð% Ð% Ð%×%×%×%Ò%ˆ~×%×%Ô%ˆ~×%×%Ó% ×%×%×%×%×%×%Ó%Ø�:‰Ð4Ð"4Ð4Ð"4Ñ4×4×4×4Ò4ˆ×4×4Ô4ˆ×4×4Ó4Ð"4×4×4×4×4×4×4Ó4Ø×+Ñ+Ð,>Ô?à×(Ñ(Ò)NÐ_cÐjnÐv{Ð(Ñ|÷ 
!÷ 
>Ð	=ß	 Õ	 ú÷ 
>Õ	=ús#   �F›EE=Å,FÅ=
F	ÆFÆ
Fc                  ó2  • SS0n [        U 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=pCg )Nr!   Ú
other_userr   Fr   r   r   r   r    úmust start withrW   rX   rZ   )r   r8   r9   r:   r;   r<   r\   s          rQ   Útest_sftp_delete_invalid_prefixrh   w   s´   € à�Lð€Gô ˜WÓ
%€CØˆy‰>Ð"˜UÐ"˜UÐ"×"×"×"Ò"ˆ>×"×"Ô"ˆ>×"×"Ó"˜U×"×"×"×"×"×"Ó"ØÐ, G¡Ð, Ñ,×,×,×,Ò,Ð×,×,Ô,Ð×,×,Ó, ×,×,×,×,×,×,Ô,ó    c                  óz  • SS0n [        SSS9   [        U 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=pCS S S 5        g ! , (       d  f       g = f)Nr!   Úwolf_sftp_nonexistentr   Fr   r   r   r   r   r   r    zdoes not existrW   rX   rZ   )r
   r   r8   r9   r:   r;   r<   r\   s          rQ   Útest_sftp_delete_nonexistentrl   �   sÌ   € àÐ+ð€Gô 
Ð)¸Ó	>Ü  Ó)ˆØ�9‰~Ð& Ð& Ð&×&×&×&Ò&ˆ~×&×&Ô&ˆ~×&×&Ó& ×&×&×&×&×&×&Ó&ØÐ/ w¡<Ð/ <Ñ/×/×/×/Ò/Ð×/×/Ô/Ð×/×/Ó/ <×/×/×/×/×/×/Ó/÷ 
?×	>Ö	>ús   �DD,Ä,
D:c            
      ó@  • SSS.n [        SSS9 n[        S5       n[        5       nSUl        X2l        [	        U 5      nUS	   nSoeUL ow(       do  [
        R                  " S
U4SXV45      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n	[        [
        R                  " U	5      5      eS =n=pvUS   nSoeU:H  ow(       do  [
        R                  " SU4SXV45      [
        R                  " U5      [
        R                  " U5      S.-  nSSU0-  n	[        [
        R                  " U	5      5      eS =n=pvUR                  S5        UR                  S/SSSSS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr"   Únew_secret_password©r!   Únew_passwordr   Tr   r   r   r   r   r   r   r   r    r!   r#   r%   r1   z$wolf_sftp_mysite:new_secret_passwordFr2   )r
   r	   r7   r   r   r8   r9   r:   r;   r<   r=   rc   s
             rQ   Ú test_sftp_reset_password_successrq   Œ   s;  € à&Ø-ñ€Gô
 
Ð)¸Ò	=ÀÜ	ÐÔ	  Hä“;ˆØˆÔØ (Ôä(¨Ó1ˆà�9‰~Ð% Ð% Ð%×%×%×%Ò%ˆ~×%×%Ô%ˆ~×%×%Ó% ×%×%×%×%×%×%Ó%Ø�:‰Ð4Ð"4Ð4Ð"4Ñ4×4×4×4Ò4ˆ×4×4Ô4ˆ×4×4Ó4Ð"4×4×4×4×4×4×4Ó4Ø×+Ñ+Ð,>Ô?à×(Ñ(¨*¨Ð=cÐtxð  @Dð  LQÐ(ñ  	R÷ 
!÷ 
>Ð	=ß	 Õ	 ú÷ 
>Õ	=ús#   �FœEE>Å-FÅ>
F	ÆFÆ
Fc                  ó4  • SSS.n [        U 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=pCg )Nrf   rn   ro   r   Fr   r   r   r   r    rg   rW   rX   rZ   )r   r8   r9   r:   r;   r<   r\   s          rQ   Ú'test_sftp_reset_password_invalid_prefixrs   ¢   sµ   € à Ø-ñ€Gô
 % WÓ
-€CØˆy‰>Ð"˜UÐ"˜UÐ"×"×"×"Ò"ˆ>×"×"Ô"ˆ>×"×"Ó"˜U×"×"×"×"×"×"Ó"ØÐ, G¡Ð, Ñ,×,×,×,Ò,Ð×,×,Ô,Ð×,×,Ó, ×,×,×,×,×,×,Ô,ri   )!Úbuiltinsr?   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter8   ÚsysÚpathlibr   ÚpathÚinsertÚstrÚ__file__ÚresolveÚparentsÚactions.sftpr   r   r   ÚpytestÚunittest.mockr	   r
   r   rR   rU   r]   r`   rd   rh   rl   rq   rs   © ri   rQ   Ú<module>r„      s„   ðß  „ ƒ
Ý ð ‡�‡��‘3‘t˜H“~×-Ñ-Ó/×7Ñ7¸Ñ:¸UÑBÓCÔ Dç [Ñ [Û ß 0Ñ 0ò#)òL9ò*
2ò0ò}ò*-ò0òRó,-ri   