Skip to main content
Glama
test_config.py4.25 kB
"""Tests for configuration management.""" import json import os import tempfile from pathlib import Path import pytest from sharepoint_mcp.config import Config, ConfigurationError, load_config, save_config def test_config_from_env_variables(monkeypatch): """Test loading configuration from environment variables.""" monkeypatch.setenv("AZURE_CLIENT_ID", "test-client-id") monkeypatch.setenv("AZURE_TENANT_ID", "test-tenant-id") config = load_config() assert config.client_id == "test-client-id" assert config.tenant_id == "test-tenant-id" assert config.redirect_uri == "http://localhost:8765/callback" assert config.log_level == "INFO" def test_config_from_sharepoint_env_variables(monkeypatch): """Test loading configuration from SHAREPOINT_* environment variables.""" monkeypatch.setenv("SHAREPOINT_CLIENT_ID", "sp-client-id") monkeypatch.setenv("SHAREPOINT_TENANT_ID", "sp-tenant-id") config = load_config() assert config.client_id == "sp-client-id" assert config.tenant_id == "sp-tenant-id" def test_config_custom_values_from_env(monkeypatch): """Test loading custom configuration values from environment.""" monkeypatch.setenv("AZURE_CLIENT_ID", "test-client-id") monkeypatch.setenv("AZURE_TENANT_ID", "test-tenant-id") monkeypatch.setenv("REDIRECT_URI", "http://localhost:9000/callback") monkeypatch.setenv("LOG_LEVEL", "DEBUG") config = load_config() assert config.redirect_uri == "http://localhost:9000/callback" assert config.log_level == "DEBUG" def test_config_from_file(monkeypatch, tmp_path): """Test loading configuration from file.""" # Clear environment variables monkeypatch.delenv("AZURE_CLIENT_ID", raising=False) monkeypatch.delenv("AZURE_TENANT_ID", raising=False) monkeypatch.delenv("SHAREPOINT_CLIENT_ID", raising=False) monkeypatch.delenv("SHAREPOINT_TENANT_ID", raising=False) # Create config file config_dir = tmp_path / "sharepoint-mcp" config_dir.mkdir() config_file = config_dir / "config.json" config_data = { "client_id": "file-client-id", "tenant_id": "file-tenant-id", "redirect_uri": "http://localhost:8080/callback", "log_level": "WARNING", } with open(config_file, "w") as f: json.dump(config_data, f) # Mock platformdirs to return our temp path monkeypatch.setattr("sharepoint_mcp.config.platformdirs.user_config_dir", lambda x: str(config_dir)) config = load_config() assert config.client_id == "file-client-id" assert config.tenant_id == "file-tenant-id" assert config.redirect_uri == "http://localhost:8080/callback" assert config.log_level == "WARNING" def test_config_missing_raises_error(monkeypatch): """Test that missing configuration raises ConfigurationError.""" # Clear all environment variables monkeypatch.delenv("AZURE_CLIENT_ID", raising=False) monkeypatch.delenv("AZURE_TENANT_ID", raising=False) monkeypatch.delenv("SHAREPOINT_CLIENT_ID", raising=False) monkeypatch.delenv("SHAREPOINT_TENANT_ID", raising=False) # Mock platformdirs to return a non-existent directory monkeypatch.setattr("sharepoint_mcp.config.platformdirs.user_config_dir", lambda x: "/nonexistent") with pytest.raises(ConfigurationError, match="Missing configuration"): load_config() def test_save_config(tmp_path, monkeypatch): """Test saving configuration to file.""" config_dir = tmp_path / "sharepoint-mcp" monkeypatch.setattr("sharepoint_mcp.config.platformdirs.user_config_dir", lambda x: str(config_dir)) config = Config( client_id="save-test-client-id", tenant_id="save-test-tenant-id", redirect_uri="http://localhost:7000/callback", log_level="ERROR", ) save_config(config) # Verify file was created config_file = config_dir / "config.json" assert config_file.exists() # Verify contents with open(config_file) as f: data = json.load(f) assert data["client_id"] == "save-test-client-id" assert data["tenant_id"] == "save-test-tenant-id" assert data["redirect_uri"] == "http://localhost:7000/callback" assert data["log_level"] == "ERROR"

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/ezemriv/sharepoint-mcp'

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