
    Vjl                    B   d dl mZ d dlZd dlmc 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jB                  jE                  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    t/home/cube/projects/richard/traning coach/.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           
     0   t        |       \  }}t        |       }|dz  }|j                         }t        |dz        }t	        |||d      }|j
                  }d}	||	k(  }
|
st        j                  d|
fd||	f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |	      dz  }t        j                  |j                        d	z   d
|iz  }t        t        j                  |            d x}x}
}	|dz  }t!        j"                  |dz  j%                               }|d   }d}
||
k(  }|slt        j                  d|fd||
f      t        j                  |      t        j                  |
      dz  }dd|iz  }t        t        j                  |            d x}x}}
|d   d   d   }d}
||
k(  }|slt        j                  d|fd||
f      t        j                  |      t        j                  |
      dz  }dd|iz  }t        t        j                  |            d x}x}}
d}||z  }
|
j                  }	 |	       }||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |	      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }t        t        j                  |            d x}x}
x}	x}}|j&                  } |       }
|
 }|sddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |
      dz  }t        t        j                  |            d x}x}
}d}||z  }	t        |	      }||k(  }|s7t        j                  d|fd ||f      d!t        j                         v st        j                  t              rt        j                  t              nd!d"t        j                         v st        j                  |      rt        j                  |      nd"t        j                  |      t        j                  |      d#t        j                         v st        j                  |      rt        j                  |      nd#d$z  }d%d&|iz  }t        t        j                  |            d x}x}	x}}t	        |||d'd(t)        |            }|j
                  }d}	||	k(  }
