tests/test_client.py
1.5 KB · 46 lines · python Raw
1 """Tests for PQCMCPClient — message signing and response verification."""
2
3 from __future__ import annotations
4
5 import pytest
6 from quantumshield.identity.agent import AgentIdentity
7
8 from pqc_mcp_transport.client import PQCMCPClient
9 from pqc_mcp_transport.signer import MessageSigner
10
11
12 class TestClientSigning:
13 def test_client_signs_tool_call(
14 self, client_identity: AgentIdentity
15 ) -> None:
16 """The client's signer produces valid PQC-signed messages."""
17 client = PQCMCPClient(
18 identity=client_identity,
19 server_url="http://localhost:8080",
20 )
21 message = {
22 "jsonrpc": "2.0",
23 "method": "tools/call",
24 "id": "test-1",
25 "params": {"name": "greet", "arguments": {"name": "World"}},
26 }
27 signed = client.signer.sign_message(message)
28 assert "_pqc" in signed
29 result = MessageSigner.verify_message(signed)
30 assert result.valid is True
31 assert result.signer_did == client_identity.did
32
33 def test_client_verifies_response(
34 self,
35 client_identity: AgentIdentity,
36 server_identity: AgentIdentity,
37 sample_response: dict,
38 ) -> None:
39 """The client can verify a server-signed response."""
40 server_signer = MessageSigner(server_identity)
41 signed_response = server_signer.sign_message(sample_response)
42
43 result = MessageSigner.verify_message(signed_response)
44 assert result.valid is True
45 assert result.signer_did == server_identity.did
46