"""工具配置 Neo4j 连接测试."""
import pytest
from unittest.mock import Mock, MagicMock, patch
from src.tools import handle_tool_call
from src.config_manager import ConfigManager
class TestToolsConfigureNeo4jConnection:
"""工具配置 Neo4j 连接测试类."""
@pytest.fixture
def config_manager(self, temp_config_dir):
"""创建配置管理器."""
return ConfigManager(config_path=temp_config_dir / ".graphitiace" / "config.json")
@pytest.mark.asyncio
async def test_configure_neo4j_with_client_connection_success(self, config_manager):
"""测试配置 Neo4j 后客户端连接成功."""
from src.graphiti_client import GraphitiClient
mock_client = Mock(spec=GraphitiClient)
mock_client.connect.return_value = True
result = await handle_tool_call(
tool_name="configure_neo4j",
arguments={
"uri": "bolt://localhost:7687",
"username": "neo4j",
"password": "test_password",
"database": "neo4j"
},
config_manager=config_manager,
graphiti_client=mock_client
)
assert result is not None
assert isinstance(result, list)
result_text = "".join([str(item.text) if hasattr(item, 'text') else str(item) for item in result])
assert "成功" in result_text or "success" in result_text.lower()
# 验证连接成功消息
assert "已成功连接" in result_text or "连接成功" in result_text or "successfully" in result_text.lower()
@pytest.mark.asyncio
async def test_configure_neo4j_with_client_connection_failure(self, config_manager):
"""测试配置 Neo4j 后客户端连接失败."""
from src.graphiti_client import GraphitiClient
mock_client = Mock(spec=GraphitiClient)
mock_client.connect.return_value = False
result = await handle_tool_call(
tool_name="configure_neo4j",
arguments={
"uri": "bolt://localhost:7687",
"username": "neo4j",
"password": "test_password",
"database": "neo4j"
},
config_manager=config_manager,
graphiti_client=mock_client
)
assert result is not None
assert isinstance(result, list)
result_text = "".join([str(item.text) if hasattr(item, 'text') else str(item) for item in result])
assert "警告" in result_text or "warning" in result_text.lower() or "失败" in result_text or "失败" in result_text