fix: accept PKI direct messages without channel
This commit is contained in:
@@ -36,6 +36,7 @@ so the gate can never silently skip.
|
||||
|
||||
import inspect
|
||||
import os
|
||||
from types import SimpleNamespace
|
||||
|
||||
import pytest
|
||||
|
||||
@@ -228,3 +229,40 @@ def test_inbound_event_construction_is_valid(registered_entry):
|
||||
)
|
||||
assert event.source.platform.value == "meshtastic"
|
||||
assert event.text == "hello over LoRa"
|
||||
|
||||
|
||||
def test_pki_direct_message_without_channel_reaches_gateway(
|
||||
registered_entry, monkeypatch
|
||||
):
|
||||
"""PKI DMs omit channel and must bypass the secondary-channel filter."""
|
||||
adapter = _make_adapter(registered_entry)
|
||||
adapter._loop = SimpleNamespace(is_running=lambda: True)
|
||||
captured = {}
|
||||
|
||||
async def handle_message(event):
|
||||
captured["event"] = event
|
||||
|
||||
def submit(coro, loop):
|
||||
captured["loop"] = loop
|
||||
with pytest.raises(StopIteration):
|
||||
coro.send(None)
|
||||
|
||||
adapter.handle_message = handle_message
|
||||
monkeypatch.setattr(plugin_adapter.asyncio, "run_coroutine_threadsafe", submit)
|
||||
|
||||
interface = SimpleNamespace(myInfo=SimpleNamespace(my_node_num=0x1BA1BC60))
|
||||
adapter._on_meshtastic_receive(
|
||||
{
|
||||
"from": 0x1BA1496C,
|
||||
"to": 0x1BA1BC60,
|
||||
"toId": "!1ba1bc60",
|
||||
"pkiEncrypted": True,
|
||||
"decoded": {"text": "hello over PKI"},
|
||||
"id": 42,
|
||||
},
|
||||
interface,
|
||||
)
|
||||
|
||||
assert captured["loop"] is adapter._loop
|
||||
assert captured["event"].text == "hello over PKI"
|
||||
assert captured["event"].source.chat_id == "!1ba1496c"
|
||||
|
||||
Reference in New Issue
Block a user