mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-10-20 05:15:31 +00:00
- Sweep test imports gateway.platforms.{telegram,feishu,matrix,dingtalk,whatsapp}
(+ telegram_network / feishu satellites) -> plugins.platforms.<x>.adapter
across ~68 test files; both 'from X import' and 'from gateway.platforms import X'
forms.
- _is_platform_connected now forces discover_plugins() before the registry
lookup so get_connected_platforms() works on directly-constructed GatewayConfig
(fixes dingtalk-recognised tests after its checker moved to the plugin).
- telegram _apply_yaml_config no longer re-emits generic shared-config keys
(reply_prefix etc.) that _merge_platform_map already merges with top-level
precedence, while still passing through telegram-specific extras (base_url).
- prompt_choice lives in hermes_cli.setup, not cli_output — fixed the import in
feishu/dingtalk interactive_setup and the test patch target.
- test_setup_feishu rewritten to drive interactive_setup via the plugin.
56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
"""Tests for Telegram document-size cap.
|
|
|
|
The public Telegram Bot API caps `getFile` at 20MB. A locally-hosted
|
|
`telegram-bot-api` server raises that ceiling to 2GB. We treat the presence
|
|
of `extra.base_url` as the explicit opt-in to the higher cap.
|
|
"""
|
|
|
|
import sys
|
|
from unittest.mock import MagicMock
|
|
|
|
from gateway.config import PlatformConfig
|
|
|
|
|
|
def _ensure_telegram_mock():
|
|
if "telegram" in sys.modules and hasattr(sys.modules["telegram"], "__file__"):
|
|
return
|
|
|
|
telegram_mod = MagicMock()
|
|
telegram_mod.ext.ContextTypes.DEFAULT_TYPE = type(None)
|
|
telegram_mod.constants.ParseMode.MARKDOWN_V2 = "MarkdownV2"
|
|
telegram_mod.constants.ChatType.GROUP = "group"
|
|
telegram_mod.constants.ChatType.SUPERGROUP = "supergroup"
|
|
telegram_mod.constants.ChatType.CHANNEL = "channel"
|
|
telegram_mod.constants.ChatType.PRIVATE = "private"
|
|
|
|
for name in ("telegram", "telegram.ext", "telegram.constants", "telegram.request"):
|
|
sys.modules.setdefault(name, telegram_mod)
|
|
|
|
|
|
_ensure_telegram_mock()
|
|
|
|
from plugins.platforms.telegram.adapter import TelegramAdapter # noqa: E402
|
|
|
|
|
|
def test_max_doc_bytes_defaults_to_20mb_without_base_url():
|
|
adapter = TelegramAdapter(PlatformConfig(enabled=True, token="***", extra={}))
|
|
assert adapter._max_doc_bytes == 20 * 1024 * 1024
|
|
|
|
|
|
def test_max_doc_bytes_raised_to_2gb_when_base_url_set():
|
|
adapter = TelegramAdapter(
|
|
PlatformConfig(
|
|
enabled=True,
|
|
token="***",
|
|
extra={"base_url": "http://localhost:8081/bot"},
|
|
)
|
|
)
|
|
assert adapter._max_doc_bytes == 2 * 1024 * 1024 * 1024
|
|
|
|
|
|
def test_max_doc_bytes_empty_base_url_keeps_default():
|
|
"""An empty/falsy `base_url` should not flip the cap — only a real URL does."""
|
|
adapter = TelegramAdapter(
|
|
PlatformConfig(enabled=True, token="***", extra={"base_url": ""}),
|
|
)
|
|
assert adapter._max_doc_bytes == 20 * 1024 * 1024
|