ó
    "¥JjS  ã                  óÂ   • 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Jr  S SKrS SKrS SKJrJrJrJrJrJr  S SKJrJrJr  S SKJr  S SKJr  S rS	 rS
 r S r!g)é    )ÚannotationsN)ÚPath)Úverify_signatureÚPUBLIC_KEY_NÚPUBLIC_KEY_EÚTEST_PUBLIC_KEY_NÚTEST_PUBLIC_KEY_EÚTEST_PRIVATE_KEY_D)Úencrypt_tokenÚdecrypt_tokenÚensure_dirs)ÚRedactingFilter)ÚConfigc                 óX  • Sn [         R                  " U 5      R                  5       nSnSU-   U-   n[        R	                  US5      n[        U[        [        5      nUR                  SS5      R                  5       n[        X[        [        S9nSo‡UL o™(       Gdþ  [        R                  " SU	4S	Xx4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S[        R                  " 5       ;   d  [        R                   " U5      (       a  [        R"                  " U5      OSS[        R                  " 5       ;   d  [        R                   " [        5      (       a  [        R"                  " [        5      OSS[        R                  " 5       ;   d  [        R                   " [        5      (       a  [        R"                  " [        5      OS[        R"                  " U5      [        R"                  " U5      S.-  n
SSU
0-  n[%        [        R&                  " U5      5      eS =n=p˜Sn[        XÆ[        [        S9nSoíUL oˆ(       GdÈ  [        R                  " SU4SXÞ45      S
[        R                  " 5       ;   d  [        R                   " [        5      (       a  [        R"                  " [        5      OS
[        R"                  " U5      S[        R                  " 5       ;   d  [        R                   " U5      (       a  [        R"                  " U5      OSS[        R                  " 5       ;   d  [        R                   " [        5      (       a  [        R"                  " [        5      OSS[        R                  " 5       ;   d  [        R                   " [        5      (       a  [        R"                  " [        5      OS[        R"                  " U5      [        R"                  " U5      S.-  nSSU0-  n[%        [        R&                  " U5      5      eS =n=n=pŽSnSnUU-  n[        X[        [        S9nSnUUL nU(       GdÞ  [        R                  " SU4SUU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[        R                  " 5       ;   d  [        R                   " [        5      (       a  [        R"                  " [        5      OSS[        R                  " 5       ;   d  [        R                   " [        5      (       a  [        R"                  " [        5      OS[        R"                  " U5      [        R"                  " U5      S.-  nSSU0-  n[%        [        R&                  " U5      5      eS =n=n=n=n=nnSn[        U U5      nSn	UU	L oÝ(       Gd#  [        R                  " SU4SUU	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      [        R"                  " U	5      S.-  nS S!U0-  n[%        [        R&                  " U5      5      eS =n=n=pÙS"n[        U U5      nSn	UU	L oÝ(       Gd#  [        R                  " SU4SUU	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      [        R"                  " U	5      S.-  nS S!U0-  n[%        [        R&                  " U5      5      eS =n=n=pÙ[        X5      nSnUUL ow(       GdY  [        R                  " SU4S#UU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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}[        [(        :g  oÌ(       dô  [        R                  " S'U4S([        [(        45      S[        R                  " 5       ;   d  [        R                   " [        5      (       a  [        R"                  " [        5      OSS)[        R                  " 5       ;   d  [        R                   " [(        5      (       a  [        R"                  " [(        5      OS)S*.-  nS+S,U0-  n[%        [        R&                  " U5      5      eS ng )-Ns   test update release contents   010	`†He  sÍ    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Úbigé   )ÚnÚeT©Úis)zO%(py6)s
{%(py6)s = %(py0)s(%(py1)s, %(py2)s, n=%(py3)s, e=%(py4)s)
} is %(py9)sr   ÚmessageÚvalid_sig_hexr   r	   )Úpy0Úpy1Úpy2Úpy3Úpy4Úpy6Úpy9zassert %(py11)sÚpy11s   modified messageF)zP%(py7)s
{%(py7)s = %(py0)s(%(py2)s, %(py3)s, n=%(py4)s, e=%(py5)s)
} is %(py10)s)r   r   r   r   Úpy5Úpy7Úpy10zassert %(py12)sÚpy12Úab)z^%(py10)s
{%(py10)s = %(py0)s(%(py1)s, (%(py3)s * %(py5)s), n=%(py7)s, e=%(py8)s)
} is %(py13)s)r   r   r   r!   r"   Úpy8r#   Úpy13zassert %(py15)sÚpy15Ú1234)z9%(py5)s
{%(py5)s = %(py0)s(%(py1)s, %(py3)s)
} is %(py8)s)r   r   r   r!   r&   úassert %(py10)sr#   Ú )z9%(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
} is %(py7)s)r   r   r   r   r"   zassert %(py9)sr   ©ú!=©z%(py0)s != %(py2)sr   ©r   r   úassert %(py4)sr   )ÚhashlibÚsha256ÚdigestÚintÚ
from_bytesÚpowr
   r   Úto_bytesÚhexr   r	   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationr   )r   Úsha256_hashÚasn1_prefixÚpaddedÚmÚsig_intr   Ú@py_assert5Ú@py_assert8Ú@py_assert7Ú@py_format10Ú@py_format12Ú@py_assert1Ú@py_assert6Ú@py_assert9Ú@py_format11Ú@py_format13Ú@py_assert2Ú@py_assert4Ú@py_assert12Ú@py_assert11Ú@py_format14Ú@py_format16Ú@py_format9Ú@py_assert3Ú@py_format8Ú@py_format3Ú@py_format5s                               ÚCD:\Programs\laragon\www\wolf\agent\tests\test_security_hardening.pyÚtest_rsa_signature_verificationr\      s$  € ð
 -€GÜ—.’. Ó)×0Ñ0Ó2€Kð b€KØ2°[Ñ@À;ÑN€FÜ�‰�v˜uÓ%€AÜ�!Ô'Ô):Ó;€GØ×$Ñ$ S¨%Ó0×4Ñ4Ó6€Mä˜GÔ6GÔK\Ñ]ÐeÐaeÐeÐaeÐe×e×e×eÓeÐ]×e×e×e×e×eÕeÔ×e×e×eÑeÔ×e×e×e×e×eÖe˜G×e×e×eÑe˜G×e×e×e×e×eÖe ]×e×e×eÑe ]×e×e×e×e×eÖeÔ6G×e×e×eÑeÔ6G×e×e×e×e×eÖeÔK\×e×e×eÑeÔK\×e×eÕeÐ]×e×eÓeÐae×e×e×e×e×e×eÓeð 0ÐrÔÐ/ÔBSÔWhÑiÐrÐmrÐrÐmrÐr×r×r×rÓrÐi×r×r×r×r×rÕrÔ×r×r×rÑrÔ×r×rÕrÐ/×r×r×r×r×rÔr°×r×r×rÑr°×r×r×r×r×rÖrÔBS×r×r×rÑrÔBS×r×r×r×r×rÖrÔWh×r×r×rÑrÔWh×r×rÕrÐi×r×rÓrÐmr×r×r×r×r×r×rÕrð &*Ðc¨CÐc T¨C¡ZÐcÔ˜GÔ3DÔHYÑZÐcÐ^cÐcÐZÐ^cÐc×c×c×cÔcÐZÐ^c×c×c×c×c×cÕcÔ×c×c×cÑcÔ×c×c×c×c×cÖc˜G×c×c×cÑc˜G×c×cÕc T×c×cÓc¨C×c×c×c×c×cÔcÔ3D×c×c×cÑcÔ3D×c×c×c×c×cÖcÔHY×c×c×cÑcÔHY×c×cÕcÐZ×c×cÓcÐ^c×c×c×c×c×c×c×cÒcð &,Ð5Ô˜G VÓ,Ð5°Ð5Ð,°Ð5×5×5×5Ó5Ð,°×5×5×5×5×5Õ5Ô×5×5×5Ñ5Ô×5×5×5×5×5Ö5˜G×5×5×5Ñ5˜G×5×5Õ5 V×5×5Ó5Ð,×5×5Ó5°×5×5×5×5×5×5Õ5Ø%'Ð1Ô˜G RÓ(Ð1¨EÐ1Ð(¨EÐ1×1×1×1Ó1Ð(¨E×1×1×1×1×1Õ1Ô×1×1×1Ñ1Ô×1×1×1×1×1Ö1˜G×1×1×1Ñ1˜G×1×1Õ1 R×1×1Ó1Ð(×1×1Ó1¨E×1×1×1×1×1×1Õ1ô
 ˜GÓ3Ð<°uÐ<Ð3°uÐ<×<×<×<Ó<Ð3°u×<×<×<×<×<Õ<Ô×<×<×<Ñ<Ô×<×<×<×<×<Ö<˜G×<×<×<Ñ<˜G×<×<×<×<×<Ö< ]×<×<×<Ñ< ]×<×<Õ<Ð3×<×<Ó<°u×<×<×<×<×<×<Ó<Ü¤Ñ,×,×,×,Ò,Ô¤×,×,×,×,×,Õ,Ô×,×,×,Ñ,Ô×,×,×,×,×,Ö,¤×,×,×,Ñ,¤×,×,×,×,×,×,Ó,ó    c                 ó  • Sn Sn[        X5      nUR                  nSoC" U5      oU(       d¯  SS[        R                  " 5       ;   d  [        R
                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  n[        [        R                  " U5      5      eS =n=pEX!:g  o3(       dÛ  [        R                  " SU4SX!45      S[        R                  " 5       ;   d  [        R
                  " U5      (       a  [        R                  " U5      OS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[        X 5      n	X‘:H  o3(       dÛ  [        R                  " SU4SX‘45      S[        R                  " 5       ;   d  [        R
                  " U	5      (       a  [        R                  " U	5      OS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[        R                  " [        5         [        US5      n
X¡:g  o3(       dÛ  [        R                  " SU4SX¡45      S[        R                  " 5       ;   d  [        R
                  " U
5      (       a  [        R                  " U
5      OS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S S S 5        Sn[        X°5      oDU:H  oU(       GdŽ  [        R                  " SU4SXK4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S[        R                  " 5       ;   d  [        R
                  " U 5      (       a  [        R                  " U 5      OS[        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 =pEg ! , (       d  f       GN¹= f)NÚ!fp_test_machine_fingerprint_12345Úwp_agent_secret_token_value_xyzzwp_enc:zLassert %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.startswith
}(%(py4)s)
}Ú	encrypted)r   r   r   r   r,   r.   Útokenr/   r0   r   ©ú==)z%(py0)s == %(py2)sÚ	decryptedÚwrong_fingerprintÚwrong_decryptedÚwp_agent_legacy_plain_token)z9%(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
} == %(py6)sr   Úplaintext_tokenÚfingerprint)r   r   r   r   r   zassert %(py8)sr&   )r   Ú
startswithr;   r<   r9   r=   r>   r?   r@   r:   r   ÚpytestÚraisesÚ	Exception)rj   rb   ra   rK   rW   rF   Ú@py_format7rY   rZ   re   rg   ri   rV   s                r[   Ú test_token_encryption_decryptionrp   3   sÛ  € Ø5€KØ-€Eô ˜eÓ1€IØ×ÑÐ* 	Ð*Ð 	Ó*Ð*Õ*×*×*×*×*×*Ñ*ˆ9×*×*×*Ñ*ˆ9×*×*Õ*Ð×*×*Ó* 	×*×*Ó*Ð*×*×*×*×*×*Ô*ØÑ×××Òˆ9×××××Õˆ9×××Ñˆ9×××××Ö˜×××Ñ˜××××××Òô ˜iÓ5€IØÑ×××Òˆ9×××××Õˆ9×××Ñˆ9×××××Ö˜×××Ñ˜××××××Òô 
�Š”yÕ	!ô (¨	Ð3FÓGˆØÑ'×'×'×'Ò'ˆ×'×'×'×'×'Õ'ˆ×'×'×'Ñ'ˆ×'×'×'×'×'Ö' %×'×'×'Ñ' %×'×'×'×'×'×'Ò'÷	 
"ð 4€OÜ˜Ó6ÐI¸/ÑI×I×I×IÓIÐ6×I×I×I×I×IÕIŒ=×I×I×IÑIŒ=×I×I×I×I×IÖI˜×I×I×IÑI˜×I×I×I×I×IÖI¨+×I×I×IÑI¨+×I×IÕIÐ6×I×I×I×I×IÔI¸/×I×I×IÑI¸/×I×I×I×I×I×IÔI÷ 
"Ö	!ús   ËC4U8Õ8
Vc                 ó¼  • [        5       n  " S S[        R                  5      nU" S5      nU R                  o3" U5      nSoTUL of(       Gd  [        R
                  " SU4SXE45      S[        R                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U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=n=peSo’R                  oIU;   oª(       dº  [        R
                  " SU
4SX”45      [        R                  " U	5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n	=p¤So’R                  oIU;  oª(       dº  [        R
                  " SU
4SX”45      [        R                  " U	5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n	=p¤U" SS5      nU R                  o3" U5      nSoTUL of(       Gd  [        R
                  " SU4SXE45      S[        R                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U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=n=peUR                  S   n	SoÙU:H  oª(       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	=p­U" S5      nU R                  o3" U5      nSoTUL of(       Gd  [        R
                  " SU4SXE45      S[        R                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U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=n=peSo’R                  oIU;   oª(       dº  [        R
                  " SU
4SX”45      [        R                  " U	5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n	=p¤U" S 5      nU R                  o3" U5      nSoTUL of(       Gd  [        R
                  " SU4SXE45      S[        R                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U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=n=peS!o’R                  oIU;  oª(       dº  [        R
                  " SU
4SX”45      [        R                  " U	5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n	=p¤So’R                  oIU;   oª(       dº  [        R
                  " SU
4SX”45      [        R                  " U	5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n	=p¤U" S"S#S$045      nU R                  o3" U5      nSoTUL of(       Gd  [        R
                  " SU4SXE45      S[        R                  " 5       ;   d  [        R                  " U 5      (       a  [        R                  " U 5      OS[        R                  " U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=n=peUR                  S#   n	SoÙU:H  oª(       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	=p­g )%Nc                  ó,   ^ • \ rS rSrSU 4S jjrSrU =r$ )Ú&test_log_redaction.<locals>.MockRecordéQ   © c           	     óJ   >• [         TU ]  S[        R                  SSXS 5        g )NÚtest_loggerzpath/to/fileé
   )ÚsuperÚ__init__ÚloggingÚINFO)ÚselfÚmsgÚargsÚ	__class__s      €r[   rz   Ú/test_log_redaction.<locals>.MockRecord.__init__R   s   ø€ Ü‰GÑ˜]¬G¯L©L¸.È"ÈcÐY]Õ^r]   )ru   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rz   Ú__static_attributes__Ú__classcell__)r€   s   @r[   Ú
MockRecordrs   Q   s   ø† ÷	_õ 	_r]   rˆ   z,Connecting with token: wp_agent_123456789abcTr   )zL%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.filter
}(%(py3)s)
} is %(py8)sÚfÚrec)r   r   r   r!   r&   r*   r#   z***)Úin)z+%(py1)s in %(py5)s
{%(py5)s = %(py3)s.msg
})r   r   r!   zassert %(py7)sr"   Úwp_agent_123456789abc)únot in)z/%(py1)s not in %(py5)s
{%(py5)s = %(py3)s.msg
}zToken is %s)Úwp_agent_123r   zwp_***rc   )z%(py1)s == %(py4)s)r   r   zassert %(py6)sr   z Failed with password=secret_passzpassword=***z'Authorization: Bearer my_jwt_token_hereÚmy_jwt_token_herez Register body: %(install_token)sÚinstall_tokenÚwp_install_123)r   r{   Ú	LogRecordÚfilterr9   r:   r;   r<   r=   r>   r?   r@   r~   r   )r‰   rˆ   rŠ   rK   rQ   rH   rL   rV   rN   Ú@py_assert0rP   Ú@py_format6rX   rW   rZ   ro   s                   r[   Útest_log_redactionr–   L   so  € äÓ€Aô_”W×&Ñ&ô _ñ
 ÐCÓ
D€CØ�8‰8Ð ˆ8�C‹=Ð ˜DÐ ˜DÐ × × × Ó ˆ=× × × × × Õ ˆ1× × × Ñ ˆ1× × Õ ˆ8× × × × × Ô �C× × × Ñ �C× × Õ ˆ=× × Ó ˜D× × × × × × Õ ØÐ—G‘GÐ�GÑ×××Òˆ5××Ôˆ5×××××Ô�C×××Ñ�C××Õ�G××××××ÓØ"Ð1¯'©'Ð1¨'Ñ1×1×1×1Ò1Ð"×1×1Ô1Ð"×1×1×1×1×1Ô1¨#×1×1×1Ñ1¨#×1×1Õ1¨'×1×1×1×1×1×1Ó1ñ �]Ð$5Ó
6€CØ�8‰8Ð ˆ8�C‹=Ð ˜DÐ ˜DÐ × × × Ó ˆ=× × × × × Õ ˆ1× × × Ñ ˆ1× × Õ ˆ8× × × × × Ô �C× × × Ñ �C× × Õ ˆ=× × Ó ˜D× × × × × × Õ Ø�8‰8�A‰;Ð"˜(Ð"˜(Ñ"×"×"×"Ò"ˆ;×"×"Ô"ˆ;×"×"Ó"˜(×"×"×"×"×"×"Ó"ñ Ð7Ó
8€CØ�8‰8Ð ˆ8�C‹=Ð ˜DÐ ˜DÐ × × × Ó ˆ=× × × × × Õ ˆ1× × × Ñ ˆ1× × Õ ˆ8× × × × × Ô �C× × × Ñ �C× × Õ ˆ=× × Ó ˜D× × × × × × Õ ØÐ$ŸW™WÐ$˜WÑ$×$×$×$Ò$ˆ>×$×$Ô$ˆ>×$×$×$×$×$Ô$˜S×$×$×$Ñ$˜S×$×$Õ$˜W×$×$×$×$×$×$Ó$ñ Ð>Ó
?€CØ�8‰8Ð ˆ8�C‹=Ð ˜DÐ ˜DÐ × × × Ó ˆ=× × × × × Õ ˆ1× × × Ñ ˆ1× × Õ ˆ8× × × × × Ô �C× × × Ñ �C× × Õ ˆ=× × Ó ˜D× × × × × × Õ ØÐ-§g¡gÐ- gÑ-×-×-×-Ò-Ð×-×-Ô-Ð×-×-×-×-×-Ô- c×-×-×-Ñ- c×-×-Õ- g×-×-×-×-×-×-Ó-ØÐ—G‘GÐ�GÑ×××Òˆ5××Ôˆ5×××××Ô�C×××Ñ�C××Õ�G××××××Óñ Ð7¸?ÐL\Ð:]Ð9_Ó
`€CØ�8‰8Ð ˆ8�C‹=Ð ˜DÐ ˜DÐ × × × Ó ˆ=× × × × × Õ ˆ1× × × Ñ ˆ1× × Õ ˆ8× × × × × Ô �C× × × Ñ �C× × Õ ˆ=× × Ó ˜D× × × × × × Õ Ø�8‰8�OÑ$Ð0¨Ð0¨Ñ0×0×0×0Ò0Ð$×0×0Ô0Ð$×0×0Ó0¨×0×0×0×0×0×0Ô0r]   c                 ó6  • [         R                  " 5        n [        U 5      n[        S00 SS_SS_SS_SS_S	S
_SS_SS_SS_SS_SS_SS
_SS_SS_SS_SUS-  _SUS-  _SUS-  _S US!-  _6n[	        U5        [
        R                  S":w  Gat  So1U-  oDR                  oU" 5       ofR                  nS#o‡U-  n	S$o©U
:H  o»(       G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      [        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=n=n=n=n	=pºSo1U-  oDR                  oU" 5       ofR                  nS#o‡U-  n	S$o©U
:H  o»(       G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      [        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=n=n=n=n	=pºS!o1U-  oDR                  oU" 5       ofR                  nS#o‡U-  n	S$o©U
:H  o»(       G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      [        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=n=n=n=n	=pºSo1U-  nS+oTU-  ofR                  oî" 5       oÿR                  nS#nUU-  nS$nUU:H  nU(       Gd$  [        R                  " S%U4S,UU45      S'[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS'[        R                  " U5      [        R                  " U5      [        R                  " U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=n=n=n=n=n=n=nnS S S 5        g ! , (       d  f       g = f)1NÚapi_urlzhttps://api.wolfpanel.netÚrelease_channelÚstableÚ	server_idÚ123Úagent_versionz0.1.0Úheartbeat_intervalé<   Úapi_mockTÚconnect_urlr+   Ú
mysql_userÚrootÚmysql_passwordÚmysql_socketÚupdate_timeoutÚbackup_retentioné   Úupdate_retentioné   Údownload_timeouté   Úetc_dirÚetcÚopt_dirÚoptÚvar_dirÚvarÚlog_dirÚlogÚntiÿ  iÀ  rc   )zz(%(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = (%(py0)s / %(py2)s).stat
}()
}.st_mode
} & %(py11)s) == %(py15)sÚbase)r   r   r!   r"   r   r    r(   zassert %(py17)sÚpy17Úsecrets)zŠ(%(py12)s
{%(py12)s = %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = ((%(py0)s / %(py2)s) / %(py5)s).stat
}()
}.st_mode
} & %(py14)s) == %(py18)s)r   r   r!   r&   r#   r$   Úpy14Úpy18zassert %(py20)sÚpy20ru   )ÚtempfileÚTemporaryDirectoryr   r   r   ÚosÚnameÚstatÚst_moder9   r:   r;   r<   r=   r>   r?   r@   )Útmpr¶   ÚcfgrK   rW   rQ   rL   rG   Ú@py_assert10rR   Ú@py_assert14Ú@py_assert13rU   Ú@py_format18rH   rM   rS   Ú@py_assert15Ú@py_assert17Ú@py_assert16Ú@py_format19Ú@py_format21s                         r[   Ú test_least_privilege_permissionsrÍ   q   s]  € Ü	×	$Ò	$Ô	&¨#Ü�C‹yˆÜò 
Ù/ð
á$ð
ñ ð
ñ "ð	
ñ
  "ð
ñ ð
ñ ð
ñ ð
ñ ð
ñ ð
ñ ð
ñ ð
ñ ð
ñ  ð
ð ˜5’Lð
ð  ˜5’Lð!
ð" ˜5’Lð#
ð$ ˜5’Lð%
ˆô, 	�CÔô �7‰7�dŒ?Ø ÐA˜5‘LÐA×&Ñ&ÐAÐ&Ó(ÐA×0Ñ0ÐA°5ÐA°5Ñ8ÐA¸EÐA¸EÑA×A×A×AÓAÐ8×A×A×A×A×AÕA�D×A×A×AÑA�D×A×AÕA˜5×A×AÓAÐ&×A×AÓAÐ(×A×AÓAÐ0×A×AÓA°5×A×AÓA¸E×A×A×A×A×A×A×A×AØ ÐA˜5‘LÐA×&Ñ&ÐAÐ&Ó(ÐA×0Ñ0ÐA°5ÐA°5Ñ8ÐA¸EÐA¸EÑA×A×A×AÓAÐ8×A×A×A×A×AÕA�D×A×A×AÑA�D×A×AÕA˜5×A×AÓAÐ&×A×AÓAÐ(×A×AÓAÐ0×A×AÓA°5×A×AÓA¸E×A×A×A×A×A×A×A×AØ ÐA˜5‘LÐA×&Ñ&ÐAÐ&Ó(ÐA×0Ñ0ÐA°5ÐA°5Ñ8ÐA¸EÐA¸EÑA×A×A×AÓAÐ8×A×A×A×A×AÕA�D×A×A×AÑA�D×A×AÕA˜5×A×AÓAÐ&×A×AÓAÐ(×A×AÓAÐ0×A×AÓA°5×A×AÓA¸E×A×A×A×A×A×A×A×AØ ÐM˜5‘LÐM 9ÐM 9Ñ,ÐM×2Ñ2ÐMÐ2Ó4ÐM×<Ñ<ÐM¸uÐMÐ<¸uÑDÐMÈÐMÐDÈÑM×M×M×MÔMÐDÈ×M×M×M×M×MÕM�D×M×M×MÑM�D×M×MÕM˜5×M×MÓM 9×M×MÓMÐ2×M×MÓMÐ4×M×MÓMÐ<×M×MÓM¸u×M×MÓMÈ×M×M×M×M×M×M×M×MÔM÷? 
'×	&Ö	&ús   –W+X
Ø

X)"Ú
__future__r   Úbuiltinsr;   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter9   r{   r¾   r¼   Úpathlibr   r1   rl   Úupdater   r   r   r   r	   r
   Úidentityr   r   r   Úloggerr   Úconfigr   r\   rp   r–   rÍ   ru   r]   r[   Ú<module>rØ      sH   ðÝ "ç  „ ƒÛ 	Û Ý Û ã ç y× yß >Ñ >Ý "Ý ò-òDJò2"1óJ Nr]   