diff --git a/test/model/test_node.py b/test/model/test_node.py index b048a933..9383f1a8 100644 --- a/test/model/test_node.py +++ b/test/model/test_node.py @@ -2786,3 +2786,17 @@ async def test_supervision_result_invalid( with pytest.raises(ValueError): await node.async_set_raw_config_parameter_value(1, 1) + + +async def test_node_info_received_event(multisensor_6: node_pkg.Node): + """Test that the node info received event is successfully validated by pydantic.""" + node = multisensor_6 + event_type = "node info received" + event_data = {"source": "node", "event": event_type, "nodeId": node.node_id} + event = Event(event_type, event_data) + + def callback(data: dict) -> None: + assert data == event_data + + node.on(event_type, callback) + node.receive_event(event) diff --git a/zwave_js_server/model/node/__init__.py b/zwave_js_server/model/node/__init__.py index 9f9c502e..a8a64a59 100644 --- a/zwave_js_server/model/node/__init__.py +++ b/zwave_js_server/model/node/__init__.py @@ -1123,6 +1123,10 @@ def handle_notification(self, event: Event) -> None: "Unhandled notification command class: %s", command_class.name ) + def handle_node_info_received(self, event: Event) -> None: + """Process a node info received event.""" + # Nothing to do for now + def handle_firmware_update_progress(self, event: Event) -> None: """Process a node firmware update progress event.""" self._firmware_update_progress = event.data["firmware_update_progress"] = ( diff --git a/zwave_js_server/model/node/event_model.py b/zwave_js_server/model/node/event_model.py index 33bbb349..49cdba42 100644 --- a/zwave_js_server/model/node/event_model.py +++ b/zwave_js_server/model/node/event_model.py @@ -87,6 +87,12 @@ class DeadEventModel(BaseNodeEventModel): event: Literal["dead"] +class NodeInfoReceivedEventModel(BaseNodeEventModel): + """Model for `node info received` event data.""" + + event: Literal["node info received"] + + class InterviewCompletedEventModel(BaseNodeEventModel): """Model for `interview completed` event data.""" @@ -344,6 +350,7 @@ def from_dict(cls, data: dict) -> FirmwareUpdateProgressEventModel: "interview stage completed": InterviewStageCompletedEventModel, "interview started": InterviewStartedEventModel, "metadata updated": MetadataUpdatedEventModel, + "node info received": NodeInfoReceivedEventModel, "notification": NotificationEventModel, "ready": ReadyEventModel, "sleep": SleepEventModel,