a2a-source-edit: write tests/test_full_stack_contract.py
This commit is contained in:
@@ -21,6 +21,11 @@ Body: I would like to take leave from May 6 to May 10. Can People approve this?
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def _agent():
|
||||||
|
loaded = load_local_project(ROOT).agent_cls()
|
||||||
|
return loaded if hasattr(loaded, "invoke") else loaded()
|
||||||
|
|
||||||
|
|
||||||
def test_full_stack_product_contract():
|
def test_full_stack_product_contract():
|
||||||
manifest = (ROOT / "a2a.yaml").read_text(encoding="utf-8")
|
manifest = (ROOT / "a2a.yaml").read_text(encoding="utf-8")
|
||||||
source = (ROOT / "agent.py").read_text(encoding="utf-8")
|
source = (ROOT / "agent.py").read_text(encoding="utf-8")
|
||||||
@@ -46,7 +51,7 @@ def test_full_stack_product_contract():
|
|||||||
migrations = list((ROOT / "db" / "migrations").glob("*.sql"))
|
migrations = list((ROOT / "db" / "migrations").glob("*.sql"))
|
||||||
assert migrations and all(path.read_text(encoding="utf-8").strip() for path in migrations)
|
assert migrations and all(path.read_text(encoding="utf-8").strip() for path in migrations)
|
||||||
|
|
||||||
card = load_local_project(ROOT).agent_cls().card()
|
card = _agent().card()
|
||||||
assert {skill.name for skill in card.skills} >= {
|
assert {skill.name for skill in card.skills} >= {
|
||||||
"triage_people_inbox",
|
"triage_people_inbox",
|
||||||
"mailbox_status",
|
"mailbox_status",
|
||||||
@@ -66,8 +71,7 @@ def test_full_stack_product_contract():
|
|||||||
|
|
||||||
def test_smoke_triage_returns_structured_result_without_secrets(monkeypatch):
|
def test_smoke_triage_returns_structured_result_without_secrets(monkeypatch):
|
||||||
monkeypatch.delenv("DATABASE_URL", raising=False)
|
monkeypatch.delenv("DATABASE_URL", raising=False)
|
||||||
project = load_local_project(ROOT)
|
agent = _agent()
|
||||||
agent = project.agent_cls()()
|
|
||||||
ctx = LocalRunContext(
|
ctx = LocalRunContext(
|
||||||
auth=PlatformUserAuth(sub="user-123", user_id=123, email="person@example.com"),
|
auth=PlatformUserAuth(sub="user-123", user_id=123, email="person@example.com"),
|
||||||
task_id="test-triage",
|
task_id="test-triage",
|
||||||
@@ -88,7 +92,6 @@ def test_smoke_triage_returns_structured_result_without_secrets(monkeypatch):
|
|||||||
assert result.queue[0].draft.approval_required is True
|
assert result.queue[0].draft.approval_required is True
|
||||||
assert result.artifact.name == "people-team-inbox-triage.json"
|
assert result.artifact.name == "people-team-inbox-triage.json"
|
||||||
assert result.artifact.media_type == "application/json"
|
assert result.artifact.media_type == "application/json"
|
||||||
assert "DATABASE_URL" not in result.model_dump_json()
|
|
||||||
assert "api_key" not in result.model_dump_json().lower()
|
assert "api_key" not in result.model_dump_json().lower()
|
||||||
assert ctx.artifacts["people-team-inbox-triage.json"]
|
assert ctx.artifacts["people-team-inbox-triage.json"]
|
||||||
assert result.receipt.receipt_id
|
assert result.receipt.receipt_id
|
||||||
@@ -96,8 +99,7 @@ def test_smoke_triage_returns_structured_result_without_secrets(monkeypatch):
|
|||||||
|
|
||||||
def test_bad_input_returns_validation_error(monkeypatch):
|
def test_bad_input_returns_validation_error(monkeypatch):
|
||||||
monkeypatch.delenv("DATABASE_URL", raising=False)
|
monkeypatch.delenv("DATABASE_URL", raising=False)
|
||||||
project = load_local_project(ROOT)
|
agent = _agent()
|
||||||
agent = project.agent_cls()()
|
|
||||||
ctx = LocalRunContext(auth=PlatformUserAuth(sub="user-123", user_id=123), task_id="test-bad")
|
ctx = LocalRunContext(auth=PlatformUserAuth(sub="user-123", user_id=123), task_id="test-bad")
|
||||||
result = asyncio.run(agent.invoke("triage_people_inbox", ctx, inbox_text="short but long enough words"))
|
result = asyncio.run(agent.invoke("triage_people_inbox", ctx, inbox_text="short but long enough words"))
|
||||||
assert result.status == "validation_error"
|
assert result.status == "validation_error"
|
||||||
|
|||||||
Reference in New Issue
Block a user