from pathlib import Path
import json
from gate_rules import expected,expected_transfer,inspect_transfer
R=Path(__file__).parent
def load(p): return json.loads((R/p).read_text())
checks=[
('baseline.json','PUBLISH_REVIEW_REQUIRED'),
('missing_publish_scope.json','HOLD_PUBLISH_SCOPE'),
('revoked_after_approval.json','HOLD_REVOKED'),
('expired_token_no_refresh.json','HOLD_TOKEN_REAUTH'),
('stale_consent.json','HOLD_CONSENT'),
('content_changed_after_approval.json','HOLD_CONTENT_APPROVAL'),
('organization_role_missing.json','HOLD_ACTOR_AUTHORITY'),
('stale_provider_version.json','HOLD_PROVIDER_VERSION'),
('identity_binding_missing.json','HOLD_IDENTITY_BINDING'),
('token_secret_exposed.json','HOLD_TOKEN_SECURITY'),
('missing_audit_provenance.json','HOLD_AUDIT_PROVENANCE')]
for i,(n,e) in enumerate(checks,1):
 a=expected(load('fixtures/'+n)); assert a==e,(n,a,e); print('PASS',i,n,a)
t=load('transfer/transfer_fixture.json'); assert expected_transfer(t)=='PUBLISH_REVIEW_REQUIRED'; print('PASS 12 transfer',expected_transfer(t))
b=load('transfer/transfer_baseline_oracle_reuse.json'); assert expected_transfer(b)=='HOLD_BASELINE_ORACLE_REUSE'; assert 'BASELINE_ORACLE_REUSE_FORBIDDEN' in inspect_transfer(b)
print('12/12 PASS')
