Add target option to zwave_js firmware upload view (#73690)

This commit is contained in:
Raman Gupta 2022-06-19 14:50:05 -04:00 committed by GitHub
parent ab95299150
commit 801ba6ff8e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 2 deletions

View file

@ -4,7 +4,7 @@ from __future__ import annotations
from collections.abc import Callable from collections.abc import Callable
import dataclasses import dataclasses
from functools import partial, wraps from functools import partial, wraps
from typing import Any, Literal from typing import Any, Literal, cast
from aiohttp import web, web_exceptions, web_request from aiohttp import web, web_exceptions, web_request
import voluptuous as vol import voluptuous as vol
@ -1976,6 +1976,10 @@ class FirmwareUploadView(HomeAssistantView):
if "file" not in data or not isinstance(data["file"], web_request.FileField): if "file" not in data or not isinstance(data["file"], web_request.FileField):
raise web_exceptions.HTTPBadRequest raise web_exceptions.HTTPBadRequest
target = None
if "target" in data:
target = int(cast(str, data["target"]))
uploaded_file: web_request.FileField = data["file"] uploaded_file: web_request.FileField = data["file"]
try: try:
@ -1985,6 +1989,7 @@ class FirmwareUploadView(HomeAssistantView):
uploaded_file.filename, uploaded_file.filename,
await hass.async_add_executor_job(uploaded_file.file.read), await hass.async_add_executor_job(uploaded_file.file.read),
async_get_clientsession(hass), async_get_clientsession(hass),
target=target,
) )
except BaseZwaveJSServerError as err: except BaseZwaveJSServerError as err:
raise web_exceptions.HTTPBadRequest(reason=str(err)) from err raise web_exceptions.HTTPBadRequest(reason=str(err)) from err

View file

@ -2847,9 +2847,10 @@ async def test_firmware_upload_view(
) as mock_cmd: ) as mock_cmd:
resp = await client.post( resp = await client.post(
f"/api/zwave_js/firmware/upload/{device.id}", f"/api/zwave_js/firmware/upload/{device.id}",
data={"file": firmware_file}, data={"file": firmware_file, "target": "15"},
) )
assert mock_cmd.call_args[0][1:4] == (multisensor_6, "file", bytes(10)) assert mock_cmd.call_args[0][1:4] == (multisensor_6, "file", bytes(10))
assert mock_cmd.call_args[1] == {"target": 15}
assert json.loads(await resp.text()) is None assert json.loads(await resp.text()) is None