can definitely register as a source
This commit is contained in:
@@ -8,6 +8,8 @@ from openapi_core import OpenAPI
|
|||||||
|
|
||||||
from wf_authoring import NodeReturn
|
from wf_authoring import NodeReturn
|
||||||
from wf_core import RuntimeContext
|
from wf_core import RuntimeContext
|
||||||
|
from wf_mcp.broker import WfMcpService
|
||||||
|
from wf_mcp.storage import FileStore
|
||||||
from wf_openapi import source as source_module
|
from wf_openapi import source as source_module
|
||||||
from wf_openapi.executor import OpenApiExecutionConfig, OpenApiOperationOutput
|
from wf_openapi.executor import OpenApiExecutionConfig, OpenApiOperationOutput
|
||||||
from wf_openapi.models import OpenApiOperation
|
from wf_openapi.models import OpenApiOperation
|
||||||
@@ -51,6 +53,49 @@ def test_build_openapi_capability_source_exposes_operations_as_node_specs() -> N
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_openapi_source_can_be_registered_and_inspected_by_service(
|
||||||
|
tmp_path: Path,
|
||||||
|
) -> None:
|
||||||
|
service = WfMcpService(store=FileStore(tmp_path / "store"))
|
||||||
|
source = build_openapi_capability_source(
|
||||||
|
source_id="petstore.default",
|
||||||
|
document_path=FIXTURE,
|
||||||
|
base_url="https://api.example.test",
|
||||||
|
)
|
||||||
|
|
||||||
|
service.register_capability_source(source)
|
||||||
|
|
||||||
|
source_summaries = service.list_source_summaries(limit=100)
|
||||||
|
source_by_id = {
|
||||||
|
source_summary["id"]: source_summary
|
||||||
|
for source_summary in source_summaries["sources"]
|
||||||
|
}
|
||||||
|
summary = source_by_id["petstore.default"]
|
||||||
|
assert summary["kind"] == "connection"
|
||||||
|
assert summary["node_spec_count"] == 2
|
||||||
|
assert summary["preview"]["node_specs"] == [
|
||||||
|
"petstore.default.create_pet",
|
||||||
|
"petstore.default.get_pet",
|
||||||
|
]
|
||||||
|
|
||||||
|
inventory = service.inspect_source("petstore.default")
|
||||||
|
assert inventory["capabilities"]["node_specs"] == [
|
||||||
|
"petstore.default.create_pet",
|
||||||
|
"petstore.default.get_pet",
|
||||||
|
]
|
||||||
|
detail_by_name = {
|
||||||
|
detail["name"]: detail
|
||||||
|
for detail in inventory["capabilities"]["node_spec_details"]
|
||||||
|
}
|
||||||
|
get_pet = detail_by_name["petstore.default.get_pet"]
|
||||||
|
assert get_pet["is_async"] is True
|
||||||
|
assert "transport_error" in get_pet["outcomes"]
|
||||||
|
assert (
|
||||||
|
get_pet["input_schema"]["properties"]["path"]["properties"]["petId"]["type"]
|
||||||
|
== "string"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_source_node_passes_operation_config_and_payload_to_execution(
|
def test_source_node_passes_operation_config_and_payload_to_execution(
|
||||||
monkeypatch,
|
monkeypatch,
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user