Skip to main content
Glama

Ambivo MCP Server

Official
by ambivo-corp
test_config.py5.11 kB
#!/usr/bin/env python3 """ Tests for configuration management """ import pytest import os import json import tempfile from unittest.mock import patch try: from config import ServerConfig, load_config except ImportError: import sys import os sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from config import ServerConfig, load_config class TestServerConfig: """Test server configuration functionality""" def test_default_config(self): """Test default configuration values""" config = ServerConfig() assert config.base_url == "https://goferapi.ambivo.com" assert config.timeout == 30.0 assert config.rate_limit_requests == 100 assert config.log_level == "INFO" assert "lead" in config.allowed_entity_types assert "contact" in config.allowed_entity_types def test_from_env(self): """Test configuration from environment variables""" env_vars = { "AMBIVO_BASE_URL": "https://test.ambivo.com", "AMBIVO_TIMEOUT": "60.0", "AMBIVO_RATE_LIMIT_REQUESTS": "200", "AMBIVO_LOG_LEVEL": "DEBUG", "AMBIVO_SERVER_NAME": "test-server" } with patch.dict(os.environ, env_vars): config = ServerConfig.from_env() assert config.base_url == "https://test.ambivo.com" assert config.timeout == 60.0 assert config.rate_limit_requests == 200 assert config.log_level == "DEBUG" assert config.server_name == "test-server" def test_from_file(self): """Test configuration from JSON file""" config_data = { "base_url": "https://file.ambivo.com", "timeout": 45.0, "rate_limit_requests": 150, "log_level": "WARNING", "max_query_length": 2000 } with tempfile.NamedTemporaryFile(mode='w', suffix='.json', delete=False) as f: json.dump(config_data, f) config_path = f.name try: config = ServerConfig.from_file(config_path) assert config.base_url == "https://file.ambivo.com" assert config.timeout == 45.0 assert config.rate_limit_requests == 150 assert config.log_level == "WARNING" assert config.max_query_length == 2000 finally: os.unlink(config_path) def test_from_file_not_found(self): """Test configuration from non-existent file""" with pytest.raises(FileNotFoundError): ServerConfig.from_file("/nonexistent/config.json") def test_validation_success(self): """Test successful configuration validation""" config = ServerConfig() config.validate() # Should not raise def test_validation_invalid_timeout(self): """Test validation with invalid timeout""" config = ServerConfig(timeout=0) with pytest.raises(ValueError, match="Timeout must be positive"): config.validate() def test_validation_invalid_rate_limit(self): """Test validation with invalid rate limit""" config = ServerConfig(rate_limit_requests=0) with pytest.raises(ValueError, match="Rate limit requests must be positive"): config.validate() def test_validation_invalid_url(self): """Test validation with invalid base URL""" config = ServerConfig(base_url="not-a-url") with pytest.raises(ValueError, match="Base URL must start with"): config.validate() def test_setup_logging(self): """Test logging setup""" config = ServerConfig(log_level="DEBUG") logger = config.setup_logging() assert logger.name == "ambivo-mcp" assert logger.level == 10 # DEBUG level class TestLoadConfig: """Test configuration loading function""" def test_load_config_from_env(self): """Test loading configuration from environment""" with patch.dict(os.environ, {"AMBIVO_TIMEOUT": "90.0"}): config = load_config() assert config.timeout == 90.0 def test_load_config_from_file(self): """Test loading configuration from file""" config_data = {"timeout": 120.0, "log_level": "ERROR"} with tempfile.NamedTemporaryFile(mode='w', suffix='.json', delete=False) as f: json.dump(config_data, f) config_path = f.name try: config = load_config(config_path) assert config.timeout == 120.0 assert config.log_level == "ERROR" finally: os.unlink(config_path) def test_load_config_file_not_found(self): """Test loading configuration when file doesn't exist""" # Should fall back to environment config = load_config("/nonexistent/config.json") assert config.base_url == "https://goferapi.ambivo.com" # default

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/ambivo-corp/ambivo-mcp-server'

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