chore: tighten mcp source typing
This commit is contained in:
@@ -104,7 +104,11 @@ def test_combined_catalog_sorts_entries_and_serializes_payload() -> None:
|
||||
first = snapshot_from_specs(
|
||||
"zeta.default",
|
||||
specs={"echo": _echo_spec()},
|
||||
resources=[DiscoveredResource(uri="zeta://guide", name="guide", title=None, description=None)],
|
||||
resources=[
|
||||
DiscoveredResource(
|
||||
uri="zeta://guide", name="guide", title=None, description=None
|
||||
)
|
||||
],
|
||||
prompts=[DiscoveredPrompt(name="prompt", title=None, description=None)],
|
||||
metadata={"order": "second"},
|
||||
fetched_at_epoch_ms=2,
|
||||
@@ -113,7 +117,11 @@ def test_combined_catalog_sorts_entries_and_serializes_payload() -> None:
|
||||
second = snapshot_from_specs(
|
||||
"alpha.default",
|
||||
specs={"echo": _echo_spec()},
|
||||
resources=[DiscoveredResource(uri="alpha://guide", name="guide", title=None, description=None)],
|
||||
resources=[
|
||||
DiscoveredResource(
|
||||
uri="alpha://guide", name="guide", title=None, description=None
|
||||
)
|
||||
],
|
||||
prompts=[DiscoveredPrompt(name="prompt", title=None, description=None)],
|
||||
metadata={"order": "first"},
|
||||
fetched_at_epoch_ms=1,
|
||||
|
||||
@@ -6,6 +6,7 @@ from dataclasses import dataclass
|
||||
from typing import Any
|
||||
|
||||
import pytest
|
||||
from pydantic import AnyHttpUrl
|
||||
|
||||
from wf_sources_mcp.auth import AuthRecord
|
||||
from wf_sources_mcp.client.transport import open_mcp_session
|
||||
@@ -35,9 +36,7 @@ async def _fake_streamable_http_client(
|
||||
|
||||
|
||||
@asynccontextmanager
|
||||
async def _fake_client_session(
|
||||
read: Any, write: Any
|
||||
) -> AsyncIterator[_FakeSession]:
|
||||
async def _fake_client_session(read: Any, write: Any) -> AsyncIterator[_FakeSession]:
|
||||
yield _FakeSession()
|
||||
|
||||
|
||||
@@ -70,7 +69,7 @@ def _http_connection(
|
||||
provider="test",
|
||||
account="server",
|
||||
transport=HttpSourceTransport(
|
||||
url=url,
|
||||
url=AnyHttpUrl(url),
|
||||
headers=headers or {},
|
||||
),
|
||||
)
|
||||
@@ -90,6 +89,7 @@ async def test_stdio_session_initializes_before_yielding() -> None:
|
||||
connection = _stdio_connection()
|
||||
|
||||
async with open_mcp_session(connection, None) as session:
|
||||
assert isinstance(session, _FakeSession)
|
||||
assert session.initialized is True
|
||||
|
||||
|
||||
@@ -116,6 +116,7 @@ async def test_stdio_env_merges_transport_and_auth_wins_on_duplicate() -> None:
|
||||
mod.stdio_client = _capturing_stdio_client # type: ignore[assignment]
|
||||
|
||||
async with open_mcp_session(connection, auth) as session:
|
||||
assert isinstance(session, _FakeSession)
|
||||
assert session.initialized is True
|
||||
|
||||
params = captured_params[0]
|
||||
@@ -142,6 +143,7 @@ async def test_stdio_cwd_propagated_to_server_parameters() -> None:
|
||||
mod.stdio_client = _capturing_stdio_client # type: ignore[assignment]
|
||||
|
||||
async with open_mcp_session(connection, None) as session:
|
||||
assert isinstance(session, _FakeSession)
|
||||
assert session.initialized is True
|
||||
|
||||
assert captured_params[0].cwd == "/workspace"
|
||||
@@ -152,6 +154,7 @@ async def test_http_session_initializes_before_yielding() -> None:
|
||||
connection = _http_connection()
|
||||
|
||||
async with open_mcp_session(connection, None) as session:
|
||||
assert isinstance(session, _FakeSession)
|
||||
assert session.initialized is True
|
||||
|
||||
|
||||
@@ -184,6 +187,7 @@ async def test_http_auth_headers_passed_to_client(
|
||||
monkeypatch.setattr(mod, "httpx", _PatchedHttpx())
|
||||
|
||||
async with open_mcp_session(connection, auth) as session:
|
||||
assert isinstance(session, _FakeSession)
|
||||
assert session.initialized is True
|
||||
|
||||
assert len(captured_clients) == 1
|
||||
|
||||
@@ -48,9 +48,7 @@ def test_stdio_source_transport_is_typed() -> None:
|
||||
|
||||
|
||||
def test_http_source_transport_is_typed() -> None:
|
||||
transport = HttpSourceTransport.model_validate(
|
||||
{"url": "http://127.0.0.1:8000/mcp"}
|
||||
)
|
||||
transport = HttpSourceTransport.model_validate({"url": "http://127.0.0.1:8000/mcp"})
|
||||
|
||||
assert transport.kind == "http"
|
||||
assert str(transport.url) == "http://127.0.0.1:8000/mcp"
|
||||
|
||||
@@ -155,7 +155,9 @@ class _BrokenResourceAdapter(_Adapter):
|
||||
raise RuntimeError("resource listing broke")
|
||||
|
||||
|
||||
async def test_discover_connection_capabilities_collects_all_capability_families() -> None:
|
||||
async def test_discover_connection_capabilities_collects_all_capability_families() -> (
|
||||
None
|
||||
):
|
||||
adapter = _Adapter()
|
||||
connection = _connection()
|
||||
|
||||
@@ -172,7 +174,9 @@ async def test_discover_connection_capabilities_collects_all_capability_families
|
||||
assert adapter.seen_connections == [connection]
|
||||
|
||||
|
||||
async def test_discover_connection_capabilities_treats_missing_optional_families_as_empty() -> None:
|
||||
async def test_discover_connection_capabilities_treats_missing_optional_families_as_empty() -> (
|
||||
None
|
||||
):
|
||||
capabilities = await discover_connection_capabilities(
|
||||
connection=_connection(),
|
||||
auth=None,
|
||||
@@ -184,7 +188,9 @@ async def test_discover_connection_capabilities_treats_missing_optional_families
|
||||
assert capabilities.prompts == []
|
||||
|
||||
|
||||
async def test_discover_connection_capabilities_reraises_non_method_not_found_errors() -> None:
|
||||
async def test_discover_connection_capabilities_reraises_non_method_not_found_errors() -> (
|
||||
None
|
||||
):
|
||||
with pytest.raises(RuntimeError, match="resource listing broke"):
|
||||
await discover_connection_capabilities(
|
||||
connection=_connection(),
|
||||
|
||||
@@ -165,7 +165,9 @@ def test_connection_config_to_registry_entry_accepts_flat_http_metadata() -> Non
|
||||
|
||||
|
||||
def test_connection_config_to_registry_entry_requires_transport_metadata() -> None:
|
||||
connection = _LegacyConnectionLike(id="github.work", server="github", account="work")
|
||||
connection = _LegacyConnectionLike(
|
||||
id="github.work", server="github", account="work"
|
||||
)
|
||||
|
||||
with pytest.raises(ValueError, match="requires metadata.transport"):
|
||||
connection_config_to_registry_entry(connection)
|
||||
|
||||
Reference in New Issue
Block a user