import copy,json,time from datetime import datetime,timezone from informed_decision.policy import PolicyClient,CONTRACT,submitted_digest pin='sha256:'+'b'*64 req={'id':'image-purpose-fixture','tenant':'tenant:platform','subject':{'id':'synthetic','type':'service','tenant':'tenant:platform'},'resource':{'id':'memo:fixture','type':'memo','system':'informed-decision','tenant':'tenant:platform'},'action':'register','context':{}} class Transport: def request(self,*args,**kwargs): now=time.time(); stamp=lambda t:datetime.fromtimestamp(t,timezone.utc).isoformat() b={**copy.deepcopy({k:req[k] for k in ('tenant','subject','action','resource','context')}),'request_digest':'sha256:'+'e'*64,'submitted_request_digest':submitted_digest(req)} if self.purpose!='ABSENT':b['purpose']=self.purpose d={'id':'synthetic-decision','contract_version':CONTRACT,'request_id':req['id'],'effect':'allow','matched_policy_version':'v1','subject':req['subject'],'resource':req['resource'],'binding':b,'lifetime':{'kind':'ttl','not_before':stamp(now-1),'expires_at':stamp(now+60)},'provenance':{'policy_package':'fixture','policy_version':'v1','policy_package_digest':pin,'registry_snapshot_digest':'sha256:'+'c'*64,'evaluator':'flex-auth/fixture','decision_time':stamp(now)}} return 200,d checks=[] for purpose in ('ABSENT','','readback','enforcement','unknown',None,False,0,[],{}): t=Transport();t.purpose=purpose c=PolicyClient('https://fixture.invalid',lambda:'synthetic-only',package='fixture',version='v1',package_digest=pin,transport=t) o=c.check(req) if purpose in ('ABSENT',''):assert o.outcome=='allow';o.require_current(time.time()) else:assert o.outcome=='invalid_decision' and o.decision_json is None checks.append(str(purpose)) print(json.dumps({'installed_image_purpose_variants':len(checks),'binding_forms_allowed':2,'advisory_or_malformed_refused':8,'synthetic_only':True,'native_provider':False}))