We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/89jobrien/mcp-joecc'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
"""Tests for configuration management.
Comprehensive tests for Settings and configuration loading.
"""
import tempfile
from pathlib import Path
from mcp_task_aggregator.config import Settings, get_settings, reset_settings
class TestSettings:
"""Tests for Settings class."""
def test_settings_defaults(self):
"""Test default settings values."""
settings = Settings()
assert settings.database_path == Path.home() / ".mcp-task-aggregator" / "tasks.db"
assert settings.jira_url == ""
assert settings.jira_email == ""
assert settings.jira_api_token == ""
assert settings.jira_project_key == "AGENTOPS"
assert settings.github_token == ""
assert settings.github_repos == []
assert settings.linear_api_key == ""
assert settings.log_level == "INFO"
assert settings.log_file is None
assert settings.sync_batch_size == 100
def test_settings_custom_values(self):
"""Test settings with custom values."""
with tempfile.TemporaryDirectory() as tmpdir:
custom_db = Path(tmpdir) / "custom.db"
custom_log = Path(tmpdir) / "app.log"
settings = Settings(
database_path=custom_db,
jira_url="https://custom.atlassian.net",
jira_email="user@example.com",
jira_api_token="token123",
jira_project_key="CUSTOM",
github_token="ghp_token",
github_repos=["org/repo1", "org/repo2"],
linear_api_key="lin_key",
log_level="DEBUG",
log_file=custom_log,
sync_batch_size=50,
)
assert settings.database_path == custom_db
assert settings.jira_url == "https://custom.atlassian.net"
assert settings.jira_email == "user@example.com"
assert settings.jira_api_token == "token123"
assert settings.jira_project_key == "CUSTOM"
assert settings.github_token == "ghp_token"
assert settings.github_repos == ["org/repo1", "org/repo2"]
assert settings.linear_api_key == "lin_key"
assert settings.log_level == "DEBUG"
assert settings.log_file == custom_log
assert settings.sync_batch_size == 50
def test_jira_configured_property_true(self):
"""Test jira_configured property returns True when configured."""
settings = Settings(
jira_url="https://test.atlassian.net",
jira_email="test@example.com",
jira_api_token="token",
)
assert settings.jira_configured is True
def test_jira_configured_property_false_missing_url(self):
"""Test jira_configured property returns False when URL missing."""
settings = Settings(
jira_url="",
jira_email="test@example.com",
jira_api_token="token",
)
assert settings.jira_configured is False
def test_jira_configured_property_false_missing_email(self):
"""Test jira_configured property returns False when email missing."""
settings = Settings(
jira_url="https://test.atlassian.net",
jira_email="",
jira_api_token="token",
)
assert settings.jira_configured is False
def test_jira_configured_property_false_missing_token(self):
"""Test jira_configured property returns False when token missing."""
settings = Settings(
jira_url="https://test.atlassian.net",
jira_email="test@example.com",
jira_api_token="",
)
assert settings.jira_configured is False
def test_github_configured_property_true(self):
"""Test github_configured property returns True when configured."""
settings = Settings(
github_token="ghp_token",
github_repos=["org/repo1"],
)
assert settings.github_configured is True
def test_github_configured_property_false_missing_token(self):
"""Test github_configured property returns False when token missing."""
settings = Settings(
github_token="",
github_repos=["org/repo1"],
)
assert settings.github_configured is False
def test_github_configured_property_false_empty_repos(self):
"""Test github_configured property returns False when repos empty."""
settings = Settings(
github_token="ghp_token",
github_repos=[],
)
assert settings.github_configured is False
def test_linear_configured_property_true(self):
"""Test linear_configured property returns True when configured."""
settings = Settings(
linear_api_key="lin_key",
)
assert settings.linear_configured is True
def test_linear_configured_property_false(self):
"""Test linear_configured property returns False when not configured."""
settings = Settings(
linear_api_key="",
)
assert settings.linear_configured is False
class TestGlobalSettings:
"""Tests for global settings functions."""
def test_get_settings_returns_singleton(self):
"""Test get_settings returns the same instance."""
reset_settings()
settings1 = get_settings()
settings2 = get_settings()
assert settings1 is settings2
def test_reset_settings_clears_singleton(self):
"""Test reset_settings clears the global instance."""
reset_settings()
settings1 = get_settings()
reset_settings()
settings2 = get_settings()
assert settings1 is not settings2
def test_get_settings_creates_new_after_reset(self):
"""Test get_settings creates new instance after reset."""
reset_settings()
settings1 = get_settings()
assert settings1 is not None
reset_settings()
settings2 = get_settings()
assert settings2 is not None
assert settings1 is not settings2