
    j              	          d dl Z d dlZd dlZd dlmZ d dlmZ d dlZd dlZd dl	Z
d dl	mZmZmZ d Zd Zd Zej"                  j%                  d e ee                  ej"                  j%                  d	d
      d               Zd Zd Zd Zd Zej"                  j%                  d edd      df ede
j4                        df ede
j4                        dfg      d        Zd Zd Zd Zd Zy)    N)Path)SimpleNamespace)
BOUNDARIESBlockedBoundaryModelc                  ^   t         j                  j                         D  ci c]&  \  } }| t        t         j                  |z        ddd( }} }t        t         j
                        t        t         j                  dz        t        t         j                  dz        t        t         j
                        t        t         j                  dz        t        t         j                        |t         j                  t         j                  t         j                  t         j                  dS c c}} w )N@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)originloaded_sha256wheel_sha256z.venvztelegram/__init__.py)
executableprefixtelegram_originexecstart_pythonservice_virtual_envworking_directorymoduleshermes_wheel_sha256profile_wheel_sha256v4_controller_seal_sha256v4_clean_run_seal_sha256)
controllerMODULE_MEMBERSitemsstrSITE_PACKAGESPYTHONHERMESPROFILE
HERMES_SHAPROFILE_SHAV4_CONTROLLER_SEAL_SHAV4_CLEAN_RUN_SEAL_SHA)namememberr   s      test_launch_controller_v5.pyvalid_recordr'      s    R\  Rk  Rk  Rq  Rq  Rs  t  Rs  BN  BF  HNtJ$<$<v$E FYas{||  RsG  tj//0C
@Q@QT[@[<\qtu  vN  vN  Qg  vg  rh  ~A  BL  BS  BS  ~T  mp  q{  qB  qB  EL  qL  mM  dg  hr  hz  hz  d{  HO  hr  h}  h}  Wa  Wm  Wm  LV  Lm  Lm  KU  Kk  Kk  l  l ts   +D)c                      t               } t        D ]  }| j                  |        | j                  dk(  r| j                  sJ y N   )r   r   crosssent	attemptedmodelboundarys     r&   test_happy_order_exactly_oner1      s8    OEH ::?u..    c                      t        t        t              dz
        D ]I  } t               }t	        j
                  t              5  |j                  t        | dz             d d d        K y # 1 sw Y   VxY wr)   )rangelenr   r   pytestraisesr   r+   )indexr/   s     r&    test_every_order_violation_failsr9      sQ    s:*+]]7#KK
519-. $# ,##s   A))A2	whereside)beforeafterc                    t               }t        d |  D ]  }|j                  |        t        j                  t
              5   |j                  t        |    fi d| di d d d        |j                  dk  sJ y # 1 sw Y   xY w)Ncrash_Tr*   )r   r   r+   r6   r7   RuntimeErrorr,   )r:   r;   r/   r0   s       r&   )test_crash_each_boundary_never_duplicatesrA   !   su     OEv&H '	|	$Ju%AF4&/4)@A 
