ó
    }1Ej_  ã                  óÐ   • S SK Jr  S SKrS SKJs  Jr  S SKrS SK	J
r
Jr  S SKrS SKJrJrJr  S r\" S5      S 5       r\" S5      S 5       r\" S	S
S9S 5       r\" S	S
S9S 5       rg)é    )ÚannotationsN)Ú	MagicMockÚpatch)Úhandle_pipeline_runÚ_step_run_commandÚresolve_binaryc                 ó@  • Sn SSU 0S.n[        U0 5      nUS   nSoCU:H  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 )NÁé  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaúrun-commandÚcommand©ÚtypeÚconfigÚstatusÚfailed©ú==©z%(py1)s == %(py4)s©Úpy1Úpy4úassert %(py6)sÚpy6zexceeds maximum lengthÚoutput)Úin)z%(py1)s in %(py4)s)r   Ú
@pytest_arÚ_call_reprcompareÚ	_safereprÚAssertionErrorÚ_format_explanation)Úlong_cmdÚstepÚresÚ@py_assert0Ú@py_assert3Ú@py_assert2Ú@py_format5Ú@py_format7s           ÚAD:\Programs\laragon\www\wolf\agent\tests\test_actions_pipeline.pyÚtest_command_length_limitr*      s¼   € à€HØ!¨i¸Ð-BÑC€DÜ
˜D "Ó
%€CØˆx‰=Ð$˜HÐ$˜HÑ$×$×$×$Ò$ˆ=×$×$Ô$ˆ=×$×$Ó$˜H×$×$×$×$×$×$Ó$Ø#Ð4¨8¡}Ð4 }Ñ4×4×4×4Ò4Ð#×4×4Ô4Ð#×4×4Ó4 }×4×4×4×4×4×4Ô4ó    úsubprocess.runc                óÆ  • [        SSSS9U l        SSS0S.n[        US	S
05      nUS   nSoCU:H  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=pTU R                  5         U R                  u  p‰US   n[        S5      S/oCU:H  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=pTU	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=pTU	S   nS
oCU:H  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 )Nr   ÚhelloÚ ©Ú
returncodeÚstdoutÚstderrr   r   zecho 'hello world'r   Ú	repo_pathz/var/wwwr   Ú	succeededr   r   r   r   r   Úechozhello worldÚshellF©Úis©z%(py1)s is %(py4)sÚcwd)r   Úreturn_valuer   r   r   r   r   r    Úassert_called_onceÚ	call_argsr   )
Úmock_runr"   r#   r$   r%   r&   r'   r(   ÚargsÚkwargss
             r)   Ú,test_run_command_shlex_split_and_shell_falserB      s�  € ä%°¸7È2ÑN€HÔà!¨iÐ9MÐ-NÑO€DÜ
˜D ;°
Ð";Ó
<€Càˆx‰=Ð'˜KÐ'˜KÑ'×'×'×'Ò'ˆ=×'×'Ô'ˆ=×'×'Ó'˜K×'×'×'×'×'×'Ó'Ø×ÑÔ!à×%Ñ%�L€DØ�‰7Ð=”~ fÓ-¨}Ð=Ð=Ð=Ñ=×=×=×=Ò=ˆ7×=×=Ô=ˆ7×=×=Ó=Ð=×=×=×=×=×=×=Ó=Ø�'‰?Ð#˜eÐ#˜eÐ#×#×#×#Ò#ˆ?×#×#Ô#ˆ?×#×#Ó#˜e×#×#×#×#×#×#Ó#Ø�%‰=Ð&˜JÐ&˜JÑ&×&×&×&Ò&ˆ=×&×&Ô&ˆ=×&×&Ó&˜J×&×&×&×&×&×&Ô&r+   c                ó’  • [        SSSS9U l        SSS0S.n[        U0 5      nU R                  u  p4US   n[	        S	5      S
S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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=pvg )Nr   Útestr/   r0   r   r   zecho; rm -rf /r   zecho;Úrmz-rfÚ/r   r   r   r   r   r7   Fr8   r:   )
r   r<   r   r>   r   r   r   r   r   r    )
r?   r"   r#   r@   rA   r$   r%   r&   r'   r(   s
             r)   Ú+test_run_command_shell_injection_protectionrG   '   sè   € ä%°¸6È"ÑM€HÔð "¨iÐ9IÐ-JÑK€DÜ
