diff options
Diffstat (limited to 'servers/gitlab_glab/tests/test_cli_integration.py')
| -rw-r--r-- | servers/gitlab_glab/tests/test_cli_integration.py | 133 |
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) |
