37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
from __future__ import annotations
|
|
|
|
from mcp.server.mcpserver import MCPServer
|
|
|
|
from services.runtime.mcp_server import WORKFLOW_PROMPTS, add_workflow_prompts
|
|
|
|
|
|
def test_every_runtime_connector_has_useful_unique_workflow_prompts() -> None:
|
|
all_names: list[str] = []
|
|
for profile in ("knowledge", "gitea", "unraid", "mobilityops"):
|
|
server = MCPServer(f"test-{profile}")
|
|
add_workflow_prompts(server, profile)
|
|
prompts = server._prompt_manager.list_prompts()
|
|
assert len(prompts) == len(WORKFLOW_PROMPTS[profile])
|
|
assert all(prompt.description and len(prompt.description) > 80 for prompt in prompts)
|
|
all_names.extend(prompt.name for prompt in prompts)
|
|
assert len(all_names) == len(set(all_names))
|
|
|
|
|
|
def test_workflow_prompts_are_explicitly_read_only_and_evidence_driven() -> None:
|
|
messages = " ".join(
|
|
message for prompts in WORKFLOW_PROMPTS.values() for _name, _title, message in prompts
|
|
).casefold()
|
|
assert "read-only" in messages or "do not perform a write" in messages
|
|
assert "evidence" in messages
|
|
assert "cite" in messages or "citation" in messages
|
|
|
|
|
|
def test_unknown_workflow_profile_fails_closed() -> None:
|
|
server = MCPServer("unknown")
|
|
try:
|
|
add_workflow_prompts(server, "missing")
|
|
except ValueError as exc:
|
|
assert "unknown workflow" in str(exc)
|
|
else:
|
|
raise AssertionError("unknown workflow profile was accepted")
|