"""配置管理器边界情况测试."""
import pytest
from pathlib import Path
from src.config_manager import ConfigManager
class TestConfigManagerEdgeCases:
"""配置管理器边界情况测试类."""
@pytest.fixture
def config_manager(self, temp_config_dir):
"""创建配置管理器."""
return ConfigManager(config_path=temp_config_dir / ".graphitiace" / "config.json")
def test_configure_neo4j_with_empty_uri(self, config_manager):
"""测试使用空 URI 配置 Neo4j."""
result = config_manager.configure_neo4j(
uri="",
username="neo4j",
password="test"
)
# 配置管理器可能会接受空 URI(由连接时验证)
assert result is not None
assert isinstance(result, dict)
def test_configure_neo4j_with_none_username(self, config_manager):
"""测试使用 None 用户名配置 Neo4j."""
try:
result = config_manager.configure_neo4j(
uri="bolt://localhost:7687",
username=None,
password="test"
)
# 应该返回 False 或抛出异常
assert result is False or result is None
except (TypeError, ValueError):
assert True
def test_configure_api_with_empty_provider(self, config_manager):
"""测试使用空提供商配置 API."""
result = config_manager.configure_api(provider="")
# 应该处理空字符串
assert result is not None
def test_get_config_status_when_not_configured(self, config_manager):
"""测试未配置时获取配置状态."""
status = config_manager.get_config_status()
assert status is not None
assert isinstance(status, dict)
def test_get_group_id_default(self, config_manager):
"""测试获取默认组 ID."""
group_id = config_manager.get_group_id()
assert group_id is not None
assert isinstance(group_id, str)
def test_set_group_id_with_empty_string(self, config_manager):
"""测试使用空字符串设置组 ID."""
result = config_manager.set_group_id("")
# 应该处理空字符串或使用默认值
assert result is not None
def test_set_group_id_with_none(self, config_manager):
"""测试使用 None 设置组 ID."""
try:
result = config_manager.set_group_id(None)
# 应该处理 None 或使用默认值
assert result is not None
except (TypeError, ValueError):
assert True
def test_reset_configuration(self, config_manager):
"""测试重置配置."""
# 先配置一些内容
config_manager.configure_neo4j(
uri="bolt://localhost:7687",
username="neo4j",
password="test"
)
# 检查是否有 reset_configuration 方法
if hasattr(config_manager, 'reset_configuration'):
result = config_manager.reset_configuration()
assert result is not None
# 验证配置已重置
status = config_manager.get_config_status()
assert status is not None
else:
# 如果没有 reset_configuration 方法,测试配置状态
status = config_manager.get_config_status()
assert status is not None