from pathlib import Path
import json
R=Path(__file__).resolve().parent
cases=json.loads((R/'fixtures/cases.json').read_text(encoding='utf-8'))['cases']
assert len(cases)==8
ids={c['id'] for c in cases}; assert len(ids)==8
for c in cases:
    assert c['grant_method'] in ('GET','PUT')
    assert c['request_method'] in ('GET','PUT')
    assert c['nominal_expiry_min']>0 and c['credential_valid_min']>0
    assert c['grant_resource'] and c['request_resource']
assert any(c.get('url_logged_full') for c in cases)
assert any(c['http_result']==200 and c.get('received_digest') not in (None,c.get('expected_digest')) for c in cases)
assert any(c.get('expected_digest') is None for c in cases)
assert any(c['grant_method']!=c['request_method'] for c in cases)
assert any(c.get('transfer') for c in cases)
print('PASS 8/8 synthetic presigned-transfer fixture checks')
