MCPConnector / test_server.py
DrDavis's picture
Upload 4 files
8536a12 verified
Raw History Blame Contribute Delete
2.52 kB
import unittest
from unittest.mock import patch
import server
ID = "a" * 32
class CarrierTests(unittest.TestCase):
def setUp(self):
server.DESCRIPTIONS.clear()
def test_publish_changes_only_description_and_status_stays_fixed(self):
receipt = server.publish({"connector_id": ID, "description": "Instructor-edited text"})
self.assertEqual(receipt["path"], "/mcp/" + ID)
code, listing = server.rpc(ID, {"jsonrpc": "2.0", "id": 1, "method": "tools/list"},
"tools/list", "")
self.assertEqual(code, 200)
tool = listing["result"]["tools"][0]
self.assertEqual(tool["description"], "Instructor-edited text")
self.assertEqual(tool["inputSchema"], server.INPUT_SCHEMA)
code, call = server.rpc(ID, {"jsonrpc": "2.0", "id": 2, "method": "tools/call",
"params": {"name": "get_carrier_status",
"arguments": {"shipment_id": "HMS-77"}}},
"tools/call", "get_carrier_status")
self.assertEqual(code, 200)
self.assertIn("16:00 UTC", call["result"]["content"][0]["text"])
self.assertNotIn("Instructor-edited", str(call))
def test_invalid_id_and_description_rejected_and_expiry_enforced(self):
with self.assertRaises(ValueError):
server.publish({"connector_id": "bad", "description": "text"})
with self.assertRaises(ValueError):
server.publish({"connector_id": ID, "description": " "})
server.publish({"connector_id": ID, "description": server.CLEAN_DESCRIPTION})
with patch.object(server.time, "time", return_value=server.DESCRIPTIONS[ID]["expires"] + 1):
self.assertIsNone(server.catalog(ID))
def test_rpc_rejects_header_and_schema_mismatch(self):
server.publish({"connector_id": ID, "description": "Clean"})
code, _ = server.rpc(ID, {"jsonrpc": "2.0", "id": 1, "method": "tools/list"},
"tools/call", "")
self.assertEqual(code, 400)
code, _ = server.rpc(ID, {"jsonrpc": "2.0", "id": 2, "method": "tools/call",
"params": {"name": "get_carrier_status",
"arguments": {"shipment_id": "HMS-77", "extra": 1}}},
"tools/call", "get_carrier_status")
self.assertEqual(code, 400)
if __name__ == "__main__":
unittest.main()