diff options
| author | Dawid Rycerz <dawid@rycerz.xyz> | 2025-03-28 21:39:04 +0100 |
|---|---|---|
| committer | Dawid Rycerz <dawid@rycerz.xyz> | 2025-03-28 21:39:04 +0100 |
| commit | 903f0d9ca388533ab44615e414379fa5b305a7d1 (patch) | |
| tree | d4225b3b07e11792d06660b31da97f786b5578e9 /servers/gitlab_glab/tests/conftest.py | |
| parent | 1745749cd2745c94c3f852e9c02dfde19d8d9c20 (diff) | |
Add basic glab mcp server
Diffstat (limited to 'servers/gitlab_glab/tests/conftest.py')
| -rw-r--r-- | servers/gitlab_glab/tests/conftest.py | 105 |
1 files changed, 105 insertions, 0 deletions
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() |
