Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
"""Regression guard: send_slash_confirm must use format_message + MARKDOWN_V2."""
|
||||
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from types import SimpleNamespace
|
||||
from unittest.mock import AsyncMock, MagicMock
|
||||
|
||||
import pytest
|
||||
|
||||
_repo = str(Path(__file__).resolve().parents[2])
|
||||
if _repo not in sys.path:
|
||||
sys.path.insert(0, _repo)
|
||||
from plugins.platforms.telegram.adapter import TelegramAdapter
|
||||
from gateway.config import PlatformConfig
|
||||
|
||||
|
||||
def _make_adapter():
|
||||
config = PlatformConfig(enabled=True, token="test-token", extra={})
|
||||
adapter = TelegramAdapter(config)
|
||||
adapter._bot = AsyncMock()
|
||||
adapter._app = MagicMock()
|
||||
return adapter
|
||||
|
||||
|
||||
class TestSendSlashConfirm:
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_uses_markdown_v2_and_escapes_special_chars(self):
|
||||
"""send_slash_confirm must pass preview through format_message and use
|
||||
MARKDOWN_V2 — so commands with underscores, dots, or brackets don't
|
||||
raise BadRequest: Can't parse entities."""
|
||||
adapter = _make_adapter()
|
||||
sent = {}
|
||||
|
||||
async def mock_send(**kwargs):
|
||||
sent.update(kwargs)
|
||||
return SimpleNamespace(message_id=7)
|
||||
|
||||
adapter._bot.send_message = AsyncMock(side_effect=mock_send)
|
||||
|
||||
result = await adapter.send_slash_confirm(
|
||||
chat_id="100",
|
||||
title="Confirm",
|
||||
message="/run script_name.sh --flag=value [option]",
|
||||
session_key="sk",
|
||||
confirm_id="cid1",
|
||||
)
|
||||
|
||||
assert result.success is True
|
||||
assert "MARKDOWN_V2" in repr(sent["parse_mode"])
|
||||
# Underscores and dots must be escaped by format_message
|
||||
assert "script\\_name" in sent["text"]
|
||||
assert "\\." in sent["text"]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user