"""健康检查详细测试."""
import pytest
from unittest.mock import Mock, MagicMock, patch
from src.health_check import health_check
from src.config_manager import ConfigManager
from src.graphiti_client import GraphitiClient
class TestHealthCheckDetailed:
"""健康检查详细测试类."""
@pytest.fixture
def config_manager(self, temp_config_dir):
"""创建配置管理器."""
return ConfigManager(config_path=temp_config_dir / ".graphitiace" / "config.json")
def test_health_check_no_config(self, config_manager):
"""测试健康检查(无配置)."""
# health_check 不接受参数,使用全局配置
result = health_check()
assert result is not None
assert "status" in result
assert "checks" in result
def test_health_check_with_neo4j_config(self, config_manager):
"""测试健康检查(有 Neo4j 配置)."""
# 配置 Neo4j
config_manager.configure_neo4j(
uri="bolt://localhost:7687",
username="neo4j",
password="test"
)
result = health_check()
assert result is not None
assert "status" in result
assert "checks" in result
def test_health_check_with_api_config(self, config_manager):
"""测试健康检查(有 API 配置)."""
# 配置 API
config_manager.configure_api(
provider="openai",
api_key="test_key"
)
result = health_check()
assert result is not None
assert "status" in result
assert "checks" in result
def test_health_check_with_both_configs(self, config_manager):
"""测试健康检查(有 Neo4j 和 API 配置)."""
# 配置 Neo4j
config_manager.configure_neo4j(
uri="bolt://localhost:7687",
username="neo4j",
password="test"
)
# 配置 API
config_manager.configure_api(
provider="openai",
api_key="test_key"
)
result = health_check()
assert result is not None
assert "status" in result
assert "checks" in result
def test_health_check_connection_failure(self, config_manager):
"""测试健康检查(连接失败)."""
# 配置 Neo4j
config_manager.configure_neo4j(
uri="bolt://invalid:7687",
username="neo4j",
password="test"
)
result = health_check()
assert result is not None
assert "status" in result
# 连接应该失败
assert result["status"] in ["healthy", "degraded", "unhealthy"]