test org 3
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
|
||||
from wf_mcp.broker import WfMcpService
|
||||
from wf_mcp.models import ConnectionConfig
|
||||
from wf_mcp.storage import FileStore
|
||||
|
||||
from ..test_support import (
|
||||
FakeAdapter,
|
||||
local_temp_root,
|
||||
)
|
||||
from .conftest import ContentOnlyOutputAdapter
|
||||
|
||||
|
||||
def test_service_catalog_preserves_json_schema_description_metadata() -> None:
|
||||
service = WfMcpService(store=FileStore(local_temp_root() / "schema_doc_store"))
|
||||
service.register_connection(
|
||||
ConnectionConfig(id="demo.personal", server="demo", account="personal")
|
||||
)
|
||||
service.register_adapter("demo", FakeAdapter())
|
||||
|
||||
asyncio.run(service.refresh_connection_catalog("demo.personal"))
|
||||
|
||||
payload = service.get_catalog().as_payload()
|
||||
node = payload["nodes"][0]
|
||||
assert node["input_schema"]["properties"]["text"]["description"] == "Text to echo"
|
||||
|
||||
|
||||
def test_service_preserves_content_only_tool_output_schema_for_workflows() -> None:
|
||||
service = WfMcpService(store=FileStore(local_temp_root() / "content_only_store"))
|
||||
service.register_connection(
|
||||
ConnectionConfig(
|
||||
id="everything.default", server="everything", account="default"
|
||||
)
|
||||
)
|
||||
service.register_adapter("everything", ContentOnlyOutputAdapter())
|
||||
|
||||
asyncio.run(service.refresh_connection_catalog("everything.default"))
|
||||
|
||||
payload = service.get_catalog().as_payload()
|
||||
node = payload["nodes"][0]
|
||||
assert "content" in node["output_schema"]["properties"]
|
||||
assert node["output_schema"]["required"] == ["content"]
|
||||
|
||||
|
||||
def test_service_wrapped_tool_adapter_model_validates_simple_schema_types() -> None:
|
||||
service = WfMcpService(store=FileStore(local_temp_root() / "adapter_model_store"))
|
||||
service.register_connection(
|
||||
ConnectionConfig(id="demo.personal", server="demo", account="personal")
|
||||
)
|
||||
service.register_adapter("demo", FakeAdapter())
|
||||
|
||||
asyncio.run(service.refresh_connection_catalog("demo.personal"))
|
||||
|
||||
source = service.capability_sources["demo.personal"]
|
||||
spec = source.capabilities.node_specs["demo.personal.echo_tool"]
|
||||
assert spec.input_model.model_fields["text"].annotation is str
|
||||
assert spec.output_model.model_fields["echoed"].annotation is str
|
||||
Reference in New Issue
Block a user