˜D "Ó
%€Cà×%Ñ%�L€Dà�‰7ÐA”~ gÓ.°°e¸SÐAÐAÐAÑA×A×A×AÒAˆ7×A×AÔAˆ7×A×AÓAÐA×A×A×A×A×A×AÓAØ�'‰?Ð#˜eÐ#˜eÐ#×#×#×#Ò#ˆ?×#×#Ô#ˆ?×#×#Ó#˜e×#×#×#×#×#×#Ô#r+   z!actions.pipeline.load_agent_tokenÚdummy_token©r<   c                óZ  • [        5       n[        5       nSSSS0SS0S.SSSS	0SS
0S.SSSS0SS0S./nSSUSSS.nS n[        SUS9   [        XAU5      nS S S 5        WS   nSo‡UL o™(       do  [        R                  " SU	4SXx4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o‡U:H  o™(       do  [        R                  " SU	4SXx45      [        R
                  " U5      [        R
                  " U5      S.-  n
SSU
0-  n[        [        R                  " U5      5      eS =n=p˜UR                  oÌR                  nS oØU:¬  oî(       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      [        R
                  " U5      S$.-  nS%S&U0-  n[        [        R                  " U5      5      eS =n=n=píUR                  R                  S'   nUS(   S    nUS(   S   nSo‡U:H  o™(       do  [        R                  " SU	4SXx45      [        R
                  " U5      [        R
                  " U5      S.-  n
SSU
0-  n[        [        R                  " U5      5      eS =n=p˜US   S   nS)o‡U:H  o™(       do  [        R                  " SU	4SXx45      [        R
                  " U5      [        R
                  " U5      S.-  n
SSU
0-  n[        [        R                  " U5      5      eS =n=p˜US    S   nS*o‡U:H  o™(       do  [        R                  " SU	4SXx45      [        R
                  " U5      [        R
                  " U5      S.-  n
SSU
0-  n[        [        R                  " U5      5      eS =n=p˜g ! , (       d  f       GNË= f)+Nr   zFail Commandr   Úfalser   Úalways©r   Úlabelr   Ú	conditionzOn Success Stepúecho 1z
on-successúAlways Stepúecho 2é   é*   Úmainz/test)Úpipeline_idÚrun_idÚstepsÚbranchr4   c                óX   • SU ;   d  [        S5      U ;   a  [        SSSS9$ [        SSSS9$ )NrK   rS   r/   Úerrorr0   r   Úsuccess)r   r   )r@   rA   s     r)   Úmock_run_cmdÚ>test_pipeline_step_conditions_on_success.<locals>.mock_run_cmd\   s3   € Ø�d‹?œn¨WÓ5¸Ó=Ü¨°"¸WÑEÐEÜ A¨iÀÑCÐCr+   r,   )Úside_effectr\   Fr8   r:   r   r   r   r   r   r   r   é   )ú>=)z[%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.update_pipeline_run
}.call_count
} >= %(py7)sÚ
api_client)Úpy0Úpy2r   Úpy7zassert %(py9)sÚpy9éÿÿÿÿr   Úskippedr5   )r   r   r   r   r   r   r   r    Úupdate_pipeline_runÚ
call_countÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚcall_args_list)Úmock_load_tokenr   rb   rX   Úpayloadr]   r#   r$   r%   r&   r'   r(   Ú@py_assert1Ú@py_assert6Ú@py_assert5Ú@py_format8Ú@py_format10Úlast_call_argsÚlogss                      r)   Ú(test_pipeline_step_conditions_on_successrx   5   sü  € ä‹[€FÜ“€Jð "Ø#Ø  'Ð*Ø  (Ð+ñ		
ð "Ø&Ø  (Ð+Ø  ,Ð/ñ		
ð "Ø"Ø  (Ð+Ø  (Ð+ñ		
ð€Eð, ØØØØñ€GòDô
 
Ð¨\Ó	:Ü! '°:Ó>ˆ÷ 
;ð ˆy‰>Ð"˜UÐ"˜UÐ"×"×"×"Ò"ˆ>×"×"Ô"ˆ>×"×"Ó"˜U×"×"×"×"×"×"Ó"Øˆx‰=Ð$˜HÐ$˜HÑ$×$×$×$Ò$ˆ=×$×$Ô$ˆ=×$×$Ó$˜H×$×$×$×$×$×$Ó$ð ×)Ñ)Ð9×4Ñ4Ð9¸Ð9¸Ñ9×9×9×9Ò9Ð4×9×9×9×9×9Õ9ˆ:×9×9×9Ñ9ˆ:×9×9Õ9Ð)×9×9Ó9Ð4×9×9Ó9¸×9×9×9×9×9×9Õ9ð  ×3Ñ3×BÑBÀ2ÑF€NØ˜!Ñ˜QÑ€Dà�‰7�8ÑÐ( Ð( Ñ(×(×(×(Ò(Ð×(×(Ô(Ð×(×(Ó( ×(×(×(×(×(×(Ó(Ø�‰7�8ÑÐ) 	Ð) 	Ñ)×)×)×)Ò)Ð×)×)Ô)Ð×)×)Ó) 	×)×)×)×)×)×)Ó)Ø�‰7�8ÑÐ+ Ð+ Ñ+×+×+×+Ò+Ð×+×+Ô+Ð×+×+Ó+ ×+×+×+×+×+×+Ô+÷! 
;Ö	:ús   Á
PÐ
P*c           	     ór  • [        5       n[        5       nSSSS0SS0S.SSSS	0SS
0S.SSSS0SS0S./nSSUSS.n[        S[        SSSS9S9   [        XAU5      nS S S 5        W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                  R                  S!   nUS   S"   nUS   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S   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S"   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‡g ! , (       d  f       GNÒ= f)$Nr   zSuccess Commandr   Útruer   rL   rM   zOn Failure SteprP   z
on-failurerQ   rR   rS   é+   rU   )rV   rW   rX   rY   r,   r   r/   r0   rI   r\   Tr8   r:   r   r   r   r   r5   r   r   rg   r`   rh   )
r   r   r   r   r   r   r   r    ri   rn   )ro   r   rb   rX   rp   r#   r$   r%   r&   r'   r(   rv   rw   s                r)   Ú(test_pipeline_step_conditions_on_failurer|   t   ss  € ä‹[€FÜ“€Jð "Ø&Ø  &Ð)Ø  (Ð+ñ		
ð "Ø&Ø  (Ð+Ø  ,Ð/ñ		
ð "Ø"Ø  (Ð+Ø  (Ð+ñ		
ð€Eð, ØØØñ	€Gô 
Ð¬iÀ1ÈRÐXZÑ.[Ó	\Ü! '°:Ó>ˆ÷ 
]ð ˆy‰>Ð!˜TÐ!˜TÐ!×!×!×!Ò!ˆ>×!×!Ô!ˆ>×!×!Ó!˜T×!×!×!×!×!×!Ó!Øˆx‰=Ð'˜KÐ'˜KÑ'×'×'×'Ò'ˆ=×'×'Ô'ˆ=×'×'Ó'˜K×'×'×'×'×'×'Ó'à×3Ñ3×BÑBÀ2ÑF€NØ˜!Ñ˜QÑ€Dà�‰7�8ÑÐ+ Ð+ Ñ+×+×+×+Ò+Ð×+×+Ô+Ð×+×+Ó+ ×+×+×+×+×+×+Ó+Ø�‰7�8ÑÐ) 	Ð) 	Ñ)×)×)×)Ò)Ð×)×)Ô)Ð×)×)Ó) 	×)×)×)×)×)×)Ó)Ø�‰7�8ÑÐ+ Ð+ Ñ+×+×+×+Ò+Ð×+×+Ô+Ð×+×+Ó+ ×+×+×+×+×+×+Ô+÷ 
]Ö	\ús   ÁL'Ì'
L6)Ú
__future__r   Úbuiltinsrk   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   ÚosÚunittest.mockr   r   ÚpytestÚactions.pipeliner   r   r   r*   rB   rG   rx   r|   © r+   r)   Ú<module>r‡      s“   ðÝ "ç  „ ƒ	ß *Û ÷ñ ò5ñ ÐÓñ'ó ð'ñ ÐÓñ
$ó ð
$ñ Ð*¸ÑGñ;,ó Hð;,ñ| Ð*¸ÑGñ/,ó Hñ/,r+   