summaryrefslogtreecommitdiff
path: root/servers/gitlab_glab/tests/test_cli_integration.py
diff options
context:
space:
mode:
authorDawid Rycerz <dawid@rycerz.xyz>2025-03-28 21:39:04 +0100
committerDawid Rycerz <dawid@rycerz.xyz>2025-03-28 21:39:04 +0100
commit903f0d9ca388533ab44615e414379fa5b305a7d1 (patch)
treed4225b3b07e11792d06660b31da97f786b5578e9 /servers/gitlab_glab/tests/test_cli_integration.py
parent1745749cd2745c94c3f852e9c02dfde19d8d9c20 (diff)
Add basic glab mcp server
Diffstat (limited to 'servers/gitlab_glab/tests/test_cli_integration.py')
-rw-r--r--servers/gitlab_glab/tests/test_cli_integration.py133
1 files changed, 133 insertions, 0 deletions
diff --git a/servers/gitlab_glab/tests/test_cli_integration.py b/servers/gitlab_glab/tests/test_cli_integration.py
new file mode 100644
index 0000000..c9493ac
--- /dev/null
+++ b/servers/gitlab_glab/tests/test_cli_integration.py
@@ -0,0 +1,133 @@
+#!/usr/bin/env python3
+"""Integration tests for the GitLab CLI MCP server CLI functionality."""
+
+from unittest.mock import MagicMock, patch
+
+from mcp_server_gitlab_glab.cli import run_server
+
+
+class TestCliIntegration:
+ """Integration tests for the CLI functionality."""
+
+ @patch("mcp_server_gitlab_glab.cli.validate_args")
+ @patch("mcp_server_gitlab_glab.cli.parse_args")
+ @patch("mcp_server_gitlab_glab.cli.setup_logging")
+ @patch("mcp_server_gitlab_glab.cli.asyncio.run")
+ def test_run_server_success(
+ self,
+ mock_asyncio_run: MagicMock,
+ mock_setup_logging: MagicMock,
+ mock_parse_args: MagicMock,
+ mock_validate_args: MagicMock,
+ ) -> None:
+ """Test successful server run."""
+ # Mock args
+ mock_args = MagicMock()
+ mock_args.transport = "stdio"
+ mock_args.host = "127.0.0.1"
+ mock_args.port = 8080
+ mock_args.log_level = "INFO"
+ mock_parse_args.return_value = mock_args
+ mock_validate_args.return_value = mock_args
+
+ # Call run_server
+ run_server()
+
+ # Verify args were parsed and validated
+ mock_parse_args.assert_called_once()
+ mock_validate_args.assert_called_once_with(mock_args)
+
+ # Verify logging was set up
+ mock_setup_logging.assert_called_once_with("INFO", "stdio")
+
+ # Verify server was run
+ mock_asyncio_run.assert_called_once()
+
+ @patch("mcp_server_gitlab_glab.cli.validate_args")
+ @patch("mcp_server_gitlab_glab.cli.parse_args")
+ @patch("mcp_server_gitlab_glab.cli.setup_logging")
+ @patch("mcp_server_gitlab_glab.cli.asyncio.run")
+ @patch("mcp_server_gitlab_glab.cli.logger")
+ def test_run_server_keyboard_interrupt(
+ self,
+ mock_logger: MagicMock,
+ mock_asyncio_run: MagicMock,
+ mock_setup_logging: MagicMock,
+ mock_parse_args: MagicMock,
+ mock_validate_args: MagicMock,
+ ) -> None:
+ """Test server run with keyboard interrupt."""
+ # Mock args
+ mock_args = MagicMock()
+ mock_args.transport = "stdio"
+ mock_args.host = "127.0.0.1"
+ mock_args.port = 8080
+ mock_args.log_level = "INFO"
+ mock_parse_args.return_value = mock_args
+ mock_validate_args.return_value = mock_args
+
+ # Mock KeyboardInterrupt
+ mock_asyncio_run.side_effect = KeyboardInterrupt()
+
+ # Call run_server
+ run_server()
+
+ # Verify args were parsed and validated
+ mock_parse_args.assert_called_once()
+ mock_validate_args.assert_called_once_with(mock_args)
+
+ # Verify logging was set up
+ mock_setup_logging.assert_called_once_with("INFO", "stdio")
+
+ # Verify server was run
+ mock_asyncio_run.assert_called_once()
+
+ # Verify keyboard interrupt was logged
+ mock_logger.info.assert_called_once_with("Server stopped by user")
+
+ @patch("mcp_server_gitlab_glab.cli.validate_args")
+ @patch("mcp_server_gitlab_glab.cli.parse_args")
+ @patch("mcp_server_gitlab_glab.cli.setup_logging")
+ @patch("mcp_server_gitlab_glab.cli.asyncio.run")
+ @patch("mcp_server_gitlab_glab.cli.logger")
+ @patch("mcp_server_gitlab_glab.cli.sys.exit")
+ def test_run_server_exception(
+ self,
+ mock_sys_exit: MagicMock,
+ mock_logger: MagicMock,
+ mock_asyncio_run: MagicMock,
+ mock_setup_logging: MagicMock,
+ mock_parse_args: MagicMock,
+ mock_validate_args: MagicMock,
+ ) -> None:
+ """Test server run with exception."""
+ # Mock args
+ mock_args = MagicMock()
+ mock_args.transport = "stdio"
+ mock_args.host = "127.0.0.1"
+ mock_args.port = 8080
+ mock_args.log_level = "INFO"
+ mock_parse_args.return_value = mock_args
+ mock_validate_args.return_value = mock_args
+
+ # Mock Exception
+ mock_asyncio_run.side_effect = Exception("Test error")
+
+ # Call run_server
+ run_server()
+
+ # Verify args were parsed and validated
+ mock_parse_args.assert_called_once()
+ mock_validate_args.assert_called_once_with(mock_args)
+
+ # Verify logging was set up
+ mock_setup_logging.assert_called_once_with("INFO", "stdio")
+
+ # Verify server was run
+ mock_asyncio_run.assert_called_once()
+
+ # Verify exception was logged
+ mock_logger.error.assert_called_once_with("Error running server: Test error")
+
+ # Verify sys.exit was called
+ mock_sys_exit.assert_called_once_with(1)