Files
aiturk-hermes-ide/tests/plugins/test_a2a_schema_registration.py
T

56 lines
1.6 KiB
Python

"""Regression tests for A2A client-tool schema registration."""
from __future__ import annotations
import json
from plugins.platforms.a2a import tools as a2a_tools
from tools import tool_search
from tools.registry import ToolRegistry
def test_a2a_call_schema_round_trips_through_tool_describe(monkeypatch):
registry = ToolRegistry()
# The client tools are config-gated now (test_a2a_tools_gate.py):
# open the gate the way a real install would — configure a peer.
monkeypatch.setattr(
a2a_tools,
"_load_config",
lambda: {"a2a_agents": {"peer": {"url": "http://localhost:9999"}}},
)
class _Context:
def register_tool(self, name, toolset, schema, handler, **kwargs):
registry.register(
name=name,
toolset=toolset,
schema=schema,
handler=handler,
**kwargs,
)
a2a_tools.register_tools(_Context())
definitions = registry.get_definitions({"a2a_call"})
monkeypatch.setattr(
tool_search,
"is_deferrable_tool_name",
# #97979 added the defer_tools positional (curated-set override).
lambda name, defer_tools=None: name == "a2a_call",
)
described = json.loads(
tool_search.dispatch_tool_describe(
{"names": ["a2a_call"]},
current_tool_defs=definitions,
)
)["tools"]["a2a_call"]
assert described["description"]
assert described["parameters"]["required"] == ["agent", "message"]
assert set(described["parameters"]["properties"]) == {
"agent",
"message",
"context_id",
}