mirror of
https://github.com/elisspace/core.git
synced 2026-09-29 05:49:53 +00:00
Improve UniFi Protect unauth handling (#75269)
This commit is contained in:
@@ -9,14 +9,18 @@ import aiohttp
|
||||
from pyunifiprotect import NotAuthorized, NvrError, ProtectApiClient
|
||||
from pyunifiprotect.data import NVR, Bootstrap, Light
|
||||
|
||||
from homeassistant.components.unifiprotect.const import CONF_DISABLE_RTSP, DOMAIN
|
||||
from homeassistant.components.unifiprotect.const import (
|
||||
CONF_DISABLE_RTSP,
|
||||
DEFAULT_SCAN_INTERVAL,
|
||||
DOMAIN,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry, ConfigEntryState
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
||||
from homeassistant.setup import async_setup_component
|
||||
|
||||
from . import _patch_discovery
|
||||
from .utils import MockUFPFixture, init_entry
|
||||
from .utils import MockUFPFixture, init_entry, time_changed
|
||||
|
||||
from tests.common import MockConfigEntry
|
||||
|
||||
@@ -145,12 +149,23 @@ async def test_setup_failed_update(hass: HomeAssistant, ufp: MockUFPFixture):
|
||||
async def test_setup_failed_update_reauth(hass: HomeAssistant, ufp: MockUFPFixture):
|
||||
"""Test setup of unifiprotect entry with update that gives unauthroized error."""
|
||||
|
||||
ufp.api.update = AsyncMock(side_effect=NotAuthorized)
|
||||
|
||||
await hass.config_entries.async_setup(ufp.entry.entry_id)
|
||||
await hass.async_block_till_done()
|
||||
assert ufp.entry.state == ConfigEntryState.SETUP_RETRY
|
||||
assert ufp.api.update.called
|
||||
assert ufp.entry.state == ConfigEntryState.LOADED
|
||||
|
||||
# reauth should not be triggered until there are 10 auth failures in a row
|
||||
# to verify it is not transient
|
||||
ufp.api.update = AsyncMock(side_effect=NotAuthorized)
|
||||
for _ in range(10):
|
||||
await time_changed(hass, DEFAULT_SCAN_INTERVAL)
|
||||
assert len(hass.config_entries.flow._progress) == 0
|
||||
|
||||
assert ufp.api.update.call_count == 10
|
||||
assert ufp.entry.state == ConfigEntryState.LOADED
|
||||
|
||||
await time_changed(hass, DEFAULT_SCAN_INTERVAL)
|
||||
assert ufp.api.update.call_count == 11
|
||||
assert len(hass.config_entries.flow._progress) == 1
|
||||
|
||||
|
||||
async def test_setup_failed_error(hass: HomeAssistant, ufp: MockUFPFixture):
|
||||
|
||||
Reference in New Issue
Block a user