"""Tests for raw console tool (safety-gated).""" import pytest from conftest import parse_result from fastmcp import Client @pytest.mark.anyio async def test_send_raw_command(mcp_client: Client): result = await mcp_client.call_tool( "send_raw_command", {"command": "?"} ) data = parse_result(result) assert "response" in data assert "Available commands" in data["response"] @pytest.mark.anyio async def test_q_command_blocked(mcp_client: Client): result = await mcp_client.call_tool( "send_raw_command", {"command": "q"} ) data = parse_result(result) assert data["blocked"] is True assert "power cycle" in data["error"] @pytest.mark.anyio async def test_q_command_blocked_with_whitespace(mcp_client: Client): result = await mcp_client.call_tool( "send_raw_command", {"command": " Q "} ) data = parse_result(result) assert data["blocked"] is True @pytest.mark.anyio async def test_submenu_navigation(mcp_client: Client): result = await mcp_client.call_tool( "send_raw_command", {"command": "mot"} ) data = parse_result(result) assert "MOT>" in data["response"] @pytest.mark.anyio async def test_raw_motor_query(mcp_client: Client): # Enter mot submenu first await mcp_client.call_tool("send_raw_command", {"command": "mot"}) # Query position result = await mcp_client.call_tool( "send_raw_command", {"command": "a"} ) data = parse_result(result) assert "Angle[0]" in data["response"] assert "Angle[1]" in data["response"]