Rework UniFi websocket (#100614)
* Rework websocket management * remove unnecessary fixture * Remove controller from mock_unifi_websocket * Mock api.login in reconnect method * Remove unnecessary edits * Minor clean up * Bump aiounifi to v63 * Wait on task cancellation
This commit is contained in:
parent
134c005168
commit
01b5854968
13 changed files with 184 additions and 157 deletions
|
@ -4,7 +4,6 @@ from datetime import datetime, timedelta
|
|||
from unittest.mock import patch
|
||||
|
||||
from aiounifi.models.message import MessageKey
|
||||
from aiounifi.websocket import WebsocketState
|
||||
import pytest
|
||||
|
||||
from homeassistant.components.device_tracker import DOMAIN as TRACKER_DOMAIN
|
||||
|
@ -562,7 +561,10 @@ async def test_remove_sensors(
|
|||
|
||||
|
||||
async def test_poe_port_switches(
|
||||
hass: HomeAssistant, aioclient_mock: AiohttpClientMocker, mock_unifi_websocket
|
||||
hass: HomeAssistant,
|
||||
aioclient_mock: AiohttpClientMocker,
|
||||
mock_unifi_websocket,
|
||||
websocket_mock,
|
||||
) -> None:
|
||||
"""Test the update_items function with some clients."""
|
||||
await setup_unifi_integration(hass, aioclient_mock, devices_response=[DEVICE_1])
|
||||
|
@ -607,16 +609,16 @@ async def test_poe_port_switches(
|
|||
# Availability signalling
|
||||
|
||||
# Controller disconnects
|
||||
mock_unifi_websocket(state=WebsocketState.DISCONNECTED)
|
||||
await hass.async_block_till_done()
|
||||
await websocket_mock.disconnect()
|
||||
assert (
|
||||
hass.states.get("sensor.mock_name_port_1_poe_power").state == STATE_UNAVAILABLE
|
||||
)
|
||||
|
||||
# Controller reconnects
|
||||
mock_unifi_websocket(state=WebsocketState.RUNNING)
|
||||
await hass.async_block_till_done()
|
||||
assert hass.states.get("sensor.mock_name_port_1_poe_power")
|
||||
await websocket_mock.reconnect()
|
||||
assert (
|
||||
hass.states.get("sensor.mock_name_port_1_poe_power").state != STATE_UNAVAILABLE
|
||||
)
|
||||
|
||||
# Device gets disabled
|
||||
device_1["disabled"] = True
|
||||
|
@ -634,7 +636,10 @@ async def test_poe_port_switches(
|
|||
|
||||
|
||||
async def test_wlan_client_sensors(
|
||||
hass: HomeAssistant, aioclient_mock: AiohttpClientMocker, mock_unifi_websocket
|
||||
hass: HomeAssistant,
|
||||
aioclient_mock: AiohttpClientMocker,
|
||||
mock_unifi_websocket,
|
||||
websocket_mock,
|
||||
) -> None:
|
||||
"""Verify that WLAN client sensors are working as expected."""
|
||||
wireless_client_1 = {
|
||||
|
@ -720,13 +725,11 @@ async def test_wlan_client_sensors(
|
|||
# Availability signalling
|
||||
|
||||
# Controller disconnects
|
||||
mock_unifi_websocket(state=WebsocketState.DISCONNECTED)
|
||||
await hass.async_block_till_done()
|
||||
await websocket_mock.disconnect()
|
||||
assert hass.states.get("sensor.ssid_1").state == STATE_UNAVAILABLE
|
||||
|
||||
# Controller reconnects
|
||||
mock_unifi_websocket(state=WebsocketState.RUNNING)
|
||||
await hass.async_block_till_done()
|
||||
await websocket_mock.reconnect()
|
||||
assert hass.states.get("sensor.ssid_1").state == "0"
|
||||
|
||||
# WLAN gets disabled
|
||||
|
@ -837,7 +840,6 @@ async def test_device_uptime(
|
|||
now = datetime(2021, 1, 1, 1, 1, 0, tzinfo=dt_util.UTC)
|
||||
with patch("homeassistant.util.dt.now", return_value=now):
|
||||
await setup_unifi_integration(hass, aioclient_mock, devices_response=[device])
|
||||
|
||||
assert len(hass.states.async_entity_ids(SENSOR_DOMAIN)) == 1
|
||||
assert hass.states.get("sensor.device_uptime").state == "2021-01-01T01:00:00+00:00"
|
||||
|
||||
|
@ -854,7 +856,6 @@ async def test_device_uptime(
|
|||
now = datetime(2021, 1, 1, 1, 1, 4, tzinfo=dt_util.UTC)
|
||||
with patch("homeassistant.util.dt.now", return_value=now):
|
||||
mock_unifi_websocket(message=MessageKey.DEVICE, data=device)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("sensor.device_uptime").state == "2021-01-01T01:00:00+00:00"
|
||||
|
||||
|
@ -865,7 +866,6 @@ async def test_device_uptime(
|
|||
now = datetime(2021, 2, 1, 1, 1, 0, tzinfo=dt_util.UTC)
|
||||
with patch("homeassistant.util.dt.now", return_value=now):
|
||||
mock_unifi_websocket(message=MessageKey.DEVICE, data=device)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
assert hass.states.get("sensor.device_uptime").state == "2021-02-01T01:00:00+00:00"
|
||||
|
||||
|
@ -908,5 +908,4 @@ async def test_device_temperature(
|
|||
# Verify new event change temperature
|
||||
device["general_temperature"] = 60
|
||||
mock_unifi_websocket(message=MessageKey.DEVICE, data=device)
|
||||
await hass.async_block_till_done()
|
||||
assert hass.states.get("sensor.device_temperature").state == "60"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue