diff --git a/homeassistant/components/zwave_js/api.py b/homeassistant/components/zwave_js/api.py index b03afa1170a..73c24ccf2bd 100644 --- a/homeassistant/components/zwave_js/api.py +++ b/homeassistant/components/zwave_js/api.py @@ -1097,13 +1097,7 @@ async def websocket_provision_smart_start_node( ) return - provisioning_info = ProvisioningEntry( - dsk=qr_info.dsk, - security_classes=qr_info.security_classes, - requested_security_classes=qr_info.requested_security_classes, - protocol=msg.get(PROTOCOL), - additional_properties=qr_info.additional_properties, - ) + additional_properties = qr_info.additional_properties or {} device = None # Create an empty device if device_name is provided @@ -1139,12 +1133,17 @@ async def websocket_provision_smart_start_node( dev_reg.async_update_device( device.id, area_id=msg.get(AREA_ID), name_by_user=device_name ) + additional_properties["device_id"] = device.id - if provisioning_info.additional_properties is None: - provisioning_info.additional_properties = {} - provisioning_info.additional_properties["device_id"] = device.id - - await driver.controller.async_provision_smart_start_node(provisioning_info) + await driver.controller.async_provision_smart_start_node( + ProvisioningEntry( + dsk=qr_info.dsk, + security_classes=qr_info.security_classes, + requested_security_classes=qr_info.requested_security_classes, + protocol=msg.get(PROTOCOL), + additional_properties=additional_properties, + ) + ) if device: connection.send_result(msg[ID], device.id) else: diff --git a/homeassistant/components/zwave_js/manifest.json b/homeassistant/components/zwave_js/manifest.json index 0abbd85e56b..2cd6a6246dd 100644 --- a/homeassistant/components/zwave_js/manifest.json +++ b/homeassistant/components/zwave_js/manifest.json @@ -9,7 +9,7 @@ "integration_type": "hub", "iot_class": "local_push", "loggers": ["zwave_js_server"], - "requirements": ["zwave-js-server-python==0.68.0"], + "requirements": ["zwave-js-server-python==0.70.0"], "usb": [ { "known_devices": ["Aeotec Z-Stick Gen5+", "Z-WaveMe UZB"], diff --git a/requirements_all.txt b/requirements_all.txt index ed0a01df784..6694922844c 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -3419,7 +3419,7 @@ zinvolt==0.4.3 zm-py==0.5.4 # homeassistant.components.zwave_js -zwave-js-server-python==0.68.0 +zwave-js-server-python==0.70.0 # homeassistant.components.zwave_me zwave-me-ws==0.4.3 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 63d3dc31c8e..990d622f66c 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -2904,7 +2904,7 @@ zinvolt==0.4.3 zm-py==0.5.4 # homeassistant.components.zwave_js -zwave-js-server-python==0.68.0 +zwave-js-server-python==0.70.0 # homeassistant.components.zwave_me zwave-me-ws==0.4.3 diff --git a/tests/components/zwave_js/test_api.py b/tests/components/zwave_js/test_api.py index d41c13a06b0..1e672c1e57e 100644 --- a/tests/components/zwave_js/test_api.py +++ b/tests/components/zwave_js/test_api.py @@ -3519,10 +3519,8 @@ async def test_firmware_upload_view( ) update_data = NodeFirmwareUpdateData( - "file", b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + "file", b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", **expected_data ) - for attr, value in expected_data.items(): - setattr(update_data, attr, value) mock_controller_cmd.assert_not_called() assert mock_node_cmd.call_args[0][1:3] == (multisensor_6, [update_data]) diff --git a/tests/components/zwave_js/test_config_flow.py b/tests/components/zwave_js/test_config_flow.py index 8c9954af9bf..cd61d58d05d 100644 --- a/tests/components/zwave_js/test_config_flow.py +++ b/tests/components/zwave_js/test_config_flow.py @@ -2,6 +2,7 @@ import asyncio from collections.abc import Generator +import dataclasses from ipaddress import ip_address from typing import Any from unittest.mock import AsyncMock, MagicMock, call, patch @@ -95,6 +96,13 @@ CP2652_ZIGBEE_DISCOVERY_INFO = UsbServiceInfo( ) +def _set_home_id(get_server_version: AsyncMock, home_id: int) -> None: + """Update the mocked server version's home_id (frozen dataclass).""" + get_server_version.return_value = dataclasses.replace( + get_server_version.return_value, home_id=home_id + ) + + @pytest.fixture def platforms() -> list[str]: """Fixture to specify platforms to test.""" @@ -1016,8 +1024,7 @@ async def test_usb_discovery_migration( assert restart_addon.call_args == call("core_zwave_js") - version_info = get_server_version.return_value - version_info.home_id = 3245146787 + _set_home_id(get_server_version, 3245146787) result = await hass.config_entries.flow.async_configure(result["flow_id"]) @@ -4211,7 +4218,6 @@ async def test_reconfigure_migrate_with_addon( device_entry_count: int, ) -> None: """Test migration flow with add-on.""" - version_info = get_server_version.return_value entry = integration assert client.connect.call_count == 1 assert client.driver.controller.home_id == 3245146787 @@ -4322,7 +4328,7 @@ async def test_reconfigure_migrate_with_addon( assert result["type"] is FlowResultType.FORM assert result["step_id"] == "choose_serial_port" - version_info.home_id = 5678 + _set_home_id(get_server_version, 5678) result = await hass.config_entries.flow.async_configure( result["flow_id"], form_data @@ -4355,7 +4361,7 @@ async def test_reconfigure_migrate_with_addon( assert entry.unique_id == "5678" get_server_version.side_effect = restore_server_version_side_effect - version_info.home_id = 3245146787 + _set_home_id(get_server_version, 3245146787) assert result["type"] is FlowResultType.SHOW_PROGRESS assert result["step_id"] == "restore_nvm" @@ -5503,7 +5509,6 @@ async def test_addon_rf_region_migrate_network( ) -> None: """Test migration flow with add-on.""" hass.config.country = None - version_info = get_server_version.return_value entry = integration assert client.connect.call_count == 1 assert client.driver.controller.home_id == 3245146787 @@ -5587,7 +5592,7 @@ async def test_addon_rf_region_migrate_network( with pytest.raises(InInvalid): data_schema.schema[CONF_USB_PATH](addon_options["device"]) - version_info.home_id = 5678 + _set_home_id(get_server_version, 5678) result = await hass.config_entries.flow.async_configure( result["flow_id"], @@ -5622,7 +5627,7 @@ async def test_addon_rf_region_migrate_network( result = await hass.config_entries.flow.async_configure(result["flow_id"]) assert entry.unique_id == "5678" - version_info.home_id = 3245146787 + _set_home_id(get_server_version, 3245146787) assert result["type"] is FlowResultType.SHOW_PROGRESS assert result["step_id"] == "restore_nvm"