Ask for permission to disable Reolink privacy mode during config flow (#136511)

This commit is contained in:
starkillerOG
2025-01-27 10:52:48 +01:00
committed by GitHub
parent 439a393816
commit f1dfae6937
3 changed files with 86 additions and 1 deletions

View File

@@ -2,7 +2,7 @@
import json
from typing import Any
from unittest.mock import ANY, AsyncMock, MagicMock, call
from unittest.mock import ANY, AsyncMock, MagicMock, call, patch
from aiohttp import ClientSession
from freezegun.api import FrozenDateTimeFactory
@@ -11,6 +11,7 @@ from reolink_aio.exceptions import (
ApiError,
CredentialsInvalidError,
LoginFirmwareError,
LoginPrivacyModeError,
ReolinkError,
)
@@ -88,6 +89,59 @@ async def test_config_flow_manual_success(
assert result["result"].unique_id == TEST_MAC
async def test_config_flow_privacy_success(
hass: HomeAssistant, reolink_connect: MagicMock, mock_setup_entry: MagicMock
) -> None:
"""Successful flow when privacy mode is turned on."""
reolink_connect.baichuan.privacy_mode.return_value = True
reolink_connect.get_host_data.side_effect = LoginPrivacyModeError("Test error")
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER}
)
assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "user"
assert result["errors"] == {}
result = await hass.config_entries.flow.async_configure(
result["flow_id"],
{
CONF_USERNAME: TEST_USERNAME,
CONF_PASSWORD: TEST_PASSWORD,
CONF_HOST: TEST_HOST,
},
)
assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "privacy"
assert result["errors"] is None
assert reolink_connect.baichuan.set_privacy_mode.call_count == 0
reolink_connect.get_host_data.reset_mock(side_effect=True)
with patch("homeassistant.components.reolink.config_flow.API_STARTUP_TIME", new=0):
result = await hass.config_entries.flow.async_configure(result["flow_id"], {})
assert reolink_connect.baichuan.set_privacy_mode.call_count == 1
assert result["type"] is FlowResultType.CREATE_ENTRY
assert result["title"] == TEST_NVR_NAME
assert result["data"] == {
CONF_HOST: TEST_HOST,
CONF_USERNAME: TEST_USERNAME,
CONF_PASSWORD: TEST_PASSWORD,
CONF_PORT: TEST_PORT,
CONF_USE_HTTPS: TEST_USE_HTTPS,
}
assert result["options"] == {
CONF_PROTOCOL: DEFAULT_PROTOCOL,
}
assert result["result"].unique_id == TEST_MAC
reolink_connect.baichuan.privacy_mode.return_value = False
async def test_config_flow_errors(
hass: HomeAssistant, reolink_connect: MagicMock, mock_setup_entry: MagicMock
) -> None: