Improve ozw websocket response when node is not found (#39653)
* Return not_found error over ws if node is not found * Remove unrelated code from this PR * Only import ERR_NOT_FOUND from core websocket_api
This commit is contained in:
parent
1fb70625a3
commit
4885b22cb4
2 changed files with 33 additions and 4 deletions
|
@ -150,6 +150,15 @@ def websocket_node_status(hass, connection, msg):
|
|||
"""Get the status for a Z-Wave node."""
|
||||
manager = hass.data[DOMAIN][MANAGER]
|
||||
node = manager.get_instance(msg[OZW_INSTANCE]).get_node(msg[NODE_ID])
|
||||
|
||||
if not node:
|
||||
connection.send_message(
|
||||
websocket_api.error_message(
|
||||
msg[ID], websocket_api.const.ERR_NOT_FOUND, "OZW Node not found"
|
||||
)
|
||||
)
|
||||
return
|
||||
|
||||
connection.send_result(
|
||||
msg[ID],
|
||||
{
|
||||
|
@ -185,6 +194,15 @@ def websocket_node_metadata(hass, connection, msg):
|
|||
"""Get the metadata for a Z-Wave node."""
|
||||
manager = hass.data[DOMAIN][MANAGER]
|
||||
node = manager.get_instance(msg[OZW_INSTANCE]).get_node(msg[NODE_ID])
|
||||
|
||||
if not node:
|
||||
connection.send_message(
|
||||
websocket_api.error_message(
|
||||
msg[ID], websocket_api.const.ERR_NOT_FOUND, "OZW Node not found"
|
||||
)
|
||||
)
|
||||
return
|
||||
|
||||
connection.send_result(
|
||||
msg[ID],
|
||||
{
|
||||
|
|
|
@ -19,6 +19,7 @@ from homeassistant.components.ozw.websocket_api import (
|
|||
OZW_INSTANCE,
|
||||
TYPE,
|
||||
)
|
||||
from homeassistant.components.websocket_api.const import ERR_NOT_FOUND
|
||||
|
||||
from .common import MQTTMessage, setup_ozw
|
||||
|
||||
|
@ -68,8 +69,13 @@ async def test_websocket_api(hass, generic_data, hass_ws_client):
|
|||
assert result[ATTR_NODE_SPECIFIC_STRING] == "Binary Power Switch"
|
||||
assert result[ATTR_NEIGHBORS] == [1, 33, 36, 37, 39]
|
||||
|
||||
await client.send_json({ID: 7, TYPE: "ozw/node_status", NODE_ID: 999})
|
||||
msg = await client.receive_json()
|
||||
result = msg["error"]
|
||||
assert result["code"] == ERR_NOT_FOUND
|
||||
|
||||
# Test node statistics
|
||||
await client.send_json({ID: 7, TYPE: "ozw/node_statistics", NODE_ID: 39})
|
||||
await client.send_json({ID: 8, TYPE: "ozw/node_statistics", NODE_ID: 39})
|
||||
msg = await client.receive_json()
|
||||
result = msg["result"]
|
||||
|
||||
|
@ -87,13 +93,18 @@ async def test_websocket_api(hass, generic_data, hass_ws_client):
|
|||
assert result["received_unsolicited"] == 3546
|
||||
|
||||
# Test node metadata
|
||||
await client.send_json({ID: 8, TYPE: "ozw/node_metadata", NODE_ID: 39})
|
||||
await client.send_json({ID: 9, TYPE: "ozw/node_metadata", NODE_ID: 39})
|
||||
msg = await client.receive_json()
|
||||
result = msg["result"]
|
||||
assert result["metadata"]["ProductPic"] == "images/aeotec/zwa002.png"
|
||||
|
||||
await client.send_json({ID: 10, TYPE: "ozw/node_metadata", NODE_ID: 999})
|
||||
msg = await client.receive_json()
|
||||
result = msg["error"]
|
||||
assert result["code"] == ERR_NOT_FOUND
|
||||
|
||||
# Test network statistics
|
||||
await client.send_json({ID: 9, TYPE: "ozw/network_statistics"})
|
||||
await client.send_json({ID: 11, TYPE: "ozw/network_statistics"})
|
||||
msg = await client.receive_json()
|
||||
result = msg["result"]
|
||||
assert result["readCnt"] == 92220
|
||||
|
@ -101,7 +112,7 @@ async def test_websocket_api(hass, generic_data, hass_ws_client):
|
|||
assert result["node_count"] == 5
|
||||
|
||||
# Test get nodes
|
||||
await client.send_json({ID: 10, TYPE: "ozw/get_nodes"})
|
||||
await client.send_json({ID: 12, TYPE: "ozw/get_nodes"})
|
||||
msg = await client.receive_json()
|
||||
result = msg["result"]
|
||||
assert len(result) == 5
|
||||
|
|
Loading…
Add table
Reference in a new issue