From 903f0d9ca388533ab44615e414379fa5b305a7d1 Mon Sep 17 00:00:00 2001 From: Dawid Rycerz Date: Fri, 28 Mar 2025 21:39:04 +0100 Subject: Add basic glab mcp server --- servers/gitlab_glab/tests/conftest.py | 105 ++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 servers/gitlab_glab/tests/conftest.py (limited to 'servers/gitlab_glab/tests/conftest.py') diff --git a/servers/gitlab_glab/tests/conftest.py b/servers/gitlab_glab/tests/conftest.py new file mode 100644 index 0000000..c7afaf9 --- /dev/null +++ b/servers/gitlab_glab/tests/conftest.py @@ -0,0 +1,105 @@ +#!/usr/bin/env python3 +"""Pytest configuration and fixtures for GitLab CLI MCP server tests.""" + +from unittest.mock import MagicMock, patch + +import pytest + +from mcp_server_gitlab_glab.server import GitLabServer, create_server + + +@pytest.fixture +def gitlab_server() -> GitLabServer: + """Fixture for a GitLabServer instance.""" + return GitLabServer() + + +@pytest.fixture +def mock_subprocess_run() -> MagicMock: + """Fixture for mocking subprocess.run.""" + with patch("subprocess.run") as mock_run: + yield mock_run + + +@pytest.fixture +def mock_successful_command(mock_subprocess_run: MagicMock) -> MagicMock: + """Fixture for mocking a successful command execution.""" + mock_process = MagicMock() + mock_process.returncode = 0 + mock_process.stdout = "command output" + mock_process.stderr = "" + mock_subprocess_run.return_value = mock_process + return mock_subprocess_run + + +@pytest.fixture +def mock_failed_command(mock_subprocess_run: MagicMock) -> MagicMock: + """Fixture for mocking a failed command execution.""" + mock_process = MagicMock() + mock_process.returncode = 1 + mock_process.stdout = "" + mock_process.stderr = "command failed" + mock_subprocess_run.return_value = mock_process + return mock_subprocess_run + + +@pytest.fixture +def mock_auth_error_command(mock_subprocess_run: MagicMock) -> MagicMock: + """Fixture for mocking an authentication error command execution.""" + mock_process = MagicMock() + mock_process.returncode = 1 + mock_process.stdout = "" + mock_process.stderr = "authentication required" + mock_subprocess_run.return_value = mock_process + return mock_subprocess_run + + +@pytest.fixture +def mock_successful_api_command(mock_subprocess_run: MagicMock) -> MagicMock: + """Fixture for mocking a successful API command execution.""" + mock_process = MagicMock() + mock_process.returncode = 0 + mock_process.stdout = '[{"id": 1, "name": "test-project"}]' + mock_process.stderr = "" + mock_subprocess_run.return_value = mock_process + return mock_subprocess_run + + +@pytest.fixture +def mock_empty_api_command(mock_subprocess_run: MagicMock) -> MagicMock: + """Fixture for mocking an API command with empty results.""" + mock_process = MagicMock() + mock_process.returncode = 0 + mock_process.stdout = "[]" + mock_process.stderr = "" + mock_subprocess_run.return_value = mock_process + return mock_subprocess_run + + +@pytest.fixture +def mock_invalid_json_api_command(mock_subprocess_run: MagicMock) -> MagicMock: + """Fixture for mocking an API command with invalid JSON response.""" + mock_process = MagicMock() + mock_process.returncode = 0 + mock_process.stdout = "invalid json" + mock_process.stderr = "" + mock_subprocess_run.return_value = mock_process + return mock_subprocess_run + + +@pytest.fixture +def mock_command_not_found(mock_subprocess_run: MagicMock) -> MagicMock: + """Fixture for mocking a command not found error.""" + mock_subprocess_run.side_effect = FileNotFoundError( + "No such file or directory: 'glab'" + ) + return mock_subprocess_run + + +@pytest.fixture +def mcp_server() -> MagicMock: + """Fixture for a mocked MCP server.""" + with patch("mcp.server.fastmcp.FastMCP") as mock_fastmcp: + mock_server = MagicMock() + mock_fastmcp.return_value = mock_server + yield create_server() -- cgit v1.2.3