Files
wehub-resource-sync 49b9bb6724
Deploy Docs / deploy-docs (push) Failing after 1s
Conformance Tests / client-conformance (push) Failing after 3s
Conformance Tests / server-conformance (push) Failing after 1s
GitHub Actions Security Analysis / zizmor (push) Failing after 1s
CI / checks (push) Failing after 59m20s
CI / all-green (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 12:10:27 +08:00

57 lines
1.6 KiB
Python

"""The extension-identifier grammar in `mcp.shared.extension`, shared by server and client."""
from typing import Any
import pytest
import mcp.server.extension
import mcp.shared.extension
from mcp.shared.extension import validate_extension_identifier
def test_server_extension_module_reexports_shared_validator() -> None:
"""SDK-defined: `mcp.server.extension` re-exports the shared validator as the same function object."""
assert mcp.server.extension.validate_extension_identifier is mcp.shared.extension.validate_extension_identifier
@pytest.mark.parametrize(
"identifier",
[
"io.modelcontextprotocol/ui",
"com.example/my_ext",
"com.x-y.z2/n.a-b_c",
"example/x",
"a/b",
"com.example/9start",
],
)
def test_grammar_conformant_extension_identifiers_are_accepted(identifier: str) -> None:
"""Spec `_meta` key grammar: conformant `vendor-prefix/name` identifiers are accepted."""
validate_extension_identifier(identifier, owner="T")
@pytest.mark.parametrize(
"identifier",
[
"noprefix",
"-foo/bar",
".leading/x",
"a..b/x",
"foo-/x",
"9foo/x",
"foo/-bar",
"foo/bar-",
"foo/",
"/bar",
"foo/ba r",
"io.modelcontextprotocol/ui\n",
"",
None,
42,
],
)
def test_malformed_extension_identifiers_are_rejected(identifier: Any) -> None:
"""Spec `_meta` key grammar: malformed prefixes, malformed names, and non-strings are rejected."""
with pytest.raises(TypeError):
validate_extension_identifier(identifier, owner="T")