Skip to content

Commit 5029af5

Browse files
committed
Cover context injection fallback paths
1 parent 823a081 commit 5029af5

2 files changed

Lines changed: 25 additions & 2 deletions

File tree

‎tests/server/mcpserver/resources/test_resource_template.py‎

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,16 +226,34 @@ async def test_create_resource_preserves_context_with_variadic_kwargs(self):
226226
"""Injected context bypasses validation without changing **kwargs handling."""
227227
context = Context()
228228

229-
def my_func(ctx: Context[None], **kwargs: str) -> str:
229+
def my_func(ctx, **kwargs: str): # type: ignore
230230
assert ctx is context
231231
return kwargs["key"]
232232

233-
template = ResourceTemplate.from_function(fn=my_func, uri_template="test://{key}")
233+
template = ResourceTemplate.from_function(
234+
fn=my_func, # pyright: ignore[reportUnknownArgumentType]
235+
uri_template="test://{key}",
236+
context_kwarg="ctx",
237+
)
234238
resource = await template.create_resource("test://value", {"key": "value"}, context)
235239

236240
assert isinstance(resource, FunctionResource)
237241
assert await resource.read() == "value"
238242

243+
def test_unknown_explicit_context_kwarg_keeps_normal_validation(self):
244+
"""An unknown explicit context parameter falls back to normal validation."""
245+
246+
def my_func(key: int) -> int:
247+
return key
248+
249+
template = ResourceTemplate.from_function(
250+
fn=my_func,
251+
uri_template="test://{key}",
252+
context_kwarg="missing",
253+
)
254+
255+
assert template.fn(key="1") == 1
256+
239257
@pytest.mark.anyio
240258
async def test_template_error(self):
241259
"""Test error handling in template resource creation."""

‎tests/server/mcpserver/test_server.py‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2324,6 +2324,11 @@ def test_context_mcp_server_outside_request_raises() -> None:
23242324
_ = Context().mcp_server
23252325

23262326

2327+
def test_context_request_context_outside_request_raises() -> None:
2328+
with pytest.raises(ValueError, match="outside of a request"):
2329+
_ = Context().request_context
2330+
2331+
23272332
async def test_context_notify_outside_a_request_raises() -> None:
23282333
with pytest.raises(ValueError, match="outside of a request"):
23292334
await Context().notify_tools_changed()

0 commit comments

Comments
 (0)