
    Vjl                    (   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
Z
 e	e      j                  Zedz  Zedz  Zedz  ZdZdZd	Zd
ZddZddZddZddZddZddZe
j6                  j9                  dg d      dd       ZddZy)    )annotationsN)Pathzreset_controller.pyzschema-contract.jsonzfixtures/current-empty-profile@2e0894eac92bc396cc4723bf1f18ebc653b95018dd41574df435941c235da925@af4a9d0a1ffffb6eb7551c1d6dc2b32853ca6d024332a4f8f5702bbf992f141b@7ace03c6dad33d2fc3ef223621cbca68a150fde8429932138e252fb8498ac582+TASK26_ARCHIVE_FIRST_PROFILE_RESET_APPROVEDc                d    t        j                  | j                               j                         S )N)hashlibsha256
read_bytes	hexdigest)paths    J.omo/evidence/task26/reset-controller-st_01a0054d/test_reset_controller.pyshar      s!    >>$//+,6688    c                L   | dz  }| dz  }t        j                  t        |       |j                  d       |dz  }|j	                  d       |j                  d       |dz  }|d	z  }|j                  d
d       |dz  }|j	                  d       |j                  d       ||fS )Ntargetotheri  )modemarkers   other-profile  data/profile-reset-archivespriorT)parentsr   zevidence.jsons   {}
)shutilcopytreeFIXTUREmkdirwrite_byteschmod)tmp_pathr   r   r   archivesr   evidences          r   profiler$      s     FwE
OOGV$	KKUKXF
'(
LL55HwE	KK5K)&H!NN55=r   c           	         dt         t        t        t        t	        t
              t	        t              dd}| dz  }|j                  t        j                  |d      dz          |j                  d       |S )Nz"task26-profile-reset-permission-v1T)schemaapprovalcandidate_digestwheel_sha256plan_sha256controller_sha256contract_sha256execute_allowedzpermission.json)	sort_keys
r   )APPROVAL	CANDIDATEWHEELPLANr   
CONTROLLERCONTRACT
write_textjsondumpsr    )r!   valuer   s      r   receiptr:   ,   sc    6% _x=	E ''DOODJJu5<=JJuKr   c                $   t        j                  t        j                  t	        t
              |dt	        |       dt	        |      dt	        | dz        dt	        t              dt	        |      dt        dt        d	t        d
t        ddg|ddd      S )Nz	--profilez--other-profilez--archive-rootr   z
--contractz--permissionz--candidatez--wheel-sha256z--plan-sha256z
--approvalz--run-idzfixture-runTF)textcapture_outputcheck)
subprocessrunsys
executablestrr4   r5   r1   r2   r3   r0   )r   r   
permissionr   extras        r   r@   r@   =   s    >>	Z$S[J[]`af]g	3v(EEFVYZbVc	Z-DTV[	$h
M	[ UZ	[ $e r   c           
     N   t        |       \  }}t        |       }|dz  }|j                         }t        |dz        }t	        |||d      }|j
                  dk(  sJ |j                         |dz  }t        j                  |dz  j                               }	|	d   dk(  sJ |	d	   d   d
   dk(  sJ |dz  j                         |k(  sJ |j                         rJ t        |dz        |k(  sJ t	        |||ddt        |            }
|
j
                  dk(  sJ |
j                         y )N:data/onboarding/telegram-customer-bootstrap-v1/ledger.jsonr   executer   'data/profile-reset-archives/fixture-runzmanifest.jsonbootstrap_session_count   prior_archivesr   z!data/profile-reset-archives/priorzBpayload/data/onboarding/telegram-customer-bootstrap-v1/ledger.jsonverifyz	--archive)r$   r:   r   r   r@   
returncodestderrr7   loads	read_textexistsrC   )r!   r   r   rD   	bootstrapbootstrap_rawother_beforeresultarchivemanifestverifieds              r   >test_execute_archives_all_authority_and_reaches_empty_baselinerZ   G   sF   H%MFE"JUUI((*Mux'(L
I6F!06==0!@@Gzz7_4??ABH-.!333$%a(04WWWWZZffhlyyyy!!!ux L00065*hS\RH!#4X__4#r   c                X   t        |       \  }}t        |       }t        |dz        }t        |||d      }t        |||d      }|j                  |j                  cxk(  rdk(  sJ  J |j
                  |j
                  k(  sJ t        |dz        |k(  sJ |dz  j                         rJ y )NrG   zdry-runr   rI   )r$   r:   r   r@   rN   stdoutrR   )r!   r   r   rD   beforeonetwos          r   3test_dry_run_is_byte_non_mutating_and_deterministicr`   Z   s    H%MFE"JVVWF
feZ
3C
feZ
3C>>S^^0q00000::###vTTUY____BBJJLLLLr   attack)symlinkhardlinkr   unknownr&   pinc                *   t        |       \  }}t        |       }|dz  }|j                         }|dk(  r%|j                          |j	                  |dz         n|dk(  rt        j                  ||dz         n|dk(  r|j                  d       n|dk(  r(|d	z  }|j                  d
       |j                  d       n|dk(  r#|j                  d       |j                  d       nb|dk(  r]t        j                  |j                               }d|d<   |j                  t        j                  |             |j                  d       t        |||d      }	|	j                  dk7  sJ |dz  j!                         rJ |dvr|j                         |k(  sJ y y )NrG   rb   customers/registry.jsonrc   z9data/onboarding/telegram-customer-bootstrap-v1/alias.jsonr   i  rd   zdata/unknown-authority   xr   r&   z{}
re   @0000000000000000000000000000000000000000000000000000000000000000r)   rH   r   rI   >   r&   rb   )r$   r:   r   unlink
symlink_tooslinkr    r   r6   r7   rP   rQ   r8   r@   rN   rR   )
r!   ra   r   r   rD   ledgerr]   pr9   rV   s
             r   !test_fail_closed_without_mutationrp   f   s|   H%MFE"JRRF F**64M+MN	:	
!\\]	6	U	9	--q}}T/BAGGEN	8	&!6<<#6	5

://12HE.4Idjj/0*2B2B52I
I6F!!!BBJJLLL**  "f,,, +r   c                    t        |       \  }}t        |       }|dz  j                         }t        |||dd      }|j                  dk7  sJ |dz  j                         |k(  sJ |dz  j                         rJ y )Nrg   rH   z--test-fail-before-commitr   rI   )r$   r:   r   r@   rN   rR   )r!   r   r   rD   r]   rV   s         r   +test_injected_precommit_mismatch_rolls_backrr      s    H%MFE"J00<<>F
I7RSF!!!..::<FFFBBJJLLLLr   )r   r   returnrC   )r!   r   rs   ztuple[Path, Path])r!   r   rs   r   )r   r   r   r   rD   r   r   rC   rE   rC   rs   z subprocess.CompletedProcess[str])r!   r   rs   None)r!   r   ra   rC   rs   rt   )
__future__r   r
   r7   rl   r   r?   rA   pathlibr   pytest__file__parentHEREr4   r5   r   r1   r2   r3   r0   r   r$   r:   r@   rZ   r`   markparametrizerp   rr    r   r   <module>r~      s    "   	   
  H~))
((
1
1N	JI89""5&	M #^_- `-2Mr   