Add templates and tests
Some checks failed
CI / test (push) Has been cancelled

This commit is contained in:
2026-02-05 12:35:11 +00:00
parent 33ca67e3f3
commit 5ead4da36d

142
tests/conftest.py Normal file
View 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)