chore(mcp,x402): add API-surface snapshot tests before file split
Inventory of public symbols in mcp_production.py and x402.py Snapshot tests ensure backward-compatible re-export shims after split
This commit is contained in:
parent
345cd79bc9
commit
e0c7b67b2d
1 changed files with 86 additions and 0 deletions
86
tests/test_api_surface_snapshot.py
Normal file
86
tests/test_api_surface_snapshot.py
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
"""Snapshot tests for the public MCP and x402 API surfaces.
|
||||||
|
|
||||||
|
These tests guard against accidental breakage when refactoring
|
||||||
|
mcp_production.py and x402.py into sub-packages.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Copyright (c) 2026 Rug Munch Media LLC
|
||||||
|
#
|
||||||
|
# Part of Pry — https://git.rugmunch.io/RugMunchMedia/pryscraper
|
||||||
|
# Licensed under MIT. See LICENSE.
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
class TestMCPPublicSurface:
|
||||||
|
"""The mcp_production shim must expose the same public API as before."""
|
||||||
|
|
||||||
|
def test_required_symbols_exist(self) -> None:
|
||||||
|
import mcp_production
|
||||||
|
|
||||||
|
required = {
|
||||||
|
"DEFAULT_BASE_URL",
|
||||||
|
"MCP_PROTOCOL_VERSION",
|
||||||
|
"SERVER_NAME",
|
||||||
|
"SERVER_VERSION",
|
||||||
|
"MCPLoggingHandler",
|
||||||
|
"PRY_PROMPTS",
|
||||||
|
"PRY_RESOURCES",
|
||||||
|
"PRY_TOOLS",
|
||||||
|
"create_server",
|
||||||
|
"main",
|
||||||
|
"make_fallback_server",
|
||||||
|
"notify_resource_changed",
|
||||||
|
"notify_resource_list_changed",
|
||||||
|
"notify_tool_list_changed",
|
||||||
|
"register_all",
|
||||||
|
"register_mcp_notification_observer",
|
||||||
|
"set_active_mcp_server",
|
||||||
|
"unregister_mcp_notification_observer",
|
||||||
|
}
|
||||||
|
missing = {name for name in required if not hasattr(mcp_production, name)}
|
||||||
|
assert not missing, f"Missing public MCP symbols: {missing}"
|
||||||
|
|
||||||
|
def test_tool_definitions_are_non_empty(self) -> None:
|
||||||
|
import mcp_production
|
||||||
|
|
||||||
|
assert isinstance(mcp_production.PRY_TOOLS, list)
|
||||||
|
assert len(mcp_production.PRY_TOOLS) > 0
|
||||||
|
assert isinstance(mcp_production.PRY_RESOURCES, list)
|
||||||
|
assert isinstance(mcp_production.PRY_PROMPTS, list)
|
||||||
|
|
||||||
|
|
||||||
|
class TestX402PublicSurface:
|
||||||
|
"""The x402 shim must expose the same public API as before."""
|
||||||
|
|
||||||
|
def test_required_symbols_exist(self) -> None:
|
||||||
|
import x402
|
||||||
|
|
||||||
|
required = {
|
||||||
|
"X402Asset",
|
||||||
|
"X402Handler",
|
||||||
|
"X402Network",
|
||||||
|
"X402Scheme",
|
||||||
|
"FacilitatorConfig",
|
||||||
|
"FacilitatorRouter",
|
||||||
|
"build_payment_required",
|
||||||
|
"create_batch_payment",
|
||||||
|
"create_payment_request",
|
||||||
|
"get_facilitator_router",
|
||||||
|
"is_batch_paid",
|
||||||
|
"require_payment_legacy",
|
||||||
|
"set_facilitator_router",
|
||||||
|
"verify_batch_payment",
|
||||||
|
}
|
||||||
|
missing = {name for name in required if not hasattr(x402, name)}
|
||||||
|
assert not missing, f"Missing public x402 symbols: {missing}"
|
||||||
|
|
||||||
|
def test_enum_values_consistent(self) -> None:
|
||||||
|
import x402
|
||||||
|
|
||||||
|
assert x402.X402Scheme.EXACT.value == "exact"
|
||||||
|
assert x402.X402Network.ETHEREUM.value == "ethereum"
|
||||||
|
assert x402.X402Asset.USDC.value == "USDC"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue