"""配置管理器单元测试."""
import pytest
from pathlib import Path
from src.config_manager import ConfigManager, Neo4jConfig, APIConfig, ServerConfig
class TestConfigManager:
"""配置管理器测试类."""
def test_initialization(self, config_manager):
"""测试初始化."""
assert config_manager is not None
assert config_manager.config_path is not None
def test_configure_neo4j(self, config_manager):
"""测试配置 Neo4j."""
result = config_manager.configure_neo4j(
uri="bolt://localhost:7687",
username="neo4j",
password="test_password",
database="neo4j"
)
assert result['success'] is True
assert 'config' in result
def test_configure_neo4j_invalid(self, config_manager):
"""测试无效的 Neo4j 配置."""
result = config_manager.configure_neo4j(
uri="",
username="",
password="",
database=""
)
# 应该仍然成功(配置保存),但连接会失败
assert result['success'] is True
def test_configure_api(self, config_manager):
"""测试配置 API."""
result = config_manager.configure_api(
provider="openai",
api_key="test_key",
model="gpt-4"
)
assert result['success'] is True
def test_configure_api_without_key(self, config_manager):
"""测试配置 API(无 key)."""
result = config_manager.configure_api(
provider="openai",
api_key=None,
model="gpt-4"
)
assert result['success'] is True
def test_get_config_status(self, config_manager):
"""测试获取配置状态."""
status = config_manager.get_config_status()
assert 'neo4j_configured' in status
assert 'api_configured' in status
assert 'group_id' in status
def test_reset_config(self, config_manager):
"""测试重置配置."""
# 先配置
config_manager.configure_neo4j(
uri="bolt://localhost:7687",
username="neo4j",
password="test"
)
# 再重置
result = config_manager.reset_config()
assert result['success'] is True
# 验证已重置
status = config_manager.get_config_status()
assert status['neo4j_configured'] is False
def test_set_group_id(self, config_manager):
"""测试设置组 ID."""
result = config_manager.set_group_id("test_group")
assert result['success'] is True
status = config_manager.get_config_status()
assert status['group_id'] == "test_group"
def test_get_neo4j_config(self, config_manager):
"""测试获取 Neo4j 配置."""
config_manager.configure_neo4j(
uri="bolt://localhost:7687",
username="neo4j",
password="test"
)
config = config_manager.get_neo4j_config()
assert config is not None
assert config.uri == "bolt://localhost:7687"
assert config.username == "neo4j"
def test_get_neo4j_config_none(self, temp_config_dir):
"""测试获取未配置的 Neo4j 配置."""
from src.config_manager import ConfigManager
# 使用全新的配置管理器,确保没有预先配置
fresh_config_path = temp_config_dir / ".graphitiace_fresh" / "config.json"
fresh_config_path.parent.mkdir(parents=True, exist_ok=True)
fresh_manager = ConfigManager(config_path=fresh_config_path)
config = fresh_manager.get_neo4j_config()
assert config is None
def test_get_api_config(self, config_manager):
"""测试获取 API 配置."""
config_manager.configure_api(
provider="openai",
api_key="test_key"
)
config = config_manager.get_api_config()
assert config is not None
assert config.provider == "openai"
assert config.api_key == "test_key"
def test_get_api_config_none(self, temp_config_dir):
"""测试获取未配置的 API 配置."""
from src.config_manager import ConfigManager
# 使用全新的配置管理器,确保没有预先配置
fresh_config_path = temp_config_dir / ".graphitiace_fresh2" / "config.json"
fresh_config_path.parent.mkdir(parents=True, exist_ok=True)
fresh_manager = ConfigManager(config_path=fresh_config_path)
config = fresh_manager.get_api_config()
# 可能返回 None 或默认配置
assert config is None or config.api_key is None
def test_config_persistence(self, temp_config_dir, config_manager):
"""测试配置持久化."""
# 配置
config_manager.configure_neo4j(
uri="bolt://localhost:7687",
username="neo4j",
password="test"
)
config_manager.set_group_id("test_group")
# 创建新实例,应该能读取配置
new_manager = ConfigManager(config_path=config_manager.config_path)
status = new_manager.get_config_status()
assert status['neo4j_configured'] is True
assert status['group_id'] == "test_group"