Prometheus MCP Server

by pab1it0
Verified
"""Tests for the main module.""" import os import pytest from unittest.mock import patch, MagicMock from prometheus_mcp_server.main import setup_environment, run_server def test_setup_environment_success(): """Test successful environment setup.""" # Setup os.environ["PROMETHEUS_URL"] = "http://test:9090" # Execute with mocked print function with patch("builtins.print") as mock_print: result = setup_environment() # Verify assert result is True mock_print.assert_any_call("Prometheus configuration:") mock_print.assert_any_call(" Server URL: http://test:9090") # Clean up del os.environ["PROMETHEUS_URL"] def test_setup_environment_missing_url(): """Test environment setup with missing URL.""" # Setup - ensure URL is not in environment if "PROMETHEUS_URL" in os.environ: del os.environ["PROMETHEUS_URL"] # Execute with mocked print function with patch("builtins.print") as mock_print: result = setup_environment() # Verify assert result is False mock_print.assert_any_call("ERROR: PROMETHEUS_URL environment variable is not set") def test_setup_environment_with_auth(): """Test environment setup with authentication.""" # Setup os.environ["PROMETHEUS_URL"] = "http://test:9090" os.environ["PROMETHEUS_USERNAME"] = "user" os.environ["PROMETHEUS_PASSWORD"] = "pass" # Execute with mocked print function with patch("builtins.print") as mock_print: result = setup_environment() # Verify assert result is True mock_print.assert_any_call("Authentication: Using basic auth") # Clean up del os.environ["PROMETHEUS_URL"] del os.environ["PROMETHEUS_USERNAME"] del os.environ["PROMETHEUS_PASSWORD"] @patch("prometheus_mcp_server.main.setup_environment") @patch("prometheus_mcp_server.main.mcp.run") @patch("prometheus_mcp_server.main.sys.exit") def test_run_server_success(mock_exit, mock_run, mock_setup): """Test successful server run.""" # Setup mock_setup.return_value = True # Execute run_server() # Verify mock_setup.assert_called_once() mock_run.assert_called_once_with(transport="stdio") mock_exit.assert_not_called() @patch("prometheus_mcp_server.main.setup_environment") @patch("prometheus_mcp_server.main.mcp.run") @patch("prometheus_mcp_server.main.sys.exit") def test_run_server_setup_failure(mock_exit, mock_run, mock_setup): """Test server run with setup failure.""" # Setup mock_setup.return_value = False # Execute run_server() # Verify mock_setup.assert_called_once() mock_run.assert_not_called() mock_exit.assert_called_once_with(1)