|
st        j                  d|
fd||	f      d)t        j                         v st        j                  |      rt        j                  |      nd)t        j                  |      t        j                  |	      dz  }t        j                  |j                        d	z   d
|iz  }t        t        j                  |            d x}x}
}	y )*N:data/onboarding/telegram-customer-bootstrap-v1/ledger.jsonr   executer   ==)z2%(py2)s
{%(py2)s = %(py0)s.returncode
} == %(py5)sresultpy0py2py5z
>assert %(py7)spy7'data/profile-reset-archives/fixture-runzmanifest.jsonbootstrap_session_count   )z%(py1)s == %(py4)s)py1py4zassert %(py6)spy6prior_archivesr   z!data/profile-reset-archives/priorzBpayload/data/onboarding/telegram-customer-bootstrap-v1/ledger.jsonzU%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = (%(py0)s / %(py2)s).read_bytes
}()
} == %(py9)sarchivebootstrap_rawrM   rN   rO   rP   py9assert %(py11)spy11zEassert not %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}	bootstrap)rM   rN   rU   z<%(py6)s
{%(py6)s = %(py0)s((%(py1)s / %(py3)s))
} == %(py8)sr   r   other_beforerM   rT   py3rV   py8assert %(py10)spy10verifyz	--archiveverified)r$   r:   r   r   r@   
returncode
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_saferepr_format_assertmsgstderrAssertionError_format_explanationr7   loads	read_textexistsrC   )r!   r   r   rD   r_   rZ   ra   rK   @py_assert1@py_assert4@py_assert3@py_format6@py_format8rY   manifest@py_assert0@py_assert2@py_format5@py_format7@py_assert6@py_assert8@py_format10@py_format12@py_assert5@py_assert7@py_format9@py_format11rh   s                               r   >test_execute_archives_all_authority_and_reaches_empty_baseliner   G   s"   H%MFE"JUUI((*Mux'(L
I6F00!000000000600060000000006==0000000@@Gzz7_4??ABH-.3!3.!3333.!333.333!3333333$%a(0W4WW04WWWWW04WWWW0WWW4WWWWWWWWZyGZZyZffyfhyhlyyyyyhlyyyyyyyGyyyGyyyZyyyfyyyhyyyyyylyyyylyyyyyyyyy!!!!!!!!!!!!y!!!y!!!!!!!!!!!!!0ux03 0 L0000 L00000030003000000u000u000x000 000000L000L000000065*hS\RH4!4!#444!44444484448444444!444X__4444444r   c                d	   t        |       \  }}t        |       }t        |dz        }t        |||d      }t        |||d      }|j                  }|j                  }||k(  }	d}
||
k(  }|	r|st        j                  d|	|fd|||
f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |
      dz  }d	d
|iz  }t        t        j                  |            d x}x}	x}x}}
|j                  }|j                  }||k(  }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}	}d}||z  }t        |      }||k(  }|s7t        j                  d|fd||f      dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }t        t        j                  |            d x}x}x}}d}||z  }	|	j                  } |       }| }
|
sddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dz  }t        t        j                  |            d x}x}	x}x}}
y )NrG   zdry-runr   )rJ   rJ   )zR%(py2)s
{%(py2)s = %(py0)s.returncode
} == %(py7)s
{%(py7)s = %(py5)s.returncode
}z2%(py7)s
{%(py7)s = %(py5)s.returncode
} == %(py9)sonetwor[   r]   r^   rI   )zJ%(py2)s
{%(py2)s = %(py0)s.stdout
} == %(py6)s
{%(py6)s = %(py4)s.stdout
}rM   rN   rU   rV   assert %(py8)srd   r`   r   r   beforerb   re   rf   rQ   Qassert not %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = (%(py0)s / %(py2)s).exists
}()
}rM   rN   rO   rP   )r$   r:   r   r@   ri   rj   rk   rl   rm   rn   ro   rr   rs   stdoutrv   )r!   r   r   rD   r   r   r   rw   r   ry   r   rx   r   r   r   r   r   r~   r   r   s                       r   3test_dry_run_is_byte_non_mutating_and_deterministicr   Z   s   H%MFE"JVVWF
feZ
3C
feZ
3C>>0S^^0>^00q0^q00000>^q00000030003000>000000S000S000^000q0000000::##:####:######3###3###:###################T_vTT_3TU_UY_____UY_______3___3______v___v___T___U______Y____Y________BLBBLBJJLJLLLLLLLLLLLLLLLLLBLLLJLLLLLLL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  }|st!        j"                  d|fd|
|f      dt%        j&                         v st!        j(                  |	      rt!        j*                  |	      ndt!        j*                  |
      t!        j*                  |      dz  }dd|iz  }t-        t!        j.                  |            d x}
x}}d}
||
z  }|j0                  } |       }| }|sddt%        j&                         v st!        j(                  |      rt!        j*                  |      ndt!        j*                  |
      t!        j*                  |      t!        j*                  |      dz  }t-        t!        j.                  |            d x}
x}x}x}}|dvr|j                  }
 |
       }||k(  }|st!        j"                  d|fd||f      d t%        j&                         v st!        j(                  |      rt!        j*                  |      nd t!        j*                  |
      t!        j*                  |      d!t%        j&                         v st!        j(                  |      rt!        j*                  |      nd!d"z  }d#d$|iz  }t-        t!        j.                  |            d x}
x}}y y )%NrG   r   customers/registry.jsonr   z9data/onboarding/telegram-customer-bootstrap-v1/alias.jsonr   i  r   zdata/unknown-authority   xr   r&   z{}
r   @0000000000000000000000000000000000000000000000000000000000000000r)   rH   r   !=z2%(py2)s
{%(py2)s = %(py0)s.returncode
} != %(py5)srK   rL   assert %(py7)srP   rQ   r   r   r   >   r&   r   rI   )zI%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.read_bytes
}()
} == %(py6)sledgerr   r   r   rd   )r$   r:   r   unlink
symlink_tooslinkr    r   r6   r7   rt   ru   r8   r@   ri   rj   rk   rl   rm   rn   ro   rr   rs   rv   )r!   r   r   r   rD   r   r   pr9   rK   rw   rx   ry   rz   r{   r   r   r   r   r   s                       r   !test_fail_closed_without_mutationr   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!!!!!!!!!!!!6!!!6!!!!!!!!!!!!!BLBBLBJJLJLLLLLLLLLLLLLLLLLBLLLJLLLLLLLLLLL**  , ","f,,,,"f,,,,,,v,,,v,,, ,,,",,,,,,f,,,f,,,,,,, +r   c                   t        |       \  }}t        |       }|dz  j                         }t        |||dd      }|j                  }d}||k7  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }	d	d
|	iz  }
t        t        j                  |
            d x}x}}d}||z  }|j                  } |       }||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd|iz  }t        t        j                  |            d x}x}x}x}}d}||z  }|j                  } |       }| }|sddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dz  }t        t        j                  |            d x}x}x}x}}y )Nr   rH   z--test-fail-before-commitr   r   r   rK   rL   r   rP   rI   rX   r   r   r[   r]   r^   rQ   r   r   )r$   r:   r   r@   ri   rj   rk   rl   rm   rn   ro   rr   rs   rv   )r!   r   r   rD   r   rK   rw   rx   ry   rz   r{   r   r   r   r   r   s                   r   +test_injected_precommit_mismatch_rolls_backr      s   H%MFE"J00<<>F
I7RSF!!!!!!!!!!!!6!!!6!!!!!!!!!!!!!.FF..F.::F:<F<FFFF<FFFFFFFFFFFFFF.FFF:FFF<FFFFFFFFFFFFFFFFFBLBBLBJJLJLLLLLLLLLLLLLLLLLBLLLJLLLLLLLLLLLr   )r   r   returnrC   )r!   r   r   ztuple[Path, Path])r!   r   r   r   )r   r   r   r   rD   r   r   rC   rE   rC   r   z subprocess.CompletedProcess[str])r!   r   r   None)r!   r   r   rC   r   r   )%
__future__r   builtinsrl   _pytest.assertion.rewrite	assertionrewriterj   r
   r7   r   r   r?   rA   pathlibr   pytest__file__parentHEREr4   r5   r   r1   r2   r3   r0   r   r$   r:   r@   r   r   markparametrizer   r    r   r   <module>r      s    "     	   
  H~))
((
1
1N	JI89""5&	M #^_- `-2Mr   