mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
test: add coverage for from_user=None DM fallback
Tests the three cases: - DM with from_user=None: user_id falls back to chat.id - Group with from_user=None: user_id stays None (safe default) - DM with from_user present: user_id uses from_user.id (no regression)
This commit is contained in:
parent
1a9a2d7fe8
commit
aa5f89d3ea
1 changed files with 51 additions and 0 deletions
|
|
@ -645,3 +645,54 @@ def test_group_topic_chat_id_int_string_coercion():
|
|||
|
||||
assert event.auto_skill == "hermes-agent-dev"
|
||||
assert event.source.chat_topic == "Dev"
|
||||
|
||||
|
||||
# ── _build_message_event: from_user=None fallback in DMs ──
|
||||
|
||||
|
||||
def test_build_message_event_dm_from_user_none_falls_back_to_chat_id():
|
||||
"""When from_user is None in a DM, user_id should fall back to chat.id."""
|
||||
from gateway.platforms.base import MessageType
|
||||
|
||||
adapter = _make_adapter()
|
||||
msg = _make_mock_message(chat_id=12345, user_id=42, user_name="Alice")
|
||||
# Simulate from_user being None (edge case on fresh restart / forwarded msg)
|
||||
msg.from_user = None
|
||||
|
||||
event = adapter._build_message_event(msg, MessageType.TEXT)
|
||||
|
||||
# Should fall back to chat.id since chat_type is "dm"
|
||||
assert event.source.user_id == "12345"
|
||||
assert event.source.user_name == "Alice" # falls back to chat.full_name
|
||||
|
||||
|
||||
def test_build_message_event_group_from_user_none_stays_none():
|
||||
"""When from_user is None in a group, user_id should remain None."""
|
||||
from gateway.platforms.base import MessageType
|
||||
|
||||
adapter = _make_adapter()
|
||||
msg = _make_mock_message(
|
||||
chat_id=-1001234567890, chat_type=_ChatType.SUPERGROUP,
|
||||
user_id=42, user_name="Alice"
|
||||
)
|
||||
msg.from_user = None
|
||||
|
||||
event = adapter._build_message_event(msg, MessageType.TEXT)
|
||||
|
||||
# Groups should NOT fall back — anonymous senders stay None
|
||||
assert event.source.user_id is None
|
||||
assert event.source.user_name is None
|
||||
|
||||
|
||||
def test_build_message_event_dm_from_user_present_uses_user():
|
||||
"""When from_user is present in a DM, it should be used (no fallback)."""
|
||||
from gateway.platforms.base import MessageType
|
||||
|
||||
adapter = _make_adapter()
|
||||
msg = _make_mock_message(chat_id=12345, user_id=99999, user_name="Bob")
|
||||
|
||||
event = adapter._build_message_event(msg, MessageType.TEXT)
|
||||
|
||||
# Normal case — from_user is used directly
|
||||
assert event.source.user_id == "99999"
|
||||
assert event.source.user_name == "Bob"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue