Skip to main content
Glama
danohn

mcpcap

by danohn
test_cli.py4.32 kB
"""Tests for CLI functionality.""" from unittest.mock import Mock, patch from mcpcap.cli import main class TestCLI: """Test CLI functionality.""" @patch("mcpcap.cli.MCPServer") @patch("mcpcap.cli.Config") @patch("sys.argv", ["mcpcap"]) def test_main_success(self, mock_config, mock_server): """Test successful main execution.""" # Setup mocks config_instance = Mock() mock_config.return_value = config_instance server_instance = Mock() mock_server.return_value = server_instance # Run main result = main() # Verify behavior mock_config.assert_called_once_with( modules=["dns", "dhcp", "icmp", "capinfos"], max_packets=None, ) mock_server.assert_called_once_with(config_instance) server_instance.run.assert_called_once() assert result == 0 @patch("mcpcap.cli.Config") @patch("sys.argv", ["mcpcap", "--max-packets", "-1"]) def test_main_invalid_config(self, mock_config): """Test main with invalid configuration.""" # Setup mock to raise ValueError mock_config.side_effect = ValueError("max_packets must be a positive integer") # Run main and capture output with patch("sys.stderr") as mock_stderr: result = main() # Verify error handling mock_stderr.write.assert_any_call( "Error: max_packets must be a positive integer" ) assert result == 1 @patch("mcpcap.cli.MCPServer") @patch("mcpcap.cli.Config") @patch("sys.argv", ["mcpcap"]) def test_main_keyboard_interrupt(self, mock_config, mock_server): """Test main with keyboard interrupt.""" # Setup mocks config_instance = Mock() mock_config.return_value = config_instance server_instance = Mock() server_instance.run.side_effect = KeyboardInterrupt() mock_server.return_value = server_instance # Run main and capture output with patch("sys.stderr") as mock_stderr: result = main() # Verify graceful shutdown mock_stderr.write.assert_any_call("\\nServer stopped by user") assert result == 0 @patch("mcpcap.cli.MCPServer") @patch("mcpcap.cli.Config") @patch("sys.argv", ["mcpcap"]) def test_main_unexpected_error(self, mock_config, mock_server): """Test main with unexpected error.""" # Setup mocks config_instance = Mock() mock_config.return_value = config_instance server_instance = Mock() server_instance.run.side_effect = RuntimeError("Unexpected error") mock_server.return_value = server_instance # Run main and capture output with patch("sys.stderr") as mock_stderr: result = main() # Verify error handling mock_stderr.write.assert_any_call("Unexpected error: Unexpected error") assert result == 1 @patch("mcpcap.cli.MCPServer") @patch("mcpcap.cli.Config") @patch("sys.argv", ["mcpcap", "--modules", "dhcp"]) def test_main_dhcp_module(self, mock_config, mock_server): """Test main with DHCP module specified.""" # Setup mocks config_instance = Mock() mock_config.return_value = config_instance server_instance = Mock() mock_server.return_value = server_instance # Run main result = main() # Verify DHCP configuration mock_config.assert_called_once_with( modules=["dhcp"], max_packets=None, ) assert result == 0 @patch("mcpcap.cli.MCPServer") @patch("mcpcap.cli.Config") @patch("sys.argv", ["mcpcap", "--modules", "dns,dhcp"]) def test_main_multiple_modules(self, mock_config, mock_server): """Test main with multiple modules specified.""" # Setup mocks config_instance = Mock() mock_config.return_value = config_instance server_instance = Mock() mock_server.return_value = server_instance # Run main result = main() # Verify multi-module configuration mock_config.assert_called_once_with( modules=["dns", "dhcp"], max_packets=None, ) assert result == 0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/danohn/mcpcap'

If you have feedback or need assistance with the MCP directory API, please join our Discord server