mirror of
https://github.com/yellowcooln/meshcore-mqtt-live-map.git
synced 2026-04-20 23:23:36 +00:00
53 lines
1.2 KiB
Python
53 lines
1.2 KiB
Python
import decoder
|
|
|
|
|
|
def test_extract_device_role_ignores_model_and_origin_hints():
|
|
payload = {
|
|
"status": {
|
|
"model": "PyMC-Repeater",
|
|
"origin": "PR-Room-Server",
|
|
"client_version": "meshcore-room/1.2.3",
|
|
"description": "Living room node",
|
|
}
|
|
}
|
|
|
|
assert decoder._extract_device_role(payload, "meshcore/BOS/test/status"
|
|
) is None
|
|
|
|
|
|
def test_extract_device_role_from_numeric_role_code_string():
|
|
payload = {
|
|
"payload": {
|
|
"decoded": {
|
|
"appData": {
|
|
"deviceRole": "3",
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
assert decoder._extract_device_role(payload, "meshcore/BOS/test/packets"
|
|
) == "room"
|
|
|
|
|
|
def test_extract_device_role_from_explicit_nested_role_field():
|
|
payload = {
|
|
"payload": {
|
|
"decoded": {
|
|
"appData": {
|
|
"role": "repeater",
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
assert decoder._extract_device_role(payload, "meshcore/BOS/test/packets"
|
|
) == "repeater"
|
|
|
|
|
|
def test_apply_meta_role_accepts_numeric_string_role_codes():
|
|
debug = {"device_role": None}
|
|
|
|
decoder._apply_meta_role(debug, {"deviceRole": "2"})
|
|
|
|
assert debug["device_role"] == "repeater"
|