This commit is contained in:
142
tests/conftest.py
Normal file
142
tests/conftest.py
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
"""Test configuration and fixtures for MCP Server CLI."""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import tempfile
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Generator
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
sys.path.insert(0, str(Path(__file__).parent.parent))
|
||||||
|
|
||||||
|
from mcp_server_cli.config import ConfigManager, AppConfig
|
||||||
|
from mcp_server_cli.server import MCPServer
|
||||||
|
from mcp_server_cli.tools import (
|
||||||
|
FileTools,
|
||||||
|
GitTools,
|
||||||
|
ShellTools,
|
||||||
|
ToolRegistry,
|
||||||
|
)
|
||||||
|
from mcp_server_cli.models import (
|
||||||
|
ServerConfig,
|
||||||
|
LocalLLMConfig,
|
||||||
|
SecurityConfig,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def temp_dir() -> Generator[Path, None, None]:
|
||||||
|
"""Create a temporary directory for tests."""
|
||||||
|
with tempfile.TemporaryDirectory() as tmpdir:
|
||||||
|
yield Path(tmpdir)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def temp_file(temp_dir: Path) -> Generator[Path, None, None]:
|
||||||
|
"""Create a temporary file for tests."""
|
||||||
|
file_path = temp_dir / "test_file.txt"
|
||||||
|
file_path.write_text("Hello, World!")
|
||||||
|
yield file_path
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def temp_yaml_file(temp_dir: Path) -> Generator[Path, None, None]:
|
||||||
|
"""Create a temporary YAML file for tests."""
|
||||||
|
file_path = temp_dir / "test_config.yaml"
|
||||||
|
content = """
|
||||||
|
server:
|
||||||
|
host: \"127.0.0.1\"
|
||||||
|
port: 8080
|
||||||
|
log_level: \"DEBUG\"
|
||||||
|
|
||||||
|
llm:
|
||||||
|
enabled: false
|
||||||
|
base_url: \"http://localhost:11434\"
|
||||||
|
model: \"llama2\"
|
||||||
|
|
||||||
|
security:
|
||||||
|
allowed_commands:
|
||||||
|
- ls
|
||||||
|
- cat
|
||||||
|
- echo
|
||||||
|
blocked_paths:
|
||||||
|
- /etc
|
||||||
|
- /root
|
||||||
|
"""
|
||||||
|
file_path.write_text(content)
|
||||||
|
yield file_path
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def sample_tool_definition() -> dict:
|
||||||
|
"""Sample tool definition for testing."""
|
||||||
|
return {
|
||||||
|
"name": "test_tool",
|
||||||
|
"description": "A test tool",
|
||||||
|
"input_schema": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"param1": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "First parameter",
|
||||||
|
"required": True
|
||||||
|
},
|
||||||
|
"param2": {
|
||||||
|
"type": "integer",
|
||||||
|
"description": "Second parameter",
|
||||||
|
"default": 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": ["param1"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def default_config() -> AppConfig:
|
||||||
|
"""Create a default server configuration."""
|
||||||
|
return AppConfig(
|
||||||
|
server=ServerConfig(host="127.0.0.1", port=3000, log_level="INFO"),
|
||||||
|
llm=LocalLLMConfig(enabled=False, base_url="http://localhost:11434"),
|
||||||
|
security=SecurityConfig(
|
||||||
|
allowed_commands=["ls", "cat", "echo"],
|
||||||
|
blocked_paths=["/etc", "/root"],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def mcp_server(default_config: AppConfig) -> MCPServer:
|
||||||
|
"""Create an MCP server instance with registered tools."""
|
||||||
|
server = MCPServer(config=default_config)
|
||||||
|
server.register_tool(FileTools())
|
||||||
|
server.register_tool(GitTools())
|
||||||
|
server.register_tool(ShellTools())
|
||||||
|
return server
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def tool_registry() -> ToolRegistry:
|
||||||
|
"""Create a tool registry instance."""
|
||||||
|
return ToolRegistry()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def config_manager() -> ConfigManager:
|
||||||
|
"""Create a configuration manager instance."""
|
||||||
|
return ConfigManager()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def mock_env():
|
||||||
|
"""Mock environment variables."""
|
||||||
|
env = {
|
||||||
|
"MCP_PORT": "4000",
|
||||||
|
"MCP_HOST": "0.0.0.0",
|
||||||
|
"MCP_LOG_LEVEL": "DEBUG",
|
||||||
|
}
|
||||||
|
original_env = os.environ.copy()
|
||||||
|
os.environ.update(env)
|
||||||
|
yield
|
||||||
|
os.environ.clear()
|
||||||
|
os.environ.update(original_env)
|
||||||
Reference in New Issue
Block a user