Skip to main content
Glama

Ureanl-Blender-MCP

test_server.py4.48 kB
""" Tests for the MCP server. This module contains tests for the MCP server functionality, including API endpoints, error handling, and message processing. """ import unittest from unittest.mock import patch, MagicMock, AsyncMock import json from fastapi.testclient import TestClient from src.unreal_blender_mcp.server import app, Message, StreamRequest, generate_id from src.unreal_blender_mcp.blender_connection import BlenderConnection from src.unreal_blender_mcp.unreal_connection import UnrealConnection from src.unreal_blender_mcp.langchain_integration import LangchainManager class TestMCPServer(unittest.TestCase): """Test the MCP server.""" def setUp(self): """Set up test fixtures.""" self.client = TestClient(app) # Patch connections and langchain manager self.blender_patcher = patch('src.unreal_blender_mcp.server.blender_connection') self.unreal_patcher = patch('src.unreal_blender_mcp.server.unreal_connection') self.langchain_patcher = patch('src.unreal_blender_mcp.server.langchain_manager') self.mock_blender = self.blender_patcher.start() self.mock_unreal = self.unreal_patcher.start() self.mock_langchain = self.langchain_patcher.start() def tearDown(self): """Tear down test fixtures.""" self.blender_patcher.stop() self.unreal_patcher.stop() self.langchain_patcher.stop() def test_root_endpoint(self): """Test the root endpoint.""" response = self.client.get("/") self.assertEqual(response.status_code, 200) data = response.json() self.assertEqual(data["status"], "success") self.assertIn("server", data["data"]) self.assertIn("version", data["data"]) self.assertIn("status", data["data"]) self.assertIn("endpoints", data["data"]) @patch('src.unreal_blender_mcp.server.BlenderConnection.connect') @patch('src.unreal_blender_mcp.server.UnrealConnection.connect') def test_status_endpoint(self, mock_unreal_connect, mock_blender_connect): """Test the status endpoint.""" # Mock connections mock_blender_connect.return_value = AsyncMock(return_value=True) mock_unreal_connect.return_value = AsyncMock(return_value=False) response = self.client.get("/status") self.assertEqual(response.status_code, 200) data = response.json() self.assertEqual(data["status"], "success") self.assertIn("server", data["data"]) self.assertIn("active_connections", data["data"]) self.assertIn("blender", data["data"]) self.assertIn("unreal", data["data"]) self.assertIn("langchain", data["data"]) def test_generate_id(self): """Test the generate_id function.""" id1 = generate_id() id2 = generate_id() # IDs should be unique self.assertNotEqual(id1, id2) # IDs should be strings self.assertIsInstance(id1, str) self.assertIsInstance(id2, str) @patch('src.unreal_blender_mcp.server.process_message') def test_message_endpoint(self, mock_process_message): """Test the message endpoint.""" # Mock process_message async def mock_process(): yield {"event": "test_event", "data": json.dumps({"id": "123"})} mock_process_message.return_value = mock_process() # Test with valid message response = self.client.post( "/message", json={"role": "user", "content": "Hello", "id": "123"} ) self.assertEqual(response.status_code, 200) data = response.json() self.assertEqual(data["status"], "success") self.assertIn("results", data["data"]) def test_validation_error(self): """Test validation error handling.""" # Send invalid message (missing required field) response = self.client.post( "/message", json={"role": "user"} # Missing 'content' field ) self.assertEqual(response.status_code, 422) data = response.json() self.assertEqual(data["status"], "error") self.assertEqual(data["code"], 422) self.assertEqual(data["message"], "Validation error") self.assertIn("errors", data["details"]) if __name__ == "__main__": unittest.main()

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/tahooki/unreal-blender-mcp'

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