95 lines
2.5 KiB
Python
95 lines
2.5 KiB
Python
from __future__ import annotations
|
|
|
|
import asyncio
|
|
|
|
import pytest
|
|
|
|
from personal_mcp import mcp as mcp_module
|
|
|
|
|
|
def _listed_tool_names() -> set[str]:
|
|
tools = asyncio.run(mcp_module.mcp.list_tools())
|
|
return {tool.name for tool in tools}
|
|
|
|
|
|
@pytest.fixture
|
|
def listed_tool_names() -> set[str]:
|
|
return _listed_tool_names()
|
|
|
|
|
|
def test_canonical_step6_tools_are_listed(listed_tool_names: set[str]) -> None:
|
|
assert {
|
|
"list_resources",
|
|
"read_resource",
|
|
"search_patterns",
|
|
"get_pattern_by_id",
|
|
"get_skill_document_by_id",
|
|
"search_prompts",
|
|
"get_prompt_by_id",
|
|
}.issubset(listed_tool_names)
|
|
|
|
|
|
def test_catalog_compatibility_alias_tools_are_listed(
|
|
listed_tool_names: set[str],
|
|
) -> None:
|
|
assert {
|
|
"catalog_search_patterns",
|
|
"catalog_get_pattern_by_id",
|
|
"catalog_get_skill_document_by_id",
|
|
"catalog_search_prompts",
|
|
"catalog_get_prompt_by_id",
|
|
}.issubset(listed_tool_names)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"skill_id",
|
|
[mcp_module.REGISTRY.skills_in_load_order[0], "missing-step6-skill"],
|
|
)
|
|
def test_skill_document_alias_matches_canonical_payload(skill_id: str) -> None:
|
|
canonical = mcp_module.get_skill_document_by_id(skill_id)
|
|
alias = mcp_module.catalog_get_skill_document_by_id(skill_id)
|
|
|
|
assert alias == canonical
|
|
|
|
|
|
def test_search_and_pattern_aliases_match_canonical_payloads() -> None:
|
|
search_canonical = mcp_module.search_patterns(
|
|
query="mcp",
|
|
tags=[],
|
|
skip=0,
|
|
limit=5,
|
|
)
|
|
search_alias = mcp_module.catalog_search_patterns(
|
|
query="mcp",
|
|
tags=[],
|
|
skip=0,
|
|
limit=5,
|
|
)
|
|
assert search_alias == search_canonical
|
|
|
|
sample_skill_id = mcp_module.REGISTRY.skills_in_load_order[0]
|
|
pattern_canonical = mcp_module.get_pattern_by_id(sample_skill_id)
|
|
pattern_alias = mcp_module.catalog_get_pattern_by_id(sample_skill_id)
|
|
assert pattern_alias == pattern_canonical
|
|
|
|
|
|
def test_prompt_aliases_match_canonical_payloads() -> None:
|
|
search_canonical = mcp_module.search_prompts(
|
|
query="test",
|
|
tags=[],
|
|
skip=0,
|
|
limit=5,
|
|
)
|
|
search_alias = mcp_module.catalog_search_prompts(
|
|
query="test",
|
|
tags=[],
|
|
skip=0,
|
|
limit=5,
|
|
)
|
|
assert search_alias == search_canonical
|
|
|
|
sample_prompt_id = mcp_module.REGISTRY.prompts_in_load_order[0]
|
|
prompt_canonical = mcp_module.get_prompt_by_id(sample_prompt_id)
|
|
prompt_alias = mcp_module.catalog_get_prompt_by_id(sample_prompt_id)
|
|
assert prompt_alias == prompt_canonical
|