mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 05:07:41 +00:00
UniFi config option SSID filter (#31842)
* Draft * Use new multi_select config validation * Bump dependency to v13 * Improve options flow * Add title to config options * Add config option descriptions * Fix martins comment
This commit is contained in:
parent
60ae85564e
commit
774c892ee6
@ -25,18 +25,26 @@
|
|||||||
},
|
},
|
||||||
"options": {
|
"options": {
|
||||||
"step": {
|
"step": {
|
||||||
|
"init": {
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
"device_tracker": {
|
"device_tracker": {
|
||||||
"data": {
|
"data": {
|
||||||
"detection_time": "Time in seconds from last seen until considered away",
|
"detection_time": "Time in seconds from last seen until considered away",
|
||||||
|
"ssid_filter": "Select SSIDs to track wireless clients on",
|
||||||
"track_clients": "Track network clients",
|
"track_clients": "Track network clients",
|
||||||
"track_devices": "Track network devices (Ubiquiti devices)",
|
"track_devices": "Track network devices (Ubiquiti devices)",
|
||||||
"track_wired_clients": "Include wired network clients"
|
"track_wired_clients": "Include wired network clients"
|
||||||
}
|
},
|
||||||
|
"description": "Configure device tracking",
|
||||||
|
"title": "UniFi options"
|
||||||
},
|
},
|
||||||
"statistics_sensors": {
|
"statistics_sensors": {
|
||||||
"data": {
|
"data": {
|
||||||
"allow_bandwidth_sensors": "Create bandwidth usage sensors for network clients"
|
"allow_bandwidth_sensors": "Bandwidth usage sensors for network clients"
|
||||||
}
|
},
|
||||||
|
"description": "Configure statistics sensors",
|
||||||
|
"title": "UniFi options"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,21 +12,18 @@ from homeassistant.const import (
|
|||||||
CONF_VERIFY_SSL,
|
CONF_VERIFY_SSL,
|
||||||
)
|
)
|
||||||
from homeassistant.core import callback
|
from homeassistant.core import callback
|
||||||
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
||||||
from .const import (
|
from .const import (
|
||||||
CONF_ALLOW_BANDWIDTH_SENSORS,
|
CONF_ALLOW_BANDWIDTH_SENSORS,
|
||||||
CONF_CONTROLLER,
|
CONF_CONTROLLER,
|
||||||
CONF_DETECTION_TIME,
|
CONF_DETECTION_TIME,
|
||||||
CONF_SITE_ID,
|
CONF_SITE_ID,
|
||||||
|
CONF_SSID_FILTER,
|
||||||
CONF_TRACK_CLIENTS,
|
CONF_TRACK_CLIENTS,
|
||||||
CONF_TRACK_DEVICES,
|
CONF_TRACK_DEVICES,
|
||||||
CONF_TRACK_WIRED_CLIENTS,
|
CONF_TRACK_WIRED_CLIENTS,
|
||||||
CONTROLLER_ID,
|
CONTROLLER_ID,
|
||||||
DEFAULT_ALLOW_BANDWIDTH_SENSORS,
|
|
||||||
DEFAULT_DETECTION_TIME,
|
|
||||||
DEFAULT_TRACK_CLIENTS,
|
|
||||||
DEFAULT_TRACK_DEVICES,
|
|
||||||
DEFAULT_TRACK_WIRED_CLIENTS,
|
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
LOGGER,
|
LOGGER,
|
||||||
)
|
)
|
||||||
@ -185,33 +182,30 @@ class UnifiOptionsFlowHandler(config_entries.OptionsFlow):
|
|||||||
self.options.update(user_input)
|
self.options.update(user_input)
|
||||||
return await self.async_step_statistics_sensors()
|
return await self.async_step_statistics_sensors()
|
||||||
|
|
||||||
|
controller = get_controller_from_config_entry(self.hass, self.config_entry)
|
||||||
|
|
||||||
|
ssid_filter = {wlan: wlan for wlan in controller.api.wlans}
|
||||||
|
|
||||||
return self.async_show_form(
|
return self.async_show_form(
|
||||||
step_id="device_tracker",
|
step_id="device_tracker",
|
||||||
data_schema=vol.Schema(
|
data_schema=vol.Schema(
|
||||||
{
|
{
|
||||||
vol.Optional(
|
vol.Optional(
|
||||||
CONF_TRACK_CLIENTS,
|
CONF_TRACK_CLIENTS, default=controller.option_track_clients,
|
||||||
default=self.config_entry.options.get(
|
|
||||||
CONF_TRACK_CLIENTS, DEFAULT_TRACK_CLIENTS
|
|
||||||
),
|
|
||||||
): bool,
|
): bool,
|
||||||
vol.Optional(
|
vol.Optional(
|
||||||
CONF_TRACK_WIRED_CLIENTS,
|
CONF_TRACK_WIRED_CLIENTS,
|
||||||
default=self.config_entry.options.get(
|
default=controller.option_track_wired_clients,
|
||||||
CONF_TRACK_WIRED_CLIENTS, DEFAULT_TRACK_WIRED_CLIENTS
|
|
||||||
),
|
|
||||||
): bool,
|
): bool,
|
||||||
vol.Optional(
|
vol.Optional(
|
||||||
CONF_TRACK_DEVICES,
|
CONF_TRACK_DEVICES, default=controller.option_track_devices,
|
||||||
default=self.config_entry.options.get(
|
|
||||||
CONF_TRACK_DEVICES, DEFAULT_TRACK_DEVICES
|
|
||||||
),
|
|
||||||
): bool,
|
): bool,
|
||||||
|
vol.Optional(
|
||||||
|
CONF_SSID_FILTER, default=controller.option_ssid_filter
|
||||||
|
): cv.multi_select(ssid_filter),
|
||||||
vol.Optional(
|
vol.Optional(
|
||||||
CONF_DETECTION_TIME,
|
CONF_DETECTION_TIME,
|
||||||
default=self.config_entry.options.get(
|
default=int(controller.option_detection_time.total_seconds()),
|
||||||
CONF_DETECTION_TIME, DEFAULT_DETECTION_TIME
|
|
||||||
),
|
|
||||||
): int,
|
): int,
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
@ -223,16 +217,15 @@ class UnifiOptionsFlowHandler(config_entries.OptionsFlow):
|
|||||||
self.options.update(user_input)
|
self.options.update(user_input)
|
||||||
return await self._update_options()
|
return await self._update_options()
|
||||||
|
|
||||||
|
controller = get_controller_from_config_entry(self.hass, self.config_entry)
|
||||||
|
|
||||||
return self.async_show_form(
|
return self.async_show_form(
|
||||||
step_id="statistics_sensors",
|
step_id="statistics_sensors",
|
||||||
data_schema=vol.Schema(
|
data_schema=vol.Schema(
|
||||||
{
|
{
|
||||||
vol.Optional(
|
vol.Optional(
|
||||||
CONF_ALLOW_BANDWIDTH_SENSORS,
|
CONF_ALLOW_BANDWIDTH_SENSORS,
|
||||||
default=self.config_entry.options.get(
|
default=controller.option_allow_bandwidth_sensors,
|
||||||
CONF_ALLOW_BANDWIDTH_SENSORS,
|
|
||||||
DEFAULT_ALLOW_BANDWIDTH_SENSORS,
|
|
||||||
),
|
|
||||||
): bool
|
): bool
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
"config_flow": true,
|
"config_flow": true,
|
||||||
"documentation": "https://www.home-assistant.io/integrations/unifi",
|
"documentation": "https://www.home-assistant.io/integrations/unifi",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"aiounifi==12"
|
"aiounifi==13"
|
||||||
],
|
],
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"codeowners": [
|
"codeowners": [
|
||||||
|
@ -31,15 +31,20 @@
|
|||||||
"device_tracker": {
|
"device_tracker": {
|
||||||
"data": {
|
"data": {
|
||||||
"detection_time": "Time in seconds from last seen until considered away",
|
"detection_time": "Time in seconds from last seen until considered away",
|
||||||
|
"ssid_filter": "Select SSIDs to track wireless clients on",
|
||||||
"track_clients": "Track network clients",
|
"track_clients": "Track network clients",
|
||||||
"track_devices": "Track network devices (Ubiquiti devices)",
|
"track_devices": "Track network devices (Ubiquiti devices)",
|
||||||
"track_wired_clients": "Include wired network clients"
|
"track_wired_clients": "Include wired network clients"
|
||||||
}
|
},
|
||||||
|
"description": "Configure device tracking",
|
||||||
|
"title": "UniFi options"
|
||||||
},
|
},
|
||||||
"statistics_sensors": {
|
"statistics_sensors": {
|
||||||
"data": {
|
"data": {
|
||||||
"allow_bandwidth_sensors": "Create bandwidth usage sensors for network clients"
|
"allow_bandwidth_sensors": "Bandwidth usage sensors for network clients"
|
||||||
}
|
},
|
||||||
|
"description": "Configure statistics sensors",
|
||||||
|
"title": "UniFi options"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -199,7 +199,7 @@ aiopylgtv==0.3.3
|
|||||||
aioswitcher==2019.4.26
|
aioswitcher==2019.4.26
|
||||||
|
|
||||||
# homeassistant.components.unifi
|
# homeassistant.components.unifi
|
||||||
aiounifi==12
|
aiounifi==13
|
||||||
|
|
||||||
# homeassistant.components.wwlln
|
# homeassistant.components.wwlln
|
||||||
aiowwlln==2.0.2
|
aiowwlln==2.0.2
|
||||||
|
@ -78,7 +78,7 @@ aiopylgtv==0.3.3
|
|||||||
aioswitcher==2019.4.26
|
aioswitcher==2019.4.26
|
||||||
|
|
||||||
# homeassistant.components.unifi
|
# homeassistant.components.unifi
|
||||||
aiounifi==12
|
aiounifi==13
|
||||||
|
|
||||||
# homeassistant.components.wwlln
|
# homeassistant.components.wwlln
|
||||||
aiowwlln==2.0.2
|
aiowwlln==2.0.2
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
import aiounifi
|
import aiounifi
|
||||||
from asynctest import patch
|
from asynctest import patch
|
||||||
|
|
||||||
|
from homeassistant import data_entry_flow
|
||||||
from homeassistant.components import unifi
|
from homeassistant.components import unifi
|
||||||
from homeassistant.components.unifi import config_flow
|
from homeassistant.components.unifi import config_flow
|
||||||
from homeassistant.components.unifi.const import CONF_CONTROLLER, CONF_SITE_ID
|
from homeassistant.components.unifi.const import CONF_CONTROLLER, CONF_SITE_ID
|
||||||
@ -13,8 +14,12 @@ from homeassistant.const import (
|
|||||||
CONF_VERIFY_SSL,
|
CONF_VERIFY_SSL,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from .test_controller import setup_unifi_integration
|
||||||
|
|
||||||
from tests.common import MockConfigEntry
|
from tests.common import MockConfigEntry
|
||||||
|
|
||||||
|
WLANS = [{"name": "SSID 1"}, {"name": "SSID 2"}]
|
||||||
|
|
||||||
|
|
||||||
async def test_flow_works(hass, aioclient_mock, mock_discovery):
|
async def test_flow_works(hass, aioclient_mock, mock_discovery):
|
||||||
"""Test config flow."""
|
"""Test config flow."""
|
||||||
@ -236,36 +241,39 @@ async def test_flow_fails_unknown_problem(hass, aioclient_mock):
|
|||||||
|
|
||||||
async def test_option_flow(hass):
|
async def test_option_flow(hass):
|
||||||
"""Test config flow options."""
|
"""Test config flow options."""
|
||||||
entry = MockConfigEntry(domain=config_flow.DOMAIN, data={}, options=None)
|
controller = await setup_unifi_integration(hass, wlans_response=WLANS)
|
||||||
hass.config_entries._entries.append(entry)
|
|
||||||
|
|
||||||
flow = await hass.config_entries.options.async_create_flow(
|
result = await hass.config_entries.options.async_init(
|
||||||
entry.entry_id, context={"source": "test"}, data=None
|
controller.config_entry.entry_id
|
||||||
)
|
)
|
||||||
|
|
||||||
result = await flow.async_step_init()
|
assert result["type"] == data_entry_flow.RESULT_TYPE_FORM
|
||||||
assert result["type"] == "form"
|
|
||||||
assert result["step_id"] == "device_tracker"
|
assert result["step_id"] == "device_tracker"
|
||||||
|
|
||||||
result = await flow.async_step_device_tracker(
|
result = await hass.config_entries.options.async_configure(
|
||||||
|
result["flow_id"],
|
||||||
user_input={
|
user_input={
|
||||||
config_flow.CONF_TRACK_CLIENTS: False,
|
config_flow.CONF_TRACK_CLIENTS: False,
|
||||||
config_flow.CONF_TRACK_WIRED_CLIENTS: False,
|
config_flow.CONF_TRACK_WIRED_CLIENTS: False,
|
||||||
config_flow.CONF_TRACK_DEVICES: False,
|
config_flow.CONF_TRACK_DEVICES: False,
|
||||||
|
config_flow.CONF_SSID_FILTER: ["SSID 1"],
|
||||||
config_flow.CONF_DETECTION_TIME: 100,
|
config_flow.CONF_DETECTION_TIME: 100,
|
||||||
}
|
},
|
||||||
)
|
)
|
||||||
assert result["type"] == "form"
|
|
||||||
|
assert result["type"] == data_entry_flow.RESULT_TYPE_FORM
|
||||||
assert result["step_id"] == "statistics_sensors"
|
assert result["step_id"] == "statistics_sensors"
|
||||||
|
|
||||||
result = await flow.async_step_statistics_sensors(
|
result = await hass.config_entries.options.async_configure(
|
||||||
user_input={config_flow.CONF_ALLOW_BANDWIDTH_SENSORS: True}
|
result["flow_id"], user_input={config_flow.CONF_ALLOW_BANDWIDTH_SENSORS: True}
|
||||||
)
|
)
|
||||||
assert result["type"] == "create_entry"
|
|
||||||
|
assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY
|
||||||
assert result["data"] == {
|
assert result["data"] == {
|
||||||
config_flow.CONF_TRACK_CLIENTS: False,
|
config_flow.CONF_TRACK_CLIENTS: False,
|
||||||
config_flow.CONF_TRACK_WIRED_CLIENTS: False,
|
config_flow.CONF_TRACK_WIRED_CLIENTS: False,
|
||||||
config_flow.CONF_TRACK_DEVICES: False,
|
config_flow.CONF_TRACK_DEVICES: False,
|
||||||
config_flow.CONF_DETECTION_TIME: 100,
|
config_flow.CONF_DETECTION_TIME: 100,
|
||||||
|
config_flow.CONF_SSID_FILTER: ["SSID 1"],
|
||||||
config_flow.CONF_ALLOW_BANDWIDTH_SENSORS: True,
|
config_flow.CONF_ALLOW_BANDWIDTH_SENSORS: True,
|
||||||
}
|
}
|
||||||
|
@ -63,6 +63,7 @@ async def setup_unifi_integration(
|
|||||||
clients_response=None,
|
clients_response=None,
|
||||||
devices_response=None,
|
devices_response=None,
|
||||||
clients_all_response=None,
|
clients_all_response=None,
|
||||||
|
wlans_response=None,
|
||||||
known_wireless_clients=None,
|
known_wireless_clients=None,
|
||||||
controllers=None,
|
controllers=None,
|
||||||
):
|
):
|
||||||
@ -98,6 +99,10 @@ async def setup_unifi_integration(
|
|||||||
if clients_all_response:
|
if clients_all_response:
|
||||||
mock_client_all_responses.append(clients_all_response)
|
mock_client_all_responses.append(clients_all_response)
|
||||||
|
|
||||||
|
mock_wlans_responses = deque()
|
||||||
|
if wlans_response:
|
||||||
|
mock_wlans_responses.append(wlans_response)
|
||||||
|
|
||||||
mock_requests = []
|
mock_requests = []
|
||||||
|
|
||||||
async def mock_request(self, method, path, json=None):
|
async def mock_request(self, method, path, json=None):
|
||||||
@ -109,6 +114,8 @@ async def setup_unifi_integration(
|
|||||||
return mock_device_responses.popleft()
|
return mock_device_responses.popleft()
|
||||||
if path == "s/{site}/rest/user" and mock_client_all_responses:
|
if path == "s/{site}/rest/user" and mock_client_all_responses:
|
||||||
return mock_client_all_responses.popleft()
|
return mock_client_all_responses.popleft()
|
||||||
|
if path == "s/{site}/rest/wlanconf" and mock_wlans_responses:
|
||||||
|
return mock_wlans_responses.popleft()
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
# "aiounifi.Controller.start_websocket", return_value=True
|
# "aiounifi.Controller.start_websocket", return_value=True
|
||||||
@ -128,6 +135,7 @@ async def setup_unifi_integration(
|
|||||||
controller.mock_client_responses = mock_client_responses
|
controller.mock_client_responses = mock_client_responses
|
||||||
controller.mock_device_responses = mock_device_responses
|
controller.mock_device_responses = mock_device_responses
|
||||||
controller.mock_client_all_responses = mock_client_all_responses
|
controller.mock_client_all_responses = mock_client_all_responses
|
||||||
|
controller.mock_wlans_responses = mock_wlans_responses
|
||||||
controller.mock_requests = mock_requests
|
controller.mock_requests = mock_requests
|
||||||
|
|
||||||
return controller
|
return controller
|
||||||
|
@ -54,7 +54,7 @@ async def test_no_clients(hass):
|
|||||||
hass, options={unifi.const.CONF_ALLOW_BANDWIDTH_SENSORS: True},
|
hass, options={unifi.const.CONF_ALLOW_BANDWIDTH_SENSORS: True},
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(controller.mock_requests) == 3
|
assert len(controller.mock_requests) == 4
|
||||||
assert len(hass.states.async_all()) == 1
|
assert len(hass.states.async_all()) == 1
|
||||||
|
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ async def test_sensors(hass):
|
|||||||
clients_response=CLIENTS,
|
clients_response=CLIENTS,
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(controller.mock_requests) == 3
|
assert len(controller.mock_requests) == 4
|
||||||
assert len(hass.states.async_all()) == 5
|
assert len(hass.states.async_all()) == 5
|
||||||
|
|
||||||
wired_client_rx = hass.states.get("sensor.wired_client_name_rx")
|
wired_client_rx = hass.states.get("sensor.wired_client_name_rx")
|
||||||
|
@ -207,7 +207,7 @@ async def test_no_clients(hass):
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(controller.mock_requests) == 3
|
assert len(controller.mock_requests) == 4
|
||||||
assert len(hass.states.async_all()) == 1
|
assert len(hass.states.async_all()) == 1
|
||||||
|
|
||||||
|
|
||||||
@ -223,7 +223,7 @@ async def test_controller_not_client(hass):
|
|||||||
devices_response=[DEVICE_1],
|
devices_response=[DEVICE_1],
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(controller.mock_requests) == 3
|
assert len(controller.mock_requests) == 4
|
||||||
assert len(hass.states.async_all()) == 1
|
assert len(hass.states.async_all()) == 1
|
||||||
cloudkey = hass.states.get("switch.cloud_key")
|
cloudkey = hass.states.get("switch.cloud_key")
|
||||||
assert cloudkey is None
|
assert cloudkey is None
|
||||||
@ -244,7 +244,7 @@ async def test_not_admin(hass):
|
|||||||
devices_response=[DEVICE_1],
|
devices_response=[DEVICE_1],
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(controller.mock_requests) == 3
|
assert len(controller.mock_requests) == 4
|
||||||
assert len(hass.states.async_all()) == 1
|
assert len(hass.states.async_all()) == 1
|
||||||
|
|
||||||
|
|
||||||
@ -262,7 +262,7 @@ async def test_switches(hass):
|
|||||||
clients_all_response=[BLOCKED, UNBLOCKED, CLIENT_1],
|
clients_all_response=[BLOCKED, UNBLOCKED, CLIENT_1],
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(controller.mock_requests) == 3
|
assert len(controller.mock_requests) == 4
|
||||||
assert len(hass.states.async_all()) == 4
|
assert len(hass.states.async_all()) == 4
|
||||||
|
|
||||||
switch_1 = hass.states.get("switch.poe_client_1")
|
switch_1 = hass.states.get("switch.poe_client_1")
|
||||||
@ -297,7 +297,7 @@ async def test_new_client_discovered_on_block_control(hass):
|
|||||||
clients_all_response=[BLOCKED],
|
clients_all_response=[BLOCKED],
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(controller.mock_requests) == 3
|
assert len(controller.mock_requests) == 4
|
||||||
assert len(hass.states.async_all()) == 2
|
assert len(hass.states.async_all()) == 2
|
||||||
|
|
||||||
controller.api.websocket._data = {
|
controller.api.websocket._data = {
|
||||||
@ -310,9 +310,9 @@ async def test_new_client_discovered_on_block_control(hass):
|
|||||||
await hass.services.async_call(
|
await hass.services.async_call(
|
||||||
"switch", "turn_off", {"entity_id": "switch.block_client_1"}, blocking=True
|
"switch", "turn_off", {"entity_id": "switch.block_client_1"}, blocking=True
|
||||||
)
|
)
|
||||||
assert len(controller.mock_requests) == 4
|
assert len(controller.mock_requests) == 5
|
||||||
assert len(hass.states.async_all()) == 2
|
assert len(hass.states.async_all()) == 2
|
||||||
assert controller.mock_requests[3] == {
|
assert controller.mock_requests[4] == {
|
||||||
"json": {"mac": "00:00:00:00:01:01", "cmd": "block-sta"},
|
"json": {"mac": "00:00:00:00:01:01", "cmd": "block-sta"},
|
||||||
"method": "post",
|
"method": "post",
|
||||||
"path": "s/{site}/cmd/stamgr/",
|
"path": "s/{site}/cmd/stamgr/",
|
||||||
@ -321,8 +321,8 @@ async def test_new_client_discovered_on_block_control(hass):
|
|||||||
await hass.services.async_call(
|
await hass.services.async_call(
|
||||||
"switch", "turn_on", {"entity_id": "switch.block_client_1"}, blocking=True
|
"switch", "turn_on", {"entity_id": "switch.block_client_1"}, blocking=True
|
||||||
)
|
)
|
||||||
assert len(controller.mock_requests) == 5
|
assert len(controller.mock_requests) == 6
|
||||||
assert controller.mock_requests[4] == {
|
assert controller.mock_requests[5] == {
|
||||||
"json": {"mac": "00:00:00:00:01:01", "cmd": "unblock-sta"},
|
"json": {"mac": "00:00:00:00:01:01", "cmd": "unblock-sta"},
|
||||||
"method": "post",
|
"method": "post",
|
||||||
"path": "s/{site}/cmd/stamgr/",
|
"path": "s/{site}/cmd/stamgr/",
|
||||||
@ -341,7 +341,7 @@ async def test_new_client_discovered_on_poe_control(hass):
|
|||||||
devices_response=[DEVICE_1],
|
devices_response=[DEVICE_1],
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(controller.mock_requests) == 3
|
assert len(controller.mock_requests) == 4
|
||||||
assert len(hass.states.async_all()) == 2
|
assert len(hass.states.async_all()) == 2
|
||||||
|
|
||||||
controller.api.websocket._data = {
|
controller.api.websocket._data = {
|
||||||
@ -354,9 +354,9 @@ async def test_new_client_discovered_on_poe_control(hass):
|
|||||||
await hass.services.async_call(
|
await hass.services.async_call(
|
||||||
"switch", "turn_off", {"entity_id": "switch.poe_client_1"}, blocking=True
|
"switch", "turn_off", {"entity_id": "switch.poe_client_1"}, blocking=True
|
||||||
)
|
)
|
||||||
assert len(controller.mock_requests) == 4
|
assert len(controller.mock_requests) == 5
|
||||||
assert len(hass.states.async_all()) == 3
|
assert len(hass.states.async_all()) == 3
|
||||||
assert controller.mock_requests[3] == {
|
assert controller.mock_requests[4] == {
|
||||||
"json": {
|
"json": {
|
||||||
"port_overrides": [{"port_idx": 1, "portconf_id": "1a1", "poe_mode": "off"}]
|
"port_overrides": [{"port_idx": 1, "portconf_id": "1a1", "poe_mode": "off"}]
|
||||||
},
|
},
|
||||||
@ -367,8 +367,8 @@ async def test_new_client_discovered_on_poe_control(hass):
|
|||||||
await hass.services.async_call(
|
await hass.services.async_call(
|
||||||
"switch", "turn_on", {"entity_id": "switch.poe_client_1"}, blocking=True
|
"switch", "turn_on", {"entity_id": "switch.poe_client_1"}, blocking=True
|
||||||
)
|
)
|
||||||
assert len(controller.mock_requests) == 5
|
assert len(controller.mock_requests) == 6
|
||||||
assert controller.mock_requests[3] == {
|
assert controller.mock_requests[4] == {
|
||||||
"json": {
|
"json": {
|
||||||
"port_overrides": [
|
"port_overrides": [
|
||||||
{"port_idx": 1, "portconf_id": "1a1", "poe_mode": "auto"}
|
{"port_idx": 1, "portconf_id": "1a1", "poe_mode": "auto"}
|
||||||
@ -393,7 +393,7 @@ async def test_ignore_multiple_poe_clients_on_same_port(hass):
|
|||||||
hass, clients_response=POE_SWITCH_CLIENTS, devices_response=[DEVICE_1],
|
hass, clients_response=POE_SWITCH_CLIENTS, devices_response=[DEVICE_1],
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(controller.mock_requests) == 3
|
assert len(controller.mock_requests) == 4
|
||||||
assert len(hass.states.async_all()) == 4
|
assert len(hass.states.async_all()) == 4
|
||||||
|
|
||||||
switch_1 = hass.states.get("switch.poe_client_1")
|
switch_1 = hass.states.get("switch.poe_client_1")
|
||||||
@ -444,7 +444,7 @@ async def test_restoring_client(hass):
|
|||||||
clients_all_response=[CLIENT_1],
|
clients_all_response=[CLIENT_1],
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(controller.mock_requests) == 3
|
assert len(controller.mock_requests) == 4
|
||||||
assert len(hass.states.async_all()) == 3
|
assert len(hass.states.async_all()) == 3
|
||||||
|
|
||||||
device_1 = hass.states.get("switch.client_1")
|
device_1 = hass.states.get("switch.client_1")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user