53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
from unittest.mock import AsyncMock
|
|
|
|
import pytest
|
|
|
|
from mcp_server.tools import exploration
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_queries_never_start_exploration_and_guidance_uses_shared_route(monkeypatch):
|
|
request = AsyncMock(return_value={"status": "running"})
|
|
monkeypatch.setattr(exploration, "_request", request)
|
|
await exploration.mobile_exploration("get", exploration_id="conversation", after=15)
|
|
request.assert_awaited_once_with("GET", "/api/explorations/conversation", params={"after": 15})
|
|
with pytest.raises(ValueError):
|
|
await exploration.mobile_exploration(
|
|
"get", exploration_id="conversation", payload={"goal": "不该执行"}
|
|
)
|
|
await exploration.mobile_exploration(
|
|
"message",
|
|
exploration_id="conversation",
|
|
request_id="guidance",
|
|
payload={"text": "先点击设置"},
|
|
)
|
|
assert request.call_args.args == ("POST", "/api/explorations/conversation/messages")
|
|
assert request.call_args.kwargs["json"] == {"text": "先点击设置", "request_id": "guidance"}
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_demo_requires_stable_request_and_valid_identifiers(monkeypatch):
|
|
request = AsyncMock(return_value={})
|
|
monkeypatch.setattr(exploration, "_request", request)
|
|
with pytest.raises(ValueError):
|
|
await exploration.mobile_exploration("demonstrate", exploration_id="session")
|
|
with pytest.raises(ValueError):
|
|
await exploration.mobile_exploration(
|
|
"demo_finish",
|
|
exploration_id="session",
|
|
demonstration_id="../foreign",
|
|
request_id="finish",
|
|
)
|
|
request.assert_not_awaited()
|
|
await exploration.mobile_exploration(
|
|
"demo_extend",
|
|
exploration_id="session",
|
|
demonstration_id="demo",
|
|
request_id="extend",
|
|
payload={"seconds": 900},
|
|
)
|
|
assert request.call_args.args == (
|
|
"POST",
|
|
"/api/explorations/session/demonstrations/demo/extend",
|
|
)
|