Add dsk option to zwave_js/add_node WS command (#87823)

* Add dsk option to zwave_js/add_node WS command

* Bump zwave-js-server-python to 0.46.0 (#88520)

* fix tests
This commit is contained in:
Raman Gupta 2023-02-22 11:53:22 -05:00 committed by GitHub
parent 1f9f6ab1f0
commit cab8a59be4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 5 deletions

View file

@ -654,6 +654,7 @@ async def websocket_node_comments(
QR_PROVISIONING_INFORMATION, "options"
): QR_PROVISIONING_INFORMATION_SCHEMA,
vol.Exclusive(QR_CODE_STRING, "options"): QR_CODE_STRING_SCHEMA,
vol.Exclusive(DSK, "options"): str,
}
)
@websocket_api.async_response
@ -676,6 +677,7 @@ async def websocket_add_node(
or msg.get(QR_PROVISIONING_INFORMATION)
or msg.get(QR_CODE_STRING)
)
dsk = msg.get(DSK)
@callback
def async_cleanup() -> None:
@ -772,6 +774,7 @@ async def websocket_add_node(
INCLUSION_STRATEGY_NOT_SMART_START[inclusion_strategy.value],
force_security=force_security,
provisioning=provisioning,
dsk=dsk,
)
except ValueError as err:
connection.send_error(

View file

@ -780,13 +780,39 @@ async def test_add_node(
client.async_send_command.reset_mock()
client.async_send_command.return_value = {"success": True}
# Test Smart Start QR provisioning information with S2 inclusion strategy fails
# Test S2 DSK string string
await ws_client.send_json(
{
ID: 6,
TYPE: "zwave_js/add_node",
ENTRY_ID: entry.entry_id,
INCLUSION_STRATEGY: InclusionStrategy.SECURITY_S2.value,
DSK: "test_dsk",
}
)
msg = await ws_client.receive_json()
assert msg["success"]
assert len(client.async_send_command.call_args_list) == 1
assert client.async_send_command.call_args[0][0] == {
"command": "controller.begin_inclusion",
"options": {
"strategy": InclusionStrategy.SECURITY_S2,
"dsk": "test_dsk",
},
}
client.async_send_command.reset_mock()
client.async_send_command.return_value = {"success": True}
# Test Smart Start QR provisioning information with S2 inclusion strategy fails
await ws_client.send_json(
{
ID: 7,
TYPE: "zwave_js/add_node",
ENTRY_ID: entry.entry_id,
INCLUSION_STRATEGY: InclusionStrategy.SECURITY_S2.value,
QR_PROVISIONING_INFORMATION: {
VERSION: 1,
SECURITY_CLASSES: [0],
@ -813,7 +839,7 @@ async def test_add_node(
# Test QR provisioning information with S0 inclusion strategy fails
await ws_client.send_json(
{
ID: 7,
ID: 8,
TYPE: "zwave_js/add_node",
ENTRY_ID: entry.entry_id,
INCLUSION_STRATEGY: InclusionStrategy.SECURITY_S0,
@ -843,7 +869,7 @@ async def test_add_node(
# Test ValueError is caught as failure
await ws_client.send_json(
{
ID: 8,
ID: 9,
TYPE: "zwave_js/add_node",
ENTRY_ID: entry.entry_id,
INCLUSION_STRATEGY: InclusionStrategy.DEFAULT.value,
@ -863,7 +889,7 @@ async def test_add_node(
):
await ws_client.send_json(
{
ID: 9,
ID: 10,
TYPE: "zwave_js/add_node",
ENTRY_ID: entry.entry_id,
}
@ -879,7 +905,7 @@ async def test_add_node(
await hass.async_block_till_done()
await ws_client.send_json(
{ID: 10, TYPE: "zwave_js/add_node", ENTRY_ID: entry.entry_id}
{ID: 11, TYPE: "zwave_js/add_node", ENTRY_ID: entry.entry_id}
)
msg = await ws_client.receive_json()