Skip to main content
Glama
test_config.py5.72 kB
"""Tests for configuration management""" import json import os import tempfile import pytest from pathlib import Path from memu_mcp_server.config import Config class TestConfig: """Test configuration loading and validation""" def test_default_config(self): """Test default configuration values""" # Set required environment variable os.environ["MEMU_API_KEY"] = "test_key" try: config = Config() assert config.memu_api_key == "test_key" assert config.memu_base_url == "https://api.memu.so" assert config.server_name == "memu-mcp-server" assert config.server_version == "0.1.0" assert config.log_level == "INFO" assert config.default_user_id == "default_user" assert config.default_agent_id == "default_agent" assert config.max_conversation_length == 8000 assert config.memory_retention_days == 30 assert config.rate_limit_per_minute == 60 assert config.rate_limit_per_hour == 1000 assert config.allowed_origins == "*" assert config.api_timeout == 30 finally: # Clean up if "MEMU_API_KEY" in os.environ: del os.environ["MEMU_API_KEY"] def test_config_from_env_vars(self): """Test configuration loading from environment variables""" env_vars = { "MEMU_API_KEY": "env_test_key", "MEMU_BASE_URL": "https://custom.api.url", "MCP_SERVER_NAME": "custom-server", "LOG_LEVEL": "DEBUG", "DEFAULT_USER_ID": "custom_user", "DEFAULT_AGENT_ID": "custom_agent", "MAX_CONVERSATION_LENGTH": "5000", "MEMORY_RETENTION_DAYS": "15", "RATE_LIMIT_PER_MINUTE": "30", "RATE_LIMIT_PER_HOUR": "500", "API_TIMEOUT": "60" } # Set environment variables for key, value in env_vars.items(): os.environ[key] = value try: config = Config() assert config.memu_api_key == "env_test_key" assert config.memu_base_url == "https://custom.api.url" assert config.server_name == "custom-server" assert config.log_level == "DEBUG" assert config.default_user_id == "custom_user" assert config.default_agent_id == "custom_agent" assert config.max_conversation_length == 5000 assert config.memory_retention_days == 15 assert config.rate_limit_per_minute == 30 assert config.rate_limit_per_hour == 500 assert config.api_timeout == 60 finally: # Clean up environment variables for key in env_vars: if key in os.environ: del os.environ[key] def test_config_from_file(self): """Test configuration loading from JSON file""" config_data = { "memu_api_key": "file_test_key", "memu_base_url": "https://file.api.url", "server_name": "file-server", "log_level": "WARNING", "max_conversation_length": 12000, "api_timeout": 45 } with tempfile.NamedTemporaryFile(mode='w', suffix='.json', delete=False) as f: json.dump(config_data, f) config_file = f.name try: config = Config.from_file(config_file) assert config.memu_api_key == "file_test_key" assert config.memu_base_url == "https://file.api.url" assert config.server_name == "file-server" assert config.log_level == "WARNING" assert config.max_conversation_length == 12000 assert config.api_timeout == 45 # Check that defaults are still used for unspecified values assert config.default_user_id == "default_user" assert config.rate_limit_per_minute == 60 finally: # Clean up temporary file Path(config_file).unlink() def test_config_file_not_found(self): """Test handling of missing configuration file""" with pytest.raises(FileNotFoundError): Config.from_file("nonexistent_config.json") def test_validate_required_fields(self): """Test validation of required configuration fields""" # Test with missing API key config = Config( memu_api_key="", # Empty API key memu_base_url="https://api.memu.so" ) with pytest.raises(ValueError, match="Required configuration field missing: memu_api_key"): config.validate_required_fields() # Test with valid API key config = Config( memu_api_key="valid_key", memu_base_url="https://api.memu.so" ) assert config.validate_required_fields() is True def test_to_dict(self): """Test configuration conversion to dictionary""" os.environ["MEMU_API_KEY"] = "dict_test_key" try: config = Config() config_dict = config.to_dict() assert isinstance(config_dict, dict) assert config_dict["memu_api_key"] == "dict_test_key" assert config_dict["memu_base_url"] == "https://api.memu.so" assert config_dict["server_name"] == "memu-mcp-server" finally: if "MEMU_API_KEY" in os.environ: del os.environ["MEMU_API_KEY"]

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/MonsterOne1/memu-mcp'

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