Skip to main content
Glama
test_json_rpc.py3.78 kB
import pytest from unittest.mock import patch, MagicMock from kvm_mcp_server import handle_request import json @pytest.mark.asyncio async def test_initialize_request(mock_libvirt_conn): """Test initialization request handling""" with patch('libvirt.open') as mock_open: mock_open.return_value = mock_libvirt_conn request = { "jsonrpc": "2.0", "method": "initialize", "params": { "protocolVersion": "1.0", "capabilities": {}, "clientInfo": {"name": "test-client"} }, "id": 1 } response = await handle_request(json.dumps(request)) assert response["jsonrpc"] == "2.0" assert response["id"] == 1 assert "result" in response assert response["result"]["protocolVersion"] == "1.0" assert response["result"]["serverInfo"]["name"] == "kvm-control" @pytest.mark.asyncio async def test_list_vms_request(): """Test list_vms request handling""" # Mock list_vms function mock_vms = [{"name": "test-vm", "state": "running"}] with patch('kvm_mcp_server.list_vms', return_value=mock_vms): request = { "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "list_vms", "arguments": {} }, "id": 2 } response = await handle_request(json.dumps(request)) assert response["jsonrpc"] == "2.0" assert response["id"] == 2 assert "result" in response assert response["result"] == mock_vms @pytest.mark.asyncio async def test_create_vm_request(): """Test create_vm request handling""" # Mock create_vm function mock_result = {"status": "success", "message": "VM created"} with patch('kvm_mcp_server.create_vm', return_value=mock_result): request = { "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "create_vm", "arguments": { "name": "test-vm", "memory": 2048, "vcpus": 2 } }, "id": 3 } response = await handle_request(json.dumps(request)) assert response["jsonrpc"] == "2.0" assert response["id"] == 3 assert "result" in response assert response["result"] == mock_result @pytest.mark.asyncio async def test_invalid_method(): """Test handling of invalid method""" request = { "jsonrpc": "2.0", "method": "invalid_method", "params": {}, "id": 4 } response = await handle_request(json.dumps(request)) assert response["jsonrpc"] == "2.0" assert response["id"] == 4 assert "error" in response assert response["error"]["code"] == -32601 assert "Method not found" in response["error"]["message"] @pytest.mark.asyncio async def test_missing_method(): """Test handling of missing method""" request = { "jsonrpc": "2.0", "params": {}, "id": 5 } response = await handle_request(json.dumps(request)) assert response["jsonrpc"] == "2.0" assert response["id"] == 5 assert "error" in response assert response["error"]["code"] == -32600 assert "Invalid Request" in response["error"]["message"] @pytest.mark.asyncio async def test_invalid_json(): """Test handling of invalid JSON""" response = await handle_request("invalid json") assert response["jsonrpc"] == "2.0" assert response["error"]["code"] == -32700 assert "Parse error" in response["error"]["message"] assert response["id"] is None

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/steveydevey/kvm-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server