Files
group_fqcd_jr/tests/unit/service/test_agent_factory.py
T

37 lines
1.4 KiB
Python
Raw Normal View History

import pytest
from app.core.contracts import AgentDefinition, AgentRequest, CoreResult, RequestContext
from app.core.errors import ValidationAgentError
from app.service.agent.base import BaseAgent
from app.service.agent.factory import AgentFactory
class DemoAgent(BaseAgent):
async def handle(self, request: AgentRequest, context: RequestContext) -> CoreResult:
return CoreResult(text=request.message)
def test_factory_creates_registered_agent() -> None:
definition = AgentDefinition(agent_type="demo", version="1",
allowed_roles=("customer",), allowed_portals=("api",))
factory = AgentFactory()
factory.register(definition, lambda _: DemoAgent(definition))
agent = factory.create("demo", RequestContext(user_id="1", trace_id="t1",
roles=("customer",), permissions=("agent:run",)))
assert isinstance(agent, DemoAgent)
def test_factory_rejects_unknown_agent() -> None:
with pytest.raises(ValidationAgentError):
AgentFactory().create("unknown", RequestContext(user_id="1", trace_id="t1"))
def test_agent_cannot_override_governance_execute() -> None:
with pytest.raises(TypeError):
class InvalidAgent(BaseAgent):
async def execute(self, request, context, run_id):
yield None
async def handle(self, request, context):
return CoreResult(text="invalid")