HAI-Relay / tests /test_tasks.py
smlflg's picture
Initial public upload from Projekte/HAI-Relay
433dbdf verified
Raw History Blame Contribute Delete
1.91 kB
from __future__ import annotations
from hai_relay.authority import DenyAllAuthority
def task(recipient="gemini", mode="advisory", key="task"):
return {
"recipient": recipient,
"body": "inspect one artifact",
"idempotency_key": key,
"kind": "task",
"mission_id": "mis_1",
"lease_id": "lease_1",
"working_directory": "/tmp",
"operation_mode": mode,
}
def test_task_dispatches_after_authority(service):
result = service.send("codex", task())["message"]
assert result["status"] == "completed"
assert result["result"]["text"] == "gemini:ok"
def test_authority_unavailable_fails_closed(service):
service.authority = DenyAllAuthority()
result = service.send("codex", task(key="blocked"))["message"]
assert result["status"] == "blocked"
assert result["result"]["code"] == "authority_denied"
def test_state_change_requires_guarded_claude(service):
service.authority.assurance = "guarded"
wrong_target = service.send(
"codex", task(recipient="gemini", mode="state_changing", key="wrong")
)["message"]
assert wrong_target["status"] == "blocked"
assert wrong_target["result"]["code"] == "write_denied"
allowed = service.send(
"codex", task(recipient="claude", mode="state_changing", key="allowed")
)["message"]
assert allowed["status"] == "completed"
def test_denied_authority_does_not_dispatch(service):
service.authority.allowed = False
result = service.send("codex", task(key="denied"))["message"]
assert result["status"] == "blocked"
assert not service.dispatcher.calls
def test_cancel_pending_task(service):
service.authority.allowed = False
message = service.send("codex", task(key="cancel"))["message"]
cancelled = service.cancel_task("codex", message["message_id"])["message"]
assert cancelled["status"] == "cancelled"