Reject advisory policy envelopes before lifecycle effects
Assistant: codex Assistant-Model: gpt-6.1-sol Assistant-Session: 01a126e1-76f8-7643-8cf3-e93336539ade
This commit is contained in:
parent
caab9a90ec
commit
1e0df2f4a3
13 changed files with 2854 additions and 0 deletions
|
|
@ -113,3 +113,17 @@ def test_transport_and_missing_caller_have_typed_observations():
|
|||
client=policy(Broken());assert client.check(request()).outcome=="policy_unavailable"
|
||||
client.token_provider=lambda:None
|
||||
assert client.check(request()).outcome=="caller_unavailable"
|
||||
|
||||
|
||||
@pytest.mark.parametrize("purpose", ["", "readback", "enforcement", "unknown", None, False, 0, [], {}])
|
||||
def test_binding_purpose_only_allows_exact_enforcement_form(purpose):
|
||||
transport = PolicyTransport()
|
||||
transport.change = lambda d: d["binding"].update(purpose=purpose)
|
||||
observed = policy(transport).check(request())
|
||||
if type(purpose) is str and purpose == "":
|
||||
observed.require_current(time.time())
|
||||
assert json.loads(observed.decision_json)["binding"]["purpose"] == ""
|
||||
else:
|
||||
assert observed.outcome == "invalid_decision" and observed.decision_json is None
|
||||
with pytest.raises(PolicyError):
|
||||
observed.require_current(time.time())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue