mirror of
https://github.com/home-assistant/core.git
synced 2025-04-23 16:57:53 +00:00
Replace more addon management with aiohasupervisor (#126236)
* Replace start_addon with library call * restart_addon to library and error issues in tests * stop_addon to library * uninstall_addon to library * Add output typing Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> --------- Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
This commit is contained in:
parent
2fa7113787
commit
7517948900
@ -107,13 +107,9 @@ from .handler import ( # noqa: F401
|
||||
async_get_yellow_settings,
|
||||
async_install_addon,
|
||||
async_reboot_host,
|
||||
async_restart_addon,
|
||||
async_set_addon_options,
|
||||
async_set_green_settings,
|
||||
async_set_yellow_settings,
|
||||
async_start_addon,
|
||||
async_stop_addon,
|
||||
async_uninstall_addon,
|
||||
async_update_addon,
|
||||
async_update_core,
|
||||
async_update_diagnostics,
|
||||
|
@ -25,11 +25,7 @@ from .handler import (
|
||||
async_get_addon_discovery_info,
|
||||
async_get_addon_store_info,
|
||||
async_install_addon,
|
||||
async_restart_addon,
|
||||
async_set_addon_options,
|
||||
async_start_addon,
|
||||
async_stop_addon,
|
||||
async_uninstall_addon,
|
||||
async_update_addon,
|
||||
get_supervisor_client,
|
||||
)
|
||||
@ -208,7 +204,7 @@ class AddonManager:
|
||||
@api_error("Failed to uninstall the {addon_name} add-on")
|
||||
async def async_uninstall_addon(self) -> None:
|
||||
"""Uninstall the managed add-on."""
|
||||
await async_uninstall_addon(self._hass, self.addon_slug)
|
||||
await get_supervisor_client(self._hass).addons.uninstall_addon(self.addon_slug)
|
||||
|
||||
@api_error("Failed to update the {addon_name} add-on")
|
||||
async def async_update_addon(self) -> None:
|
||||
@ -229,17 +225,17 @@ class AddonManager:
|
||||
@api_error("Failed to start the {addon_name} add-on")
|
||||
async def async_start_addon(self) -> None:
|
||||
"""Start the managed add-on."""
|
||||
await async_start_addon(self._hass, self.addon_slug)
|
||||
await get_supervisor_client(self._hass).addons.start_addon(self.addon_slug)
|
||||
|
||||
@api_error("Failed to restart the {addon_name} add-on")
|
||||
async def async_restart_addon(self) -> None:
|
||||
"""Restart the managed add-on."""
|
||||
await async_restart_addon(self._hass, self.addon_slug)
|
||||
await get_supervisor_client(self._hass).addons.restart_addon(self.addon_slug)
|
||||
|
||||
@api_error("Failed to stop the {addon_name} add-on")
|
||||
async def async_stop_addon(self) -> None:
|
||||
"""Stop the managed add-on."""
|
||||
await async_stop_addon(self._hass, self.addon_slug)
|
||||
await get_supervisor_client(self._hass).addons.stop_addon(self.addon_slug)
|
||||
|
||||
@api_error("Failed to create a backup of the {addon_name} add-on")
|
||||
async def async_create_backup(self) -> None:
|
||||
|
@ -96,18 +96,6 @@ async def async_install_addon(hass: HomeAssistant, slug: str) -> dict:
|
||||
return await hassio.send_command(command, timeout=None)
|
||||
|
||||
|
||||
@bind_hass
|
||||
@api_data
|
||||
async def async_uninstall_addon(hass: HomeAssistant, slug: str) -> dict:
|
||||
"""Uninstall add-on.
|
||||
|
||||
The caller of the function should handle HassioAPIError.
|
||||
"""
|
||||
hassio: HassIO = hass.data[DOMAIN]
|
||||
command = f"/addons/{slug}/uninstall"
|
||||
return await hassio.send_command(command, timeout=60)
|
||||
|
||||
|
||||
@bind_hass
|
||||
@api_data
|
||||
async def async_update_addon(
|
||||
@ -128,42 +116,6 @@ async def async_update_addon(
|
||||
)
|
||||
|
||||
|
||||
@bind_hass
|
||||
@api_data
|
||||
async def async_start_addon(hass: HomeAssistant, slug: str) -> dict:
|
||||
"""Start add-on.
|
||||
|
||||
The caller of the function should handle HassioAPIError.
|
||||
"""
|
||||
hassio: HassIO = hass.data[DOMAIN]
|
||||
command = f"/addons/{slug}/start"
|
||||
return await hassio.send_command(command, timeout=60)
|
||||
|
||||
|
||||
@bind_hass
|
||||
@api_data
|
||||
async def async_restart_addon(hass: HomeAssistant, slug: str) -> dict:
|
||||
"""Restart add-on.
|
||||
|
||||
The caller of the function should handle HassioAPIError.
|
||||
"""
|
||||
hassio: HassIO = hass.data[DOMAIN]
|
||||
command = f"/addons/{slug}/restart"
|
||||
return await hassio.send_command(command, timeout=None)
|
||||
|
||||
|
||||
@bind_hass
|
||||
@api_data
|
||||
async def async_stop_addon(hass: HomeAssistant, slug: str) -> dict:
|
||||
"""Stop add-on.
|
||||
|
||||
The caller of the function should handle HassioAPIError.
|
||||
"""
|
||||
hassio: HassIO = hass.data[DOMAIN]
|
||||
command = f"/addons/{slug}/stop"
|
||||
return await hassio.send_command(command, timeout=60)
|
||||
|
||||
|
||||
@bind_hass
|
||||
@api_data
|
||||
async def async_set_addon_options(
|
||||
|
@ -321,12 +321,12 @@ def start_addon_side_effect_fixture(
|
||||
|
||||
|
||||
@pytest.fixture(name="start_addon")
|
||||
def start_addon_fixture(start_addon_side_effect: Any | None) -> Generator[AsyncMock]:
|
||||
def start_addon_fixture(
|
||||
supervisor_client: AsyncMock, start_addon_side_effect: Any | None
|
||||
) -> AsyncMock:
|
||||
"""Mock start add-on."""
|
||||
# pylint: disable-next=import-outside-toplevel
|
||||
from .hassio.common import mock_start_addon
|
||||
|
||||
yield from mock_start_addon(start_addon_side_effect)
|
||||
supervisor_client.addons.start_addon.side_effect = start_addon_side_effect
|
||||
return supervisor_client.addons.start_addon
|
||||
|
||||
|
||||
@pytest.fixture(name="restart_addon_side_effect")
|
||||
@ -337,22 +337,18 @@ def restart_addon_side_effect_fixture() -> Any | None:
|
||||
|
||||
@pytest.fixture(name="restart_addon")
|
||||
def restart_addon_fixture(
|
||||
supervisor_client: AsyncMock,
|
||||
restart_addon_side_effect: Any | None,
|
||||
) -> Generator[AsyncMock]:
|
||||
) -> AsyncMock:
|
||||
"""Mock restart add-on."""
|
||||
# pylint: disable-next=import-outside-toplevel
|
||||
from .hassio.common import mock_restart_addon
|
||||
|
||||
yield from mock_restart_addon(restart_addon_side_effect)
|
||||
supervisor_client.addons.restart_addon.side_effect = restart_addon_side_effect
|
||||
return supervisor_client.addons.restart_addon
|
||||
|
||||
|
||||
@pytest.fixture(name="stop_addon")
|
||||
def stop_addon_fixture() -> Generator[AsyncMock]:
|
||||
def stop_addon_fixture(supervisor_client: AsyncMock) -> AsyncMock:
|
||||
"""Mock stop add-on."""
|
||||
# pylint: disable-next=import-outside-toplevel
|
||||
from .hassio.common import mock_stop_addon
|
||||
|
||||
yield from mock_stop_addon()
|
||||
return supervisor_client.addons.stop_addon
|
||||
|
||||
|
||||
@pytest.fixture(name="addon_options")
|
||||
@ -387,12 +383,9 @@ def set_addon_options_fixture(
|
||||
|
||||
|
||||
@pytest.fixture(name="uninstall_addon")
|
||||
def uninstall_addon_fixture() -> Generator[AsyncMock]:
|
||||
def uninstall_addon_fixture(supervisor_client: AsyncMock) -> AsyncMock:
|
||||
"""Mock uninstall add-on."""
|
||||
# pylint: disable-next=import-outside-toplevel
|
||||
from .hassio.common import mock_uninstall_addon
|
||||
|
||||
yield from mock_uninstall_addon()
|
||||
return supervisor_client.addons.uninstall_addon
|
||||
|
||||
|
||||
@pytest.fixture(name="create_backup")
|
||||
|
@ -166,7 +166,7 @@ def mock_start_addon_side_effect(
|
||||
) -> Any | None:
|
||||
"""Return the start add-on options side effect."""
|
||||
|
||||
async def start_addon(hass: HomeAssistant, slug):
|
||||
async def start_addon(addon: str) -> None:
|
||||
"""Mock start add-on."""
|
||||
addon_store_info.return_value = {
|
||||
"available": True,
|
||||
@ -180,40 +180,6 @@ def mock_start_addon_side_effect(
|
||||
return start_addon
|
||||
|
||||
|
||||
def mock_start_addon(start_addon_side_effect: Any | None) -> Generator[AsyncMock]:
|
||||
"""Mock start add-on."""
|
||||
with patch(
|
||||
"homeassistant.components.hassio.addon_manager.async_start_addon",
|
||||
side_effect=start_addon_side_effect,
|
||||
) as start_addon:
|
||||
yield start_addon
|
||||
|
||||
|
||||
def mock_stop_addon() -> Generator[AsyncMock]:
|
||||
"""Mock stop add-on."""
|
||||
with patch(
|
||||
"homeassistant.components.hassio.addon_manager.async_stop_addon"
|
||||
) as stop_addon:
|
||||
yield stop_addon
|
||||
|
||||
|
||||
def mock_restart_addon(restart_addon_side_effect: Any | None) -> Generator[AsyncMock]:
|
||||
"""Mock restart add-on."""
|
||||
with patch(
|
||||
"homeassistant.components.hassio.addon_manager.async_restart_addon",
|
||||
side_effect=restart_addon_side_effect,
|
||||
) as restart_addon:
|
||||
yield restart_addon
|
||||
|
||||
|
||||
def mock_uninstall_addon() -> Generator[AsyncMock]:
|
||||
"""Mock uninstall add-on."""
|
||||
with patch(
|
||||
"homeassistant.components.hassio.addon_manager.async_uninstall_addon"
|
||||
) as uninstall_addon:
|
||||
yield uninstall_addon
|
||||
|
||||
|
||||
def mock_addon_options(addon_info: AsyncMock) -> dict[str, Any]:
|
||||
"""Mock add-on options."""
|
||||
return addon_info.return_value.options
|
||||
|
@ -6,6 +6,7 @@ import asyncio
|
||||
from typing import Any
|
||||
from unittest.mock import AsyncMock, call
|
||||
|
||||
from aiohasupervisor import SupervisorError
|
||||
import pytest
|
||||
|
||||
from homeassistant.components.hassio.addon_manager import (
|
||||
@ -136,7 +137,7 @@ async def test_get_addon_info(
|
||||
"addon_store_info_error",
|
||||
"addon_store_info_calls",
|
||||
),
|
||||
[(HassioAPIError("Boom"), 1, None, 1), (None, 0, HassioAPIError("Boom"), 1)],
|
||||
[(SupervisorError("Boom"), 1, None, 1), (None, 0, HassioAPIError("Boom"), 1)],
|
||||
)
|
||||
async def test_get_addon_info_error(
|
||||
addon_manager: AddonManager,
|
||||
@ -303,7 +304,7 @@ async def test_uninstall_addon_error(
|
||||
addon_manager: AddonManager, uninstall_addon: AsyncMock
|
||||
) -> None:
|
||||
"""Test uninstall addon raises error."""
|
||||
uninstall_addon.side_effect = HassioAPIError("Boom")
|
||||
uninstall_addon.side_effect = SupervisorError("Boom")
|
||||
|
||||
with pytest.raises(AddonError) as err:
|
||||
await addon_manager.async_uninstall_addon()
|
||||
@ -324,7 +325,7 @@ async def test_start_addon_error(
|
||||
addon_manager: AddonManager, start_addon: AsyncMock
|
||||
) -> None:
|
||||
"""Test start addon raises error."""
|
||||
start_addon.side_effect = HassioAPIError("Boom")
|
||||
start_addon.side_effect = SupervisorError("Boom")
|
||||
|
||||
with pytest.raises(AddonError) as err:
|
||||
await addon_manager.async_start_addon()
|
||||
@ -366,7 +367,7 @@ async def test_schedule_start_addon_error(
|
||||
start_addon: AsyncMock,
|
||||
) -> None:
|
||||
"""Test schedule start addon raises error."""
|
||||
start_addon.side_effect = HassioAPIError("Boom")
|
||||
start_addon.side_effect = SupervisorError("Boom")
|
||||
|
||||
with pytest.raises(AddonError) as err:
|
||||
await addon_manager.async_schedule_start_addon()
|
||||
@ -383,7 +384,7 @@ async def test_schedule_start_addon_logs_error(
|
||||
caplog: pytest.LogCaptureFixture,
|
||||
) -> None:
|
||||
"""Test schedule start addon logs error."""
|
||||
start_addon.side_effect = HassioAPIError("Boom")
|
||||
start_addon.side_effect = SupervisorError("Boom")
|
||||
|
||||
await addon_manager.async_schedule_start_addon(catch_error=True)
|
||||
|
||||
@ -404,7 +405,7 @@ async def test_restart_addon_error(
|
||||
addon_manager: AddonManager, restart_addon: AsyncMock
|
||||
) -> None:
|
||||
"""Test restart addon raises error."""
|
||||
restart_addon.side_effect = HassioAPIError("Boom")
|
||||
restart_addon.side_effect = SupervisorError("Boom")
|
||||
|
||||
with pytest.raises(AddonError) as err:
|
||||
await addon_manager.async_restart_addon()
|
||||
@ -446,7 +447,7 @@ async def test_schedule_restart_addon_error(
|
||||
restart_addon: AsyncMock,
|
||||
) -> None:
|
||||
"""Test schedule restart addon raises error."""
|
||||
restart_addon.side_effect = HassioAPIError("Boom")
|
||||
restart_addon.side_effect = SupervisorError("Boom")
|
||||
|
||||
with pytest.raises(AddonError) as err:
|
||||
await addon_manager.async_schedule_restart_addon()
|
||||
@ -463,7 +464,7 @@ async def test_schedule_restart_addon_logs_error(
|
||||
caplog: pytest.LogCaptureFixture,
|
||||
) -> None:
|
||||
"""Test schedule restart addon logs error."""
|
||||
restart_addon.side_effect = HassioAPIError("Boom")
|
||||
restart_addon.side_effect = SupervisorError("Boom")
|
||||
|
||||
await addon_manager.async_schedule_restart_addon(catch_error=True)
|
||||
|
||||
@ -482,7 +483,7 @@ async def test_stop_addon_error(
|
||||
addon_manager: AddonManager, stop_addon: AsyncMock
|
||||
) -> None:
|
||||
"""Test stop addon raises error."""
|
||||
stop_addon.side_effect = HassioAPIError("Boom")
|
||||
stop_addon.side_effect = SupervisorError("Boom")
|
||||
|
||||
with pytest.raises(AddonError) as err:
|
||||
await addon_manager.async_stop_addon()
|
||||
@ -811,7 +812,7 @@ async def test_schedule_install_setup_addon(
|
||||
1,
|
||||
None,
|
||||
1,
|
||||
HassioAPIError("Boom"),
|
||||
SupervisorError("Boom"),
|
||||
1,
|
||||
"Failed to start the Test add-on: Boom",
|
||||
),
|
||||
@ -880,7 +881,7 @@ async def test_schedule_install_setup_addon_error(
|
||||
1,
|
||||
None,
|
||||
1,
|
||||
HassioAPIError("Boom"),
|
||||
SupervisorError("Boom"),
|
||||
1,
|
||||
"Failed to start the Test add-on: Boom",
|
||||
),
|
||||
@ -964,7 +965,7 @@ async def test_schedule_setup_addon(
|
||||
(
|
||||
None,
|
||||
1,
|
||||
HassioAPIError("Boom"),
|
||||
SupervisorError("Boom"),
|
||||
1,
|
||||
"Failed to start the Test add-on: Boom",
|
||||
),
|
||||
@ -1013,7 +1014,7 @@ async def test_schedule_setup_addon_error(
|
||||
(
|
||||
None,
|
||||
1,
|
||||
HassioAPIError("Boom"),
|
||||
SupervisorError("Boom"),
|
||||
1,
|
||||
"Failed to start the Test add-on: Boom",
|
||||
),
|
||||
|
@ -47,12 +47,3 @@ def mock_zha_get_last_network_settings() -> Generator[None]:
|
||||
AsyncMock(return_value=None),
|
||||
):
|
||||
yield
|
||||
|
||||
|
||||
@pytest.fixture(name="stop_addon")
|
||||
def stop_addon_fixture():
|
||||
"""Mock stop add-on."""
|
||||
with patch(
|
||||
"homeassistant.components.hassio.addon_manager.async_stop_addon"
|
||||
) as stop_addon:
|
||||
yield stop_addon
|
||||
|
@ -6,6 +6,7 @@ from collections.abc import Generator
|
||||
from typing import Any
|
||||
from unittest.mock import AsyncMock, Mock, patch
|
||||
|
||||
from aiohasupervisor import SupervisorError
|
||||
import pytest
|
||||
|
||||
from homeassistant.components.hassio import (
|
||||
@ -265,7 +266,7 @@ async def test_option_flow_install_multi_pan_addon(
|
||||
)
|
||||
|
||||
await hass.async_block_till_done()
|
||||
start_addon.assert_called_once_with(hass, "core_silabs_multiprotocol")
|
||||
start_addon.assert_called_once_with("core_silabs_multiprotocol")
|
||||
|
||||
result = await hass.config_entries.options.async_configure(result["flow_id"])
|
||||
assert result["type"] is FlowResultType.CREATE_ENTRY
|
||||
@ -360,7 +361,7 @@ async def test_option_flow_install_multi_pan_addon_zha(
|
||||
assert zha_config_entry.title == "Test Multiprotocol"
|
||||
|
||||
await hass.async_block_till_done()
|
||||
start_addon.assert_called_once_with(hass, "core_silabs_multiprotocol")
|
||||
start_addon.assert_called_once_with("core_silabs_multiprotocol")
|
||||
|
||||
result = await hass.config_entries.options.async_configure(result["flow_id"])
|
||||
assert result["type"] is FlowResultType.CREATE_ENTRY
|
||||
@ -436,7 +437,7 @@ async def test_option_flow_install_multi_pan_addon_zha_other_radio(
|
||||
)
|
||||
|
||||
await hass.async_block_till_done()
|
||||
start_addon.assert_called_once_with(hass, "core_silabs_multiprotocol")
|
||||
start_addon.assert_called_once_with("core_silabs_multiprotocol")
|
||||
|
||||
result = await hass.config_entries.options.async_configure(result["flow_id"])
|
||||
assert result["type"] is FlowResultType.CREATE_ENTRY
|
||||
@ -699,7 +700,7 @@ async def test_option_flow_addon_installed_same_device_uninstall(
|
||||
assert result["progress_action"] == "uninstall_multiprotocol_addon"
|
||||
|
||||
await hass.async_block_till_done()
|
||||
uninstall_addon.assert_called_once_with(hass, "core_silabs_multiprotocol")
|
||||
uninstall_addon.assert_called_once_with("core_silabs_multiprotocol")
|
||||
|
||||
result = await hass.config_entries.options.async_configure(result["flow_id"])
|
||||
assert result["type"] is FlowResultType.SHOW_PROGRESS
|
||||
@ -864,7 +865,7 @@ async def test_option_flow_addon_installed_same_device_flasher_already_installed
|
||||
assert result["progress_action"] == "uninstall_multiprotocol_addon"
|
||||
|
||||
await hass.async_block_till_done()
|
||||
uninstall_addon.assert_called_once_with(hass, "core_silabs_multiprotocol")
|
||||
uninstall_addon.assert_called_once_with("core_silabs_multiprotocol")
|
||||
|
||||
result = await hass.config_entries.options.async_configure(result["flow_id"])
|
||||
assert result["type"] is FlowResultType.SHOW_PROGRESS
|
||||
@ -996,10 +997,10 @@ async def test_option_flow_flasher_addon_flash_failure(
|
||||
assert result["step_id"] == "uninstall_multiprotocol_addon"
|
||||
assert result["progress_action"] == "uninstall_multiprotocol_addon"
|
||||
|
||||
start_addon.side_effect = HassioAPIError("Boom")
|
||||
start_addon.side_effect = SupervisorError("Boom")
|
||||
|
||||
await hass.async_block_till_done()
|
||||
uninstall_addon.assert_called_once_with(hass, "core_silabs_multiprotocol")
|
||||
uninstall_addon.assert_called_once_with("core_silabs_multiprotocol")
|
||||
|
||||
result = await hass.config_entries.options.async_configure(result["flow_id"])
|
||||
assert result["type"] is FlowResultType.SHOW_PROGRESS
|
||||
@ -1133,7 +1134,7 @@ async def test_option_flow_uninstall_migration_finish_failure(
|
||||
)
|
||||
|
||||
await hass.async_block_till_done()
|
||||
uninstall_addon.assert_called_once_with(hass, "core_silabs_multiprotocol")
|
||||
uninstall_addon.assert_called_once_with("core_silabs_multiprotocol")
|
||||
|
||||
result = await hass.config_entries.options.async_configure(result["flow_id"])
|
||||
assert result["type"] is FlowResultType.SHOW_PROGRESS
|
||||
@ -1230,7 +1231,7 @@ async def test_option_flow_install_multi_pan_addon_start_fails(
|
||||
) -> None:
|
||||
"""Test installing the multi pan addon."""
|
||||
|
||||
start_addon.side_effect = HassioAPIError("Boom")
|
||||
start_addon.side_effect = SupervisorError("Boom")
|
||||
|
||||
# Setup the config entry
|
||||
config_entry = MockConfigEntry(
|
||||
@ -1275,7 +1276,7 @@ async def test_option_flow_install_multi_pan_addon_start_fails(
|
||||
)
|
||||
|
||||
await hass.async_block_till_done()
|
||||
start_addon.assert_called_once_with(hass, "core_silabs_multiprotocol")
|
||||
start_addon.assert_called_once_with("core_silabs_multiprotocol")
|
||||
|
||||
result = await hass.config_entries.options.async_configure(result["flow_id"])
|
||||
assert result["type"] is FlowResultType.ABORT
|
||||
@ -1470,7 +1471,7 @@ async def test_option_flow_install_multi_pan_addon_zha_migration_fails_step_2(
|
||||
)
|
||||
|
||||
await hass.async_block_till_done()
|
||||
start_addon.assert_called_once_with(hass, "core_silabs_multiprotocol")
|
||||
start_addon.assert_called_once_with("core_silabs_multiprotocol")
|
||||
|
||||
result = await hass.config_entries.options.async_configure(result["flow_id"])
|
||||
assert result["type"] is FlowResultType.ABORT
|
||||
@ -1678,7 +1679,7 @@ async def test_check_multi_pan_addon_auto_start(
|
||||
with pytest.raises(HomeAssistantError):
|
||||
await silabs_multiprotocol_addon.check_multi_pan_addon(hass)
|
||||
|
||||
start_addon.assert_called_once_with(hass, "core_silabs_multiprotocol")
|
||||
start_addon.assert_called_once_with("core_silabs_multiprotocol")
|
||||
|
||||
|
||||
async def test_check_multi_pan_addon(
|
||||
|
@ -47,12 +47,3 @@ def mock_zha_get_last_network_settings() -> Generator[None]:
|
||||
AsyncMock(return_value=None),
|
||||
):
|
||||
yield
|
||||
|
||||
|
||||
@pytest.fixture(name="stop_addon")
|
||||
def stop_addon_fixture():
|
||||
"""Mock stop add-on."""
|
||||
with patch(
|
||||
"homeassistant.components.hassio.addon_manager.async_stop_addon"
|
||||
) as stop_addon:
|
||||
yield stop_addon
|
||||
|
@ -6,6 +6,7 @@ from collections.abc import Generator
|
||||
from ipaddress import ip_address
|
||||
from unittest.mock import AsyncMock, MagicMock, call, patch
|
||||
|
||||
from aiohasupervisor import SupervisorError
|
||||
from matter_server.client.exceptions import CannotConnect, InvalidServerVersion
|
||||
import pytest
|
||||
|
||||
@ -380,7 +381,7 @@ async def test_zeroconf_not_onboarded_installed(
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert addon_info.call_count == 1
|
||||
assert start_addon.call_args == call(hass, "core_matter_server")
|
||||
assert start_addon.call_args == call("core_matter_server")
|
||||
assert client_connect.call_count == 1
|
||||
assert result["type"] is FlowResultType.CREATE_ENTRY
|
||||
assert result["title"] == "Matter"
|
||||
@ -418,7 +419,7 @@ async def test_zeroconf_not_onboarded_not_installed(
|
||||
assert addon_info.call_count == 0
|
||||
assert addon_store_info.call_count == 2
|
||||
assert install_addon.call_args == call(hass, "core_matter_server")
|
||||
assert start_addon.call_args == call(hass, "core_matter_server")
|
||||
assert start_addon.call_args == call("core_matter_server")
|
||||
assert client_connect.call_count == 1
|
||||
assert result["type"] is FlowResultType.CREATE_ENTRY
|
||||
assert result["title"] == "Matter"
|
||||
@ -468,7 +469,7 @@ async def test_supervisor_discovery(
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("discovery_info", "error"),
|
||||
[({"config": ADDON_DISCOVERY_INFO}, HassioAPIError())],
|
||||
[({"config": ADDON_DISCOVERY_INFO}, SupervisorError())],
|
||||
)
|
||||
async def test_supervisor_discovery_addon_info_failed(
|
||||
hass: HomeAssistant,
|
||||
@ -682,7 +683,7 @@ async def test_supervisor_discovery_addon_not_running(
|
||||
result = await hass.config_entries.flow.async_configure(result["flow_id"])
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert start_addon.call_args == call(hass, "core_matter_server")
|
||||
assert start_addon.call_args == call("core_matter_server")
|
||||
assert client_connect.call_count == 1
|
||||
assert result["type"] is FlowResultType.CREATE_ENTRY
|
||||
assert result["title"] == "Matter"
|
||||
@ -740,7 +741,7 @@ async def test_supervisor_discovery_addon_not_installed(
|
||||
result = await hass.config_entries.flow.async_configure(result["flow_id"])
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert start_addon.call_args == call(hass, "core_matter_server")
|
||||
assert start_addon.call_args == call("core_matter_server")
|
||||
assert client_connect.call_count == 1
|
||||
assert result["type"] is FlowResultType.CREATE_ENTRY
|
||||
assert result["title"] == "Matter"
|
||||
@ -868,7 +869,7 @@ async def test_addon_running(
|
||||
{"config": ADDON_DISCOVERY_INFO},
|
||||
None,
|
||||
None,
|
||||
HassioAPIError(),
|
||||
SupervisorError(),
|
||||
"addon_info_failed",
|
||||
False,
|
||||
False,
|
||||
@ -954,7 +955,7 @@ async def test_addon_running_failures(
|
||||
{"config": ADDON_DISCOVERY_INFO},
|
||||
None,
|
||||
None,
|
||||
HassioAPIError(),
|
||||
SupervisorError(),
|
||||
"addon_info_failed",
|
||||
False,
|
||||
False,
|
||||
@ -1062,7 +1063,7 @@ async def test_addon_installed(
|
||||
result = await hass.config_entries.flow.async_configure(result["flow_id"])
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert start_addon.call_args == call(hass, "core_matter_server")
|
||||
assert start_addon.call_args == call("core_matter_server")
|
||||
assert result["type"] is FlowResultType.CREATE_ENTRY
|
||||
assert result["title"] == "Matter"
|
||||
assert result["data"] == {
|
||||
@ -1084,7 +1085,7 @@ async def test_addon_installed(
|
||||
[
|
||||
(
|
||||
{"config": ADDON_DISCOVERY_INFO},
|
||||
HassioAPIError(),
|
||||
SupervisorError(),
|
||||
None,
|
||||
False,
|
||||
False,
|
||||
@ -1140,7 +1141,7 @@ async def test_addon_installed_failures(
|
||||
await hass.async_block_till_done()
|
||||
result = await hass.config_entries.flow.async_configure(result["flow_id"])
|
||||
|
||||
assert start_addon.call_args == call(hass, "core_matter_server")
|
||||
assert start_addon.call_args == call("core_matter_server")
|
||||
assert get_addon_discovery_info.called is discovery_info_called
|
||||
assert client_connect.called is client_connect_called
|
||||
assert result["type"] is FlowResultType.ABORT
|
||||
@ -1159,7 +1160,7 @@ async def test_addon_installed_failures(
|
||||
[
|
||||
(
|
||||
{"config": ADDON_DISCOVERY_INFO},
|
||||
HassioAPIError(),
|
||||
SupervisorError(),
|
||||
None,
|
||||
False,
|
||||
False,
|
||||
@ -1205,7 +1206,7 @@ async def test_addon_installed_failures_zeroconf(
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert addon_info.call_count == 1
|
||||
assert start_addon.call_args == call(hass, "core_matter_server")
|
||||
assert start_addon.call_args == call("core_matter_server")
|
||||
assert get_addon_discovery_info.called is discovery_info_called
|
||||
assert client_connect.called is client_connect_called
|
||||
assert result["type"] is FlowResultType.ABORT
|
||||
@ -1250,7 +1251,7 @@ async def test_addon_installed_already_configured(
|
||||
result = await hass.config_entries.flow.async_configure(result["flow_id"])
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert start_addon.call_args == call(hass, "core_matter_server")
|
||||
assert start_addon.call_args == call("core_matter_server")
|
||||
assert result["type"] is FlowResultType.ABORT
|
||||
assert result["reason"] == "reconfiguration_successful"
|
||||
assert entry.data["url"] == "ws://host1:5581/ws"
|
||||
@ -1298,7 +1299,7 @@ async def test_addon_not_installed(
|
||||
result = await hass.config_entries.flow.async_configure(result["flow_id"])
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert start_addon.call_args == call(hass, "core_matter_server")
|
||||
assert start_addon.call_args == call("core_matter_server")
|
||||
assert result["type"] is FlowResultType.CREATE_ENTRY
|
||||
assert result["title"] == "Matter"
|
||||
assert result["data"] == {
|
||||
@ -1417,7 +1418,7 @@ async def test_addon_not_installed_already_configured(
|
||||
result = await hass.config_entries.flow.async_configure(result["flow_id"])
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert start_addon.call_args == call(hass, "core_matter_server")
|
||||
assert start_addon.call_args == call("core_matter_server")
|
||||
assert client_connect.call_count == 1
|
||||
assert result["type"] is FlowResultType.ABORT
|
||||
assert result["reason"] == "reconfiguration_successful"
|
||||
|
@ -6,6 +6,7 @@ import asyncio
|
||||
from collections.abc import Generator
|
||||
from unittest.mock import AsyncMock, MagicMock, call, patch
|
||||
|
||||
from aiohasupervisor import SupervisorError
|
||||
from matter_server.client.exceptions import (
|
||||
CannotConnect,
|
||||
ServerVersionTooNew,
|
||||
@ -298,7 +299,7 @@ async def test_start_addon(
|
||||
assert addon_info.call_count == 1
|
||||
assert install_addon.call_count == 0
|
||||
assert start_addon.call_count == 1
|
||||
assert start_addon.call_args == call(hass, "core_matter_server")
|
||||
assert start_addon.call_args == call("core_matter_server")
|
||||
|
||||
|
||||
async def test_install_addon(
|
||||
@ -327,7 +328,7 @@ async def test_install_addon(
|
||||
assert install_addon.call_count == 1
|
||||
assert install_addon.call_args == call(hass, "core_matter_server")
|
||||
assert start_addon.call_count == 1
|
||||
assert start_addon.call_args == call(hass, "core_matter_server")
|
||||
assert start_addon.call_args == call("core_matter_server")
|
||||
|
||||
|
||||
async def test_addon_info_failure(
|
||||
@ -338,7 +339,7 @@ async def test_addon_info_failure(
|
||||
start_addon: AsyncMock,
|
||||
) -> None:
|
||||
"""Test failure to get add-on info for Matter add-on during entry setup."""
|
||||
addon_info.side_effect = HassioAPIError("Boom")
|
||||
addon_info.side_effect = SupervisorError("Boom")
|
||||
entry = MockConfigEntry(
|
||||
domain=DOMAIN,
|
||||
title="Matter",
|
||||
@ -492,7 +493,7 @@ async def test_issue_registry_invalid_version(
|
||||
("stop_addon_side_effect", "entry_state"),
|
||||
[
|
||||
(None, ConfigEntryState.NOT_LOADED),
|
||||
(HassioAPIError("Boom"), ConfigEntryState.LOADED),
|
||||
(SupervisorError("Boom"), ConfigEntryState.LOADED),
|
||||
],
|
||||
)
|
||||
async def test_stop_addon(
|
||||
@ -531,7 +532,7 @@ async def test_stop_addon(
|
||||
|
||||
assert entry.state == entry_state
|
||||
assert stop_addon.call_count == 1
|
||||
assert stop_addon.call_args == call(hass, "core_matter_server")
|
||||
assert stop_addon.call_args == call("core_matter_server")
|
||||
|
||||
|
||||
async def test_remove_entry(
|
||||
@ -570,7 +571,7 @@ async def test_remove_entry(
|
||||
await hass.config_entries.async_remove(entry.entry_id)
|
||||
|
||||
assert stop_addon.call_count == 1
|
||||
assert stop_addon.call_args == call(hass, "core_matter_server")
|
||||
assert stop_addon.call_args == call("core_matter_server")
|
||||
assert create_backup.call_count == 1
|
||||
assert create_backup.call_args == call(
|
||||
hass,
|
||||
@ -578,7 +579,7 @@ async def test_remove_entry(
|
||||
partial=True,
|
||||
)
|
||||
assert uninstall_addon.call_count == 1
|
||||
assert uninstall_addon.call_args == call(hass, "core_matter_server")
|
||||
assert uninstall_addon.call_args == call("core_matter_server")
|
||||
assert entry.state is ConfigEntryState.NOT_LOADED
|
||||
assert len(hass.config_entries.async_entries(DOMAIN)) == 0
|
||||
stop_addon.reset_mock()
|
||||
@ -588,12 +589,12 @@ async def test_remove_entry(
|
||||
# test add-on stop failure
|
||||
entry.add_to_hass(hass)
|
||||
assert len(hass.config_entries.async_entries(DOMAIN)) == 1
|
||||
stop_addon.side_effect = HassioAPIError()
|
||||
stop_addon.side_effect = SupervisorError()
|
||||
|
||||
await hass.config_entries.async_remove(entry.entry_id)
|
||||
|
||||
assert stop_addon.call_count == 1
|
||||
assert stop_addon.call_args == call(hass, "core_matter_server")
|
||||
assert stop_addon.call_args == call("core_matter_server")
|
||||
assert create_backup.call_count == 0
|
||||
assert uninstall_addon.call_count == 0
|
||||
assert entry.state is ConfigEntryState.NOT_LOADED
|
||||
@ -612,7 +613,7 @@ async def test_remove_entry(
|
||||
await hass.config_entries.async_remove(entry.entry_id)
|
||||
|
||||
assert stop_addon.call_count == 1
|
||||
assert stop_addon.call_args == call(hass, "core_matter_server")
|
||||
assert stop_addon.call_args == call("core_matter_server")
|
||||
assert create_backup.call_count == 1
|
||||
assert create_backup.call_args == call(
|
||||
hass,
|
||||
@ -631,12 +632,12 @@ async def test_remove_entry(
|
||||
# test add-on uninstall failure
|
||||
entry.add_to_hass(hass)
|
||||
assert len(hass.config_entries.async_entries(DOMAIN)) == 1
|
||||
uninstall_addon.side_effect = HassioAPIError()
|
||||
uninstall_addon.side_effect = SupervisorError()
|
||||
|
||||
await hass.config_entries.async_remove(entry.entry_id)
|
||||
|
||||
assert stop_addon.call_count == 1
|
||||
assert stop_addon.call_args == call(hass, "core_matter_server")
|
||||
assert stop_addon.call_args == call("core_matter_server")
|
||||
assert create_backup.call_count == 1
|
||||
assert create_backup.call_args == call(
|
||||
hass,
|
||||
@ -644,7 +645,7 @@ async def test_remove_entry(
|
||||
partial=True,
|
||||
)
|
||||
assert uninstall_addon.call_count == 1
|
||||
assert uninstall_addon.call_args == call(hass, "core_matter_server")
|
||||
assert uninstall_addon.call_args == call("core_matter_server")
|
||||
assert entry.state is ConfigEntryState.NOT_LOADED
|
||||
assert len(hass.config_entries.async_entries(DOMAIN)) == 0
|
||||
assert "Failed to uninstall the Matter Server add-on" in caplog.text
|
||||
|
@ -8,6 +8,7 @@ from typing import Any
|
||||
from unittest.mock import AsyncMock, MagicMock, patch
|
||||
from uuid import uuid4
|
||||
|
||||
from aiohasupervisor import SupervisorError
|
||||
import pytest
|
||||
import voluptuous as vol
|
||||
|
||||
@ -671,7 +672,7 @@ async def test_addon_not_running_api_error(
|
||||
|
||||
Case: The Mosquitto add-on start fails on a API error.
|
||||
"""
|
||||
start_addon.side_effect = HassioAPIError()
|
||||
start_addon.side_effect = SupervisorError()
|
||||
|
||||
result = await hass.config_entries.flow.async_init(
|
||||
"mqtt", context={"source": config_entries.SOURCE_USER}
|
||||
@ -758,7 +759,7 @@ async def test_addon_info_error(
|
||||
|
||||
Case: The Mosquitto add-on info could not be retrieved.
|
||||
"""
|
||||
addon_info.side_effect = AddonError()
|
||||
addon_info.side_effect = SupervisorError()
|
||||
|
||||
result = await hass.config_entries.flow.async_init(
|
||||
"mqtt", context={"source": config_entries.SOURCE_USER}
|
||||
|
@ -632,7 +632,7 @@ async def test_usb_discovery(
|
||||
result = await hass.config_entries.flow.async_configure(result["flow_id"])
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert start_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert start_addon.call_args == call("core_zwave_js")
|
||||
|
||||
assert result["type"] is FlowResultType.CREATE_ENTRY
|
||||
assert result["title"] == TITLE
|
||||
@ -733,7 +733,7 @@ async def test_usb_discovery_addon_not_running(
|
||||
result = await hass.config_entries.flow.async_configure(result["flow_id"])
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert start_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert start_addon.call_args == call("core_zwave_js")
|
||||
|
||||
assert result["type"] is FlowResultType.CREATE_ENTRY
|
||||
assert result["title"] == TITLE
|
||||
@ -828,7 +828,7 @@ async def test_discovery_addon_not_running(
|
||||
result = await hass.config_entries.flow.async_configure(result["flow_id"])
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert start_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert start_addon.call_args == call("core_zwave_js")
|
||||
|
||||
assert result["type"] is FlowResultType.CREATE_ENTRY
|
||||
assert result["title"] == TITLE
|
||||
@ -931,7 +931,7 @@ async def test_discovery_addon_not_installed(
|
||||
result = await hass.config_entries.flow.async_configure(result["flow_id"])
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert start_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert start_addon.call_args == call("core_zwave_js")
|
||||
|
||||
assert result["type"] is FlowResultType.CREATE_ENTRY
|
||||
assert result["title"] == TITLE
|
||||
@ -1344,7 +1344,7 @@ async def test_addon_installed(
|
||||
result = await hass.config_entries.flow.async_configure(result["flow_id"])
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert start_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert start_addon.call_args == call("core_zwave_js")
|
||||
|
||||
assert result["type"] is FlowResultType.CREATE_ENTRY
|
||||
assert result["title"] == TITLE
|
||||
@ -1428,7 +1428,7 @@ async def test_addon_installed_start_failure(
|
||||
await hass.async_block_till_done()
|
||||
result = await hass.config_entries.flow.async_configure(result["flow_id"])
|
||||
|
||||
assert start_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert start_addon.call_args == call("core_zwave_js")
|
||||
|
||||
assert result["type"] is FlowResultType.ABORT
|
||||
assert result["reason"] == "addon_start_failed"
|
||||
@ -1507,7 +1507,7 @@ async def test_addon_installed_failures(
|
||||
await hass.async_block_till_done()
|
||||
result = await hass.config_entries.flow.async_configure(result["flow_id"])
|
||||
|
||||
assert start_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert start_addon.call_args == call("core_zwave_js")
|
||||
|
||||
assert result["type"] is FlowResultType.ABORT
|
||||
assert result["reason"] == "addon_start_failed"
|
||||
@ -1655,7 +1655,7 @@ async def test_addon_installed_already_configured(
|
||||
await hass.async_block_till_done()
|
||||
result = await hass.config_entries.flow.async_configure(result["flow_id"])
|
||||
|
||||
assert start_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert start_addon.call_args == call("core_zwave_js")
|
||||
|
||||
assert result["type"] is FlowResultType.ABORT
|
||||
assert result["reason"] == "already_configured"
|
||||
@ -1750,7 +1750,7 @@ async def test_addon_not_installed(
|
||||
result = await hass.config_entries.flow.async_configure(result["flow_id"])
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert start_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert start_addon.call_args == call("core_zwave_js")
|
||||
|
||||
assert result["type"] is FlowResultType.CREATE_ENTRY
|
||||
assert result["title"] == TITLE
|
||||
@ -2007,7 +2007,7 @@ async def test_options_addon_running(
|
||||
result = await hass.config_entries.options.async_configure(result["flow_id"])
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert restart_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert restart_addon.call_args == call("core_zwave_js")
|
||||
|
||||
assert result["type"] is FlowResultType.CREATE_ENTRY
|
||||
assert entry.data["url"] == "ws://host1:3001"
|
||||
@ -2286,7 +2286,7 @@ async def test_options_different_device(
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert restart_addon.call_count == 1
|
||||
assert restart_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert restart_addon.call_args == call("core_zwave_js")
|
||||
|
||||
result = await hass.config_entries.options.async_configure(result["flow_id"])
|
||||
await hass.async_block_till_done()
|
||||
@ -2308,7 +2308,7 @@ async def test_options_different_device(
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert restart_addon.call_count == 2
|
||||
assert restart_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert restart_addon.call_args == call("core_zwave_js")
|
||||
|
||||
result = await hass.config_entries.options.async_configure(result["flow_id"])
|
||||
await hass.async_block_till_done()
|
||||
@ -2452,7 +2452,7 @@ async def test_options_addon_restart_failed(
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert restart_addon.call_count == 1
|
||||
assert restart_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert restart_addon.call_args == call("core_zwave_js")
|
||||
|
||||
result = await hass.config_entries.options.async_configure(result["flow_id"])
|
||||
await hass.async_block_till_done()
|
||||
@ -2471,7 +2471,7 @@ async def test_options_addon_restart_failed(
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert restart_addon.call_count == 2
|
||||
assert restart_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert restart_addon.call_args == call("core_zwave_js")
|
||||
|
||||
result = await hass.config_entries.options.async_configure(result["flow_id"])
|
||||
await hass.async_block_till_done()
|
||||
@ -2709,7 +2709,7 @@ async def test_options_addon_not_installed(
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert start_addon.call_count == 1
|
||||
assert start_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert start_addon.call_args == call("core_zwave_js")
|
||||
|
||||
result = await hass.config_entries.options.async_configure(result["flow_id"])
|
||||
await hass.async_block_till_done()
|
||||
|
@ -5,6 +5,7 @@ from copy import deepcopy
|
||||
import logging
|
||||
from unittest.mock import AsyncMock, call, patch
|
||||
|
||||
from aiohasupervisor import SupervisorError
|
||||
import pytest
|
||||
from zwave_js_server.client import Client
|
||||
from zwave_js_server.event import Event
|
||||
@ -556,7 +557,7 @@ async def test_start_addon(
|
||||
hass, "core_zwave_js", {"options": addon_options}
|
||||
)
|
||||
assert start_addon.call_count == 1
|
||||
assert start_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert start_addon.call_args == call("core_zwave_js")
|
||||
|
||||
|
||||
async def test_install_addon(
|
||||
@ -605,7 +606,7 @@ async def test_install_addon(
|
||||
hass, "core_zwave_js", {"options": addon_options}
|
||||
)
|
||||
assert start_addon.call_count == 1
|
||||
assert start_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert start_addon.call_args == call("core_zwave_js")
|
||||
|
||||
|
||||
@pytest.mark.parametrize("addon_info_side_effect", [HassioAPIError("Boom")])
|
||||
@ -845,7 +846,7 @@ async def test_issue_registry(
|
||||
("stop_addon_side_effect", "entry_state"),
|
||||
[
|
||||
(None, ConfigEntryState.NOT_LOADED),
|
||||
(HassioAPIError("Boom"), ConfigEntryState.LOADED),
|
||||
(SupervisorError("Boom"), ConfigEntryState.LOADED),
|
||||
],
|
||||
)
|
||||
async def test_stop_addon(
|
||||
@ -888,7 +889,7 @@ async def test_stop_addon(
|
||||
|
||||
assert entry.state == entry_state
|
||||
assert stop_addon.call_count == 1
|
||||
assert stop_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert stop_addon.call_args == call("core_zwave_js")
|
||||
|
||||
|
||||
async def test_remove_entry(
|
||||
@ -927,7 +928,7 @@ async def test_remove_entry(
|
||||
await hass.config_entries.async_remove(entry.entry_id)
|
||||
|
||||
assert stop_addon.call_count == 1
|
||||
assert stop_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert stop_addon.call_args == call("core_zwave_js")
|
||||
assert create_backup.call_count == 1
|
||||
assert create_backup.call_args == call(
|
||||
hass,
|
||||
@ -935,7 +936,7 @@ async def test_remove_entry(
|
||||
partial=True,
|
||||
)
|
||||
assert uninstall_addon.call_count == 1
|
||||
assert uninstall_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert uninstall_addon.call_args == call("core_zwave_js")
|
||||
assert entry.state is ConfigEntryState.NOT_LOADED
|
||||
assert len(hass.config_entries.async_entries(DOMAIN)) == 0
|
||||
stop_addon.reset_mock()
|
||||
@ -945,12 +946,12 @@ async def test_remove_entry(
|
||||
# test add-on stop failure
|
||||
entry.add_to_hass(hass)
|
||||
assert len(hass.config_entries.async_entries(DOMAIN)) == 1
|
||||
stop_addon.side_effect = HassioAPIError()
|
||||
stop_addon.side_effect = SupervisorError()
|
||||
|
||||
await hass.config_entries.async_remove(entry.entry_id)
|
||||
|
||||
assert stop_addon.call_count == 1
|
||||
assert stop_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert stop_addon.call_args == call("core_zwave_js")
|
||||
assert create_backup.call_count == 0
|
||||
assert uninstall_addon.call_count == 0
|
||||
assert entry.state is ConfigEntryState.NOT_LOADED
|
||||
@ -969,7 +970,7 @@ async def test_remove_entry(
|
||||
await hass.config_entries.async_remove(entry.entry_id)
|
||||
|
||||
assert stop_addon.call_count == 1
|
||||
assert stop_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert stop_addon.call_args == call("core_zwave_js")
|
||||
assert create_backup.call_count == 1
|
||||
assert create_backup.call_args == call(
|
||||
hass,
|
||||
@ -988,12 +989,12 @@ async def test_remove_entry(
|
||||
# test add-on uninstall failure
|
||||
entry.add_to_hass(hass)
|
||||
assert len(hass.config_entries.async_entries(DOMAIN)) == 1
|
||||
uninstall_addon.side_effect = HassioAPIError()
|
||||
uninstall_addon.side_effect = SupervisorError()
|
||||
|
||||
await hass.config_entries.async_remove(entry.entry_id)
|
||||
|
||||
assert stop_addon.call_count == 1
|
||||
assert stop_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert stop_addon.call_args == call("core_zwave_js")
|
||||
assert create_backup.call_count == 1
|
||||
assert create_backup.call_args == call(
|
||||
hass,
|
||||
@ -1001,7 +1002,7 @@ async def test_remove_entry(
|
||||
partial=True,
|
||||
)
|
||||
assert uninstall_addon.call_count == 1
|
||||
assert uninstall_addon.call_args == call(hass, "core_zwave_js")
|
||||
assert uninstall_addon.call_args == call("core_zwave_js")
|
||||
assert entry.state is ConfigEntryState.NOT_LOADED
|
||||
assert len(hass.config_entries.async_entries(DOMAIN)) == 0
|
||||
assert "Failed to uninstall the Z-Wave JS add-on" in caplog.text
|
||||
|
Loading…
x
Reference in New Issue
Block a user