test: migrate mcp controller tests to testcontainers (#34297)

This commit is contained in:
YBoy 2026-03-31 03:28:44 +03:00 committed by GitHub
parent 097095a69b
commit 15aa8071f8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,5 +1,10 @@
"""Testcontainers integration tests for controllers.mcp.mcp endpoints."""
from __future__ import annotations
import types import types
from unittest.mock import MagicMock, patch from unittest.mock import MagicMock, patch
from uuid import uuid4
import pytest import pytest
from flask import Response from flask import Response
@ -14,24 +19,6 @@ def unwrap(func):
return func return func
@pytest.fixture(autouse=True)
def mock_db():
module.db = types.SimpleNamespace(engine=object())
@pytest.fixture
def fake_session():
session = MagicMock()
session.__enter__.return_value = session
session.__exit__.return_value = False
return session
@pytest.fixture(autouse=True)
def mock_session(fake_session):
module.Session = MagicMock(return_value=fake_session)
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)
def mock_mcp_ns(): def mock_mcp_ns():
fake_ns = types.SimpleNamespace() fake_ns = types.SimpleNamespace()
@ -44,8 +31,13 @@ def fake_payload(data):
module.mcp_ns.payload = data module.mcp_ns.payload = data
_TENANT_ID = str(uuid4())
_APP_ID = str(uuid4())
_SERVER_ID = str(uuid4())
class DummyServer: class DummyServer:
def __init__(self, status, app_id="app-1", tenant_id="tenant-1", server_id="srv-1"): def __init__(self, status, app_id=_APP_ID, tenant_id=_TENANT_ID, server_id=_SERVER_ID):
self.status = status self.status = status
self.app_id = app_id self.app_id = app_id
self.tenant_id = tenant_id self.tenant_id = tenant_id
@ -54,8 +46,8 @@ class DummyServer:
class DummyApp: class DummyApp:
def __init__(self, mode, workflow=None, app_model_config=None): def __init__(self, mode, workflow=None, app_model_config=None):
self.id = "app-1" self.id = _APP_ID
self.tenant_id = "tenant-1" self.tenant_id = _TENANT_ID
self.mode = mode self.mode = mode
self.workflow = workflow self.workflow = workflow
self.app_model_config = app_model_config self.app_model_config = app_model_config
@ -76,6 +68,7 @@ class DummyResult:
return {"jsonrpc": "2.0", "result": "ok", "id": 1} return {"jsonrpc": "2.0", "result": "ok", "id": 1}
@pytest.mark.usefixtures("flask_req_ctx_with_containers")
class TestMCPAppApi: class TestMCPAppApi:
@patch.object(module, "handle_mcp_request", return_value=DummyResult(), autospec=True) @patch.object(module, "handle_mcp_request", return_value=DummyResult(), autospec=True)
def test_success_request(self, mock_handle): def test_success_request(self, mock_handle):