Skip to content

Commit a3b896f

Browse files
committed
test: close PR3 coverage gaps to 100%
- Connection.check_capability per-field branches (parametrized) - Context.log with logger and meta supplied - Peer.notify forwards to wrapped Outbound
1 parent 6897c9a commit a3b896f

File tree

3 files changed

+63
-0
lines changed

3 files changed

+63
-0
lines changed

tests/server/test_connection.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,27 @@ def test_connection_check_capability_false_before_initialized():
173173
assert conn.check_capability(ClientCapabilities(sampling=SamplingCapability())) is False
174174

175175

176+
@pytest.mark.parametrize(
177+
("have", "want", "expected"),
178+
[
179+
(ClientCapabilities(roots=None), ClientCapabilities(roots=RootsCapability()), False),
180+
(
181+
ClientCapabilities(roots=RootsCapability(list_changed=False)),
182+
ClientCapabilities(roots=RootsCapability(list_changed=True)),
183+
False,
184+
),
185+
(ClientCapabilities(sampling=None), ClientCapabilities(sampling=SamplingCapability()), False),
186+
(ClientCapabilities(experimental=None), ClientCapabilities(experimental={"a": {}}), False),
187+
(ClientCapabilities(experimental={"a": {}}), ClientCapabilities(experimental={"b": {}}), False),
188+
(ClientCapabilities(experimental={"a": {}}), ClientCapabilities(experimental={"a": {}}), True),
189+
],
190+
)
191+
def test_check_capability_per_field_branches(have: ClientCapabilities, want: ClientCapabilities, expected: bool):
192+
conn = Connection(StubOutbound(), has_standalone_channel=True)
193+
conn.client_capabilities = have
194+
assert conn.check_capability(want) is expected
195+
196+
176197
def test_connection_check_capability_true_when_client_declares_it():
177198
conn = Connection(StubOutbound(), has_standalone_channel=True)
178199
conn.client_capabilities = ClientCapabilities(

tests/server/test_server_context.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,3 +129,28 @@ async def server_on_request(dctx: DCtx, method: str, params: Mapping[str, Any] |
129129
method, params = crec.notifications[0]
130130
assert method == "notifications/message"
131131
assert params is not None and params["level"] == "debug" and params["data"] == "hello"
132+
133+
134+
@pytest.mark.anyio
135+
async def test_context_log_includes_logger_and_meta_when_supplied():
136+
crec = Recorder()
137+
_, c_notify = echo_handlers(crec)
138+
139+
async def server_on_request(dctx: DCtx, method: str, params: Mapping[str, Any] | None) -> dict[str, Any]:
140+
ctx: Context[_Lifespan, TransportContext] = Context(
141+
dctx, lifespan=_Lifespan("app"), connection=Connection(dctx, has_standalone_channel=True)
142+
)
143+
await ctx.log("info", "x", logger="my.log", meta={"traceId": "t"})
144+
return {}
145+
146+
async with running_pair(direct_pair, server_on_request=server_on_request, client_on_notify=c_notify) as (
147+
client,
148+
*_,
149+
):
150+
with anyio.fail_after(5):
151+
await client.send_raw_request("t", None)
152+
await crec.notified.wait()
153+
_, params = crec.notifications[0]
154+
assert params is not None
155+
assert params["logger"] == "my.log"
156+
assert params["_meta"] == {"traceId": "t"}

tests/shared/test_peer.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,23 @@ def test_dump_params_merges_meta_over_model_meta():
135135
assert out == {"_meta": {"k": 1}}
136136

137137

138+
@pytest.mark.anyio
139+
async def test_peer_notify_forwards_to_wrapped_outbound():
140+
sent: list[tuple[str, Mapping[str, Any] | None]] = []
141+
142+
class _Out:
143+
async def send_raw_request(
144+
self, method: str, params: Mapping[str, Any] | None, opts: Any = None
145+
) -> dict[str, Any]:
146+
raise NotImplementedError
147+
148+
async def notify(self, method: str, params: Mapping[str, Any] | None) -> None:
149+
sent.append((method, params))
150+
151+
await Peer(_Out()).notify("n", {"x": 1})
152+
assert sent == [("n", {"x": 1})]
153+
154+
138155
@pytest.mark.anyio
139156
async def test_peer_ping_sends_ping_and_returns_none():
140157
rec = _Recorder({})

0 commit comments

Comments
 (0)