"""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