S1005403_RisCC/tests/core/test_payload_router.py

38 lines
1.1 KiB
Python

import json
import logging
import pytest
from target_simulator.core.payload_router import PayloadRouter
def test_get_handlers_contains_expected_keys():
router = PayloadRouter()
handlers = router.get_handlers()
assert isinstance(handlers, dict)
# Expect flows for 'M','S','B','J'
for ch in (ord("M"), ord("S"), ord("B"), ord("J")):
assert ch in handlers
assert callable(handlers[ch])
def test_handle_json_payload_valid(monkeypatch, caplog):
router = PayloadRouter()
payload = json.dumps({"type": "status_update", "value": 42}).encode("utf-8")
caplog.set_level(logging.INFO)
# Should not raise
router.handle_json_payload(payload)
# Expect log mentioning decoded type
assert any(
"Decoded JSON message" in r.message or "Decoded JSON" in r.message
for r in caplog.records
)
def test_handle_json_payload_invalid(caplog):
router = PayloadRouter()
payload = b"not-a-json"
caplog.set_level(logging.ERROR)
router.handle_json_payload(payload)
assert any("Error decoding JSON payload" in r.message for r in caplog.records)