%::?? 
%	$s    A==Bc                     t               } t        d d D ]  }| j                  |        | j                  d       t        j                  t
              5  | j                  d       d d d        t        j                  t
              5  | j                  dd       d d d        | j                  dk(  sJ y # 1 sw Y   PxY w# 1 sw Y   'xY w)Ninvite_intentinvite_resultT)unknownr   )r   r   r+   r6   r7   r   r,   r.   s     r&   *test_duplicate_and_unknown_are_fail_closedrG   ,   s    OEsOH $	KK 	w	O$ 
 	w	OT2 
 ::??	 
 			s   B5C5B>C
c                     t        j                  t        j                  dz  j	                               } d| d   d   vsJ t        d      }t        dt        d      i      }t        j                  ||      dk(  sJ y )	Nzconfig.yamltoken	platformstelegramTELEGRAMzmemory-only-secret)rI   rJ   )yaml	safe_loadr   r   	read_textr   extract_telegram_credential)rawplatformconfigs      r&   0test_no_config_token_supported_resolver_succeedsrV   8   sw    
..*,,}<GGI
JC#k*:6666
3H
OJ^4_'`aF11&(CG[[[[r2   c                 j   ddd| j                  t        dfd       | j                  t        dfd       t        j                  t        d      5  t        j
                  t        i 	      t        d
             d d d        dddk(  sJ |dz  j                         rJ y # 1 sw Y   )xY w)Nr   preparestartrY   c                  (    j                  dd      S NrY   r*   __setitem___counterss    r&   <lambda>z9test_missing_credential_is_pre_mutation.<locals>.<lambda>B       (:N:NyZ[:\r2   start_runtimec                  (    j                  dd      S NrZ   r*   r]   r_   s    r&   rb   z9test_missing_credential_is_pre_mutation.<locals>.<lambda>C       @T@TU\^_@`r2   zcredential unavailablematchrN   rK   rL   run)setattrr   r6   r7   r   rR   r   exists)monkeypatchtmp_pathra   s     @r&   'test_missing_credential_is_pre_mutationro   @   s    q)H
I/\]
O5`a	w&>	?../LogqNrs 
@1q11115 ((**** 
@	?s   +B))B2c                    t         j                  j                  ddd| j                  t         dfd       | j                  t         dfd       | j                  t         j                  dfd       t	        j
                  t        d	
      5  t        j                          d d d        dddk(  sJ |dz  j                         rJ y # 1 sw Y   )xY w)Nr   rX   rY   c                  (    j                  dd      S r\   r]   r_   s    r&   rb   z7test_missing_resolver_is_pre_mutation.<locals>.<lambda>M   rc   r2   rd   c                  (    j                  dd      S rf   r]   r_   s    r&   rb   z7test_missing_resolver_is_pre_mutation.<locals>.<lambda>N   rg   r2   import_modulec                 >    | dk(  rt        t              S  |       S )Nzhermes_cli.env_loader)__file__)r   ru   )r$   real_imports    r&   rb   z7test_missing_resolver_is_pre_mutation.<locals>.<lambda>O   s?    rv  {R  sROemLn  Mi  Xc  dh  Xi  Mir2   zresolver unavailablerh   rj   )	r   	importlibrs   rk   r6   r7   r   resolver_contractrl   )rm   rn   ra   rv   s     @@r&   %test_missing_resolver_is_pre_mutationry   J   s    &&44Kq)H
I/\]
O5`a
,,o  @i  j	w&<	=$$& 
>1q11115 ((**** 
>	=s   CCzidentity,readinessr*   	wrong_botidusername   c                 B   ddd| j                  t        dfd       | j                  t        dfd       t        j                  t        d      5  t        j
                  ||       d d d        dddk(  sJ |d	z  j                         rJ y # 1 sw Y   )xY w)
Nr   rX   rY   c                  (    j                  dd      S r\   r]   r_   s    r&   rb   zHtest_wrong_identity_or_admin_readiness_is_pre_mutation.<locals>.<lambda>Y   rc   r2   rd   c                  (    j                  dd      S rf   r]   r_   s    r&   rb   zHtest_wrong_identity_or_admin_readiness_is_pre_mutation.<locals>.<lambda>Z   rg   r2   zwrong Telegram bot identityrh   rj   )rk   r   r6   r7   r   validate_network_identityrl   )rm   rn   identity	readinessra   s       @r&   6test_wrong_identity_or_admin_readiness_is_pre_mutationr   V   s    q)H
I/\]
O5`a	w&C	D,,XyA 
E1q11115 ((**** 
E	Ds   BBc                      t        j                  t        dt         j                        d      dt         j                  fk(  sJ y )N*   r{   )r   r   r   BOT_USERNAME r2   r&   'test_valid_identity_and_admin_readinessr   a   sR    //2PZPgPg0hjlmrt  wA  wN  wN  rO  O  O  Or2   c                 j   d}| dz  j                  t        j                  ddd             | dz  j                  d       t        j                  | |       | dz  j                  d	|z          t        j                  t        d
      5  t        j                  | |       d d d        y # 1 sw Y   y xY w)Nz123456:strict-secret-valuezreceipt.jsonTF)credential_resolvedcredential_storedzjournal.txtzTelegram preflight passed
zbad.logzleak=zcredential leakedrh   )
write_textjsondumpsr   assert_secret_absentr6   r7   r   )rn   secrets     r&   -test_secret_never_appears_in_receipts_or_logsr   e   s    )F**4::din6o+pq))*GH##Hf5	%%g&67	w&9	:''&9 
;	:	:s   	B))B2c                      t        j                  t                     } d| d<   t        j                  t
        d      5  t        j                  |        d d d        y # 1 sw Y   y xY w)N/usr/bin/python3r   zwrong interpreterrh   )copydeepcopyr'   r6   r7   r   r   validate_interpreter_record)rows    r&   test_interpreter_drift_rejectedr   o   sE    
--
'C*C	w&9	:..s3 
;	:	:s   AA&c                 :   | dz  }t        j                  dt        t        t        j
                        j                               ddt        |      dt        | dz        gddd	      }|j                  d
k(  sJ d|j                  v sJ |j                         rJ y )Nzmust-not-existr   zdry-runz--rootz--permissionnoneTF)textcapture_outputcheckr~   z#wrong interpreter: /usr/bin/python3)

subprocessrj   r   r   r   ru   resolve
returncodestderrrl   )rn   rootresults      r&   )test_usr_bin_python_rejected_without_rootr   v   s    &&D^^/T*:M:M5N5V5V5X1Y[dfnpstxpy  |J  LO  PX  [a  Pa  Lb  c  jn  C  KP  QF!!!0FMMAAA{{}}r2   ) r   r   r   pathlibr   typesr   r6   rO   launch_controller_v5r   r   r   r   r'   r1   r9   markparametrizer4   r5   rA   rG   rV   ro   ry   r   r   r   r   r   r   r   r2   r&   <module>r      sK       !   ) C Cl
// %J"89!45 6 :	\+	+ -AP[1\^_0`crvw  CM  CZ  CZ  d[  ]^  c_  bq  uy  DN  D[  D[  b\  ^b  ac  0d  e+ e+O:4r2   