diff --git a/tests/gateway/test_telegram_approval_buttons.py b/tests/gateway/test_telegram_approval_buttons.py index c01e2cf7fc5..da9297e562c 100644 --- a/tests/gateway/test_telegram_approval_buttons.py +++ b/tests/gateway/test_telegram_approval_buttons.py @@ -196,6 +196,30 @@ class TestTelegramExecApproval: ["❌ Deny"], ] + @pytest.mark.asyncio + async def test_smart_deny_two_buttons_share_one_row(self, monkeypatch): + """smart_deny yields 2 buttons — they pair into a single readable row.""" + adapter = _make_adapter() + adapter._bot.send_message = AsyncMock(return_value=SimpleNamespace(message_id=42)) + captured_rows = [] + monkeypatch.setattr( + "plugins.platforms.telegram.adapter.InlineKeyboardButton", + lambda text, callback_data: text, + ) + monkeypatch.setattr( + "plugins.platforms.telegram.adapter.InlineKeyboardMarkup", + lambda rows: captured_rows.extend(rows) or rows, + ) + + await adapter.send_exec_approval( + chat_id="12345", command="curl example.test", session_key="s", + allow_permanent=False, smart_denied=True, + ) + + assert captured_rows == [ + ["✅ Allow Once", "❌ Deny"], + ] + @pytest.mark.asyncio async def test_stores_approval_state(self): adapter = _make_adapter()