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)