38 lines
1.1 KiB
Python
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)
|