Skip to main content
Glama

Wazuh MCP Server

by gensecaihq
test_config.py6.06 kB
"""Tests for configuration module.""" import os import pytest from unittest.mock import patch try: from pydantic import ValidationError except ImportError: # Fallback for compatibility class ValidationError(Exception): pass from wazuh_mcp_server.config import WazuhConfig, ConfigurationError class TestWazuhConfig: """Test cases for WazuhConfig.""" def test_config_creation_with_valid_data(self): """Test configuration creation with valid data.""" config = WazuhConfig( host="test.example.com", username="testuser", password="testpassword123" ) assert config.host == "test.example.com" assert config.username == "testuser" assert config.password == "testpassword123" assert config.port == 55000 # default assert config.verify_ssl is True # default def test_config_from_env_valid(self): """Test configuration from environment variables.""" env_vars = { "WAZUH_HOST": "env.example.com", "WAZUH_USER": "envuser", "WAZUH_PASS": "envpassword123", "WAZUH_PORT": "55001", "VERIFY_SSL": "false" } with patch.dict(os.environ, env_vars, clear=False): config = WazuhConfig.from_env() assert config.host == "env.example.com" assert config.username == "envuser" assert config.password == "envpassword123" assert config.port == 55001 assert config.verify_ssl is False def test_config_validation_missing_host(self): """Test validation error when host is missing.""" with pytest.raises(ValidationError, match="WAZUH_HOST must be provided"): WazuhConfig( host="", username="testuser", password="testpassword123" ) def test_config_validation_missing_username(self): """Test validation error when username is missing.""" with pytest.raises(ValidationError, match="WAZUH_USER must be provided"): WazuhConfig( host="test.example.com", username="", password="testpassword123" ) def test_config_validation_missing_password(self): """Test validation error when password is missing.""" with pytest.raises(ValidationError, match="WAZUH_PASS must be provided"): WazuhConfig( host="test.example.com", username="testuser", password="" ) def test_config_validation_weak_password(self): """Test validation error for weak passwords.""" with pytest.raises(ValidationError, match="Password is too weak"): WazuhConfig( host="test.example.com", username="testuser", password="admin" ) def test_config_validation_short_password(self): """Test validation error for short passwords.""" with pytest.raises(ValidationError, match="Password must be at least 8 characters"): WazuhConfig( host="test.example.com", username="testuser", password="short" ) def test_config_validation_invalid_port(self): """Test validation error for invalid port.""" with pytest.raises(ValidationError): WazuhConfig( host="test.example.com", username="testuser", password="testpassword123", port=70000 # Invalid port ) def test_config_validation_invalid_log_level(self): """Test validation error for invalid log level.""" with pytest.raises(ValidationError, match="LOG_LEVEL must be one of"): WazuhConfig( host="test.example.com", username="testuser", password="testpassword123", log_level="INVALID" ) def test_base_url_property(self): """Test base_url property.""" config = WazuhConfig( host="test.example.com", port=55001, username="testuser", password="testpassword123" ) assert config.base_url == "https://test.example.com:55001" def test_config_from_env_missing_required(self): """Test configuration error when required env vars are missing.""" # Clear environment env_vars = { "WAZUH_HOST": "", "WAZUH_USER": "", "WAZUH_PASS": "" } with patch.dict(os.environ, env_vars, clear=False): with pytest.raises(ConfigurationError): WazuhConfig.from_env() def test_config_performance_settings(self): """Test performance settings validation.""" config = WazuhConfig( host="test.example.com", username="testuser", password="testpassword123", max_alerts_per_query=5000, max_agents_per_scan=50 ) assert config.max_alerts_per_query == 5000 assert config.max_agents_per_scan == 50 def test_config_feature_flags(self): """Test feature flags.""" config = WazuhConfig( host="test.example.com", username="testuser", password="testpassword123", enable_external_intel=False, enable_ml_analysis=False ) assert config.enable_external_intel is False assert config.enable_ml_analysis is False def test_config_api_keys_optional(self): """Test that API keys are optional.""" config = WazuhConfig( host="test.example.com", username="testuser", password="testpassword123" ) assert config.virustotal_api_key is None assert config.shodan_api_key is None assert config.abuseipdb_api_key is None

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/gensecaihq/Wazuh-MCP-Server'

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