initial commit after one day coding agent session
This commit is contained in:
commit
372af75b90
88 changed files with 22694 additions and 0 deletions
86
tests/server/test_server_integration.py
Normal file
86
tests/server/test_server_integration.py
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
"""Integration tests for MCP Forge Server - tests real component initialization."""
|
||||
|
||||
import pytest
|
||||
from pathlib import Path
|
||||
from unittest.mock import patch
|
||||
|
||||
from mcp_forge.server.server import ForgeServer
|
||||
from mcp_forge.config.schema import (
|
||||
ForgeConfig, ServerConfig, SecurityConfig, ExecutionConfig, SessionConfig,
|
||||
ImageConfig, VolumeConfig, EnvironmentBuilderConfig, PackageValidationConfig
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def real_config(tmp_path):
|
||||
"""Real configuration with all required fields."""
|
||||
# Create required files
|
||||
(tmp_path / "allowlist.txt").write_text("requests\npandas\nnumpy\n")
|
||||
(tmp_path / "blocklist.txt").write_text("")
|
||||
|
||||
config = ForgeConfig(
|
||||
server=ServerConfig(
|
||||
host="localhost",
|
||||
port=3000,
|
||||
podman_socket=Path("/run/user/1000/podman/podman.sock")
|
||||
),
|
||||
security=SecurityConfig(
|
||||
audit_log=tmp_path / "audit.log",
|
||||
enforce_resource_limits=True,
|
||||
allow_network=False
|
||||
),
|
||||
execution=ExecutionConfig(
|
||||
default_backend="simple",
|
||||
default_timeout=300,
|
||||
max_timeout=1800,
|
||||
default_memory="512m",
|
||||
max_memory="2g"
|
||||
),
|
||||
images=ImageConfig(
|
||||
allowed_python_versions=["3.11", "3.12"],
|
||||
default_base_image="python:3.11"
|
||||
),
|
||||
sessions=SessionConfig(
|
||||
max_concurrent=10,
|
||||
idle_timeout=3600
|
||||
),
|
||||
volumes=VolumeConfig(
|
||||
base_path=tmp_path / "volumes"
|
||||
),
|
||||
environment_builder=EnvironmentBuilderConfig(
|
||||
uv_cache_path=tmp_path / "cache",
|
||||
build_rate_limit={"requests": 5, "period": 60},
|
||||
package_validation=PackageValidationConfig(
|
||||
allowlist_path=tmp_path / "allowlist.txt",
|
||||
blocklist_path=tmp_path / "blocklist.txt"
|
||||
)
|
||||
),
|
||||
mcp_tools={}
|
||||
)
|
||||
return config
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_server_can_initialize_with_minimal_mocking(real_config):
|
||||
"""Test that ForgeServer can initialize with real component instances."""
|
||||
# Only mock the podman library since we don't have a real Podman socket
|
||||
with patch('mcp_forge.podman.client.BasePodmanClient'):
|
||||
# This should succeed if all parameter mismatches are fixed
|
||||
server = ForgeServer(config=real_config)
|
||||
|
||||
# Verify all components were created
|
||||
assert server.audit_logger is not None
|
||||
assert server.operation_validator is not None
|
||||
assert server.podman_client is not None
|
||||
assert server.container_manager is not None
|
||||
assert server.client_manager is not None
|
||||
assert server.bridge_server is not None
|
||||
assert server.simple_backend is not None
|
||||
assert server.kernel_manager is not None
|
||||
assert server.session_manager is not None
|
||||
assert server.jupyter_backend is not None
|
||||
assert server.environment_builder is not None
|
||||
# Sub-components created by EnvironmentBuilder
|
||||
assert server.package_validator is not None
|
||||
assert server.uv_installer is not None
|
||||
assert server.image_builder is not None
|
||||
Loading…
Add table
Add a link
Reference in a new issue