File size: 1,392 Bytes
7e9a520 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | """Tests for approval gate behavior."""
import asyncio
def test_approval_policy_mapping():
from agents.approval import approval_mode_for_severity
assert approval_mode_for_severity("P0") == "manual"
assert approval_mode_for_severity("P1") == "approve"
assert approval_mode_for_severity("P2") == "auto"
assert approval_mode_for_severity("P3") == "auto"
assert approval_mode_for_severity("UNKNOWN") == "approve"
def test_approval_gate_approve_roundtrip():
from agents.approval import ApprovalGate
gate = ApprovalGate(timeout_seconds=2)
req = gate.request("inc-1", "P1", "rollback checkoutservice")
cb = gate.callback(req.token, "approved", approved_by="hari")
assert cb["ok"] is True
result = asyncio.run(gate.wait_for_decision("inc-1"))
assert result["status"] == "approved"
assert result["approved_by"] == "hari"
def test_approval_gate_timeout():
from agents.approval import ApprovalGate
gate = ApprovalGate(timeout_seconds=1)
gate.request("inc-timeout", "P1", "scale service")
result = asyncio.run(gate.wait_for_decision("inc-timeout"))
assert result["status"] == "timeout"
def test_approval_callback_rejects_unknown_token():
from agents.approval import ApprovalGate
gate = ApprovalGate(timeout_seconds=1)
result = gate.callback("missing-token", "approved")
assert result["ok"] is False
|