Files
homeassistant-core/tests/components/switchbot/__init__.py
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

208 lines
6.6 KiB
Python
Raw Normal View History

2021-09-18 21:25:05 +02:00
"""Tests for the switchbot integration."""
2021-09-18 21:25:05 +02:00
from unittest.mock import patch
2022-07-24 11:38:45 -05:00
from homeassistant.components.bluetooth import BluetoothServiceInfoBleak
2022-08-10 09:02:08 -10:00
from homeassistant.const import CONF_ADDRESS
2021-09-18 21:25:05 +02:00
from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry
2023-03-20 01:06:15 -10:00
from tests.components.bluetooth import generate_advertisement_data, generate_ble_device
2021-09-18 21:25:05 +02:00
DOMAIN = "switchbot"
ENTRY_CONFIG = {
2022-07-24 11:38:45 -05:00
CONF_ADDRESS: "e7:89:43:99:99:99",
2021-09-18 21:25:05 +02:00
}
USER_INPUT = {
2022-07-24 11:38:45 -05:00
CONF_ADDRESS: "aa:bb:cc:dd:ee:ff",
2022-07-22 17:03:02 +01:00
}
2021-09-18 21:25:05 +02:00
USER_INPUT_UNSUPPORTED_DEVICE = {
2022-07-24 11:38:45 -05:00
CONF_ADDRESS: "test",
2021-09-18 21:25:05 +02:00
}
USER_INPUT_INVALID = {
2022-07-24 11:38:45 -05:00
CONF_ADDRESS: "invalid-mac",
2021-09-18 21:25:05 +02:00
}
2022-03-31 11:12:02 -07:00
def patch_async_setup_entry(return_value=True):
"""Patch async setup entry to return True."""
2021-09-18 21:25:05 +02:00
return patch(
"homeassistant.components.switchbot.async_setup_entry",
return_value=return_value,
)
async def init_integration(hass: HomeAssistant) -> MockConfigEntry:
2021-09-18 21:25:05 +02:00
"""Set up the Switchbot integration in Home Assistant."""
entry = MockConfigEntry(domain=DOMAIN, data=ENTRY_CONFIG)
2021-09-18 21:25:05 +02:00
entry.add_to_hass(hass)
await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done()
2021-09-18 21:25:05 +02:00
return entry
2022-07-24 11:38:45 -05:00
WOHAND_SERVICE_INFO = BluetoothServiceInfoBleak(
name="WoHand",
manufacturer_data={89: b"\xfd`0U\x92W"},
service_data={"00000d00-0000-1000-8000-00805f9b34fb": b"H\x90\xd9"},
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
address="AA:BB:CC:DD:EE:FF",
2022-07-24 11:38:45 -05:00
rssi=-60,
source="local",
2022-10-15 07:57:23 -10:00
advertisement=generate_advertisement_data(
2022-07-24 11:38:45 -05:00
local_name="WoHand",
manufacturer_data={89: b"\xfd`0U\x92W"},
service_data={"00000d00-0000-1000-8000-00805f9b34fb": b"H\x90\xd9"},
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
),
2023-03-20 01:06:15 -10:00
device=generate_ble_device("AA:BB:CC:DD:EE:FF", "WoHand"),
time=0,
connectable=True,
2024-05-03 05:15:51 -05:00
tx_power=-127,
)
WOHAND_SERVICE_INFO_NOT_CONNECTABLE = BluetoothServiceInfoBleak(
name="WoHand",
manufacturer_data={89: b"\xfd`0U\x92W"},
service_data={"00000d00-0000-1000-8000-00805f9b34fb": b"H\x90\xd9"},
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
address="aa:bb:cc:dd:ee:ff",
rssi=-60,
source="local",
2022-10-15 07:57:23 -10:00
advertisement=generate_advertisement_data(
local_name="WoHand",
manufacturer_data={89: b"\xfd`0U\x92W"},
service_data={"00000d00-0000-1000-8000-00805f9b34fb": b"H\x90\xd9"},
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
),
2023-03-20 01:06:15 -10:00
device=generate_ble_device("aa:bb:cc:dd:ee:ff", "WoHand"),
time=0,
connectable=False,
2024-05-03 05:15:51 -05:00
tx_power=-127,
2022-07-24 11:38:45 -05:00
)
2022-08-10 09:02:08 -10:00
WOHAND_ENCRYPTED_SERVICE_INFO = BluetoothServiceInfoBleak(
name="WoHand",
manufacturer_data={89: b"\xd8.\xad\xcd\r\x85"},
service_data={"00000d00-0000-1000-8000-00805f9b34fb": b"\xc8\x10\xcf"},
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
address="798A8547-2A3D-C609-55FF-73FA824B923B",
rssi=-60,
source="local",
2022-10-15 07:57:23 -10:00
advertisement=generate_advertisement_data(
2022-08-10 09:02:08 -10:00
local_name="WoHand",
manufacturer_data={89: b"\xd8.\xad\xcd\r\x85"},
service_data={"00000d00-0000-1000-8000-00805f9b34fb": b"\xc8\x10\xcf"},
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
),
2023-03-20 01:06:15 -10:00
device=generate_ble_device("798A8547-2A3D-C609-55FF-73FA824B923B", "WoHand"),
time=0,
connectable=True,
2024-05-03 05:15:51 -05:00
tx_power=-127,
2022-08-10 09:02:08 -10:00
)
WOHAND_SERVICE_ALT_ADDRESS_INFO = BluetoothServiceInfoBleak(
name="WoHand",
manufacturer_data={89: b"\xfd`0U\x92W"},
service_data={"00000d00-0000-1000-8000-00805f9b34fb": b"H\x90\xd9"},
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
address="cc:cc:cc:cc:cc:cc",
rssi=-60,
source="local",
2022-10-15 07:57:23 -10:00
advertisement=generate_advertisement_data(
2022-08-10 09:02:08 -10:00
local_name="WoHand",
manufacturer_data={89: b"\xfd`0U\x92W"},
service_data={"00000d00-0000-1000-8000-00805f9b34fb": b"H\x90\xd9"},
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
),
2023-03-20 01:06:15 -10:00
device=generate_ble_device("aa:bb:cc:dd:ee:ff", "WoHand"),
time=0,
connectable=True,
2024-05-03 05:15:51 -05:00
tx_power=-127,
2022-08-10 09:02:08 -10:00
)
2022-07-24 11:38:45 -05:00
WOCURTAIN_SERVICE_INFO = BluetoothServiceInfoBleak(
name="WoCurtain",
address="aa:bb:cc:dd:ee:ff",
manufacturer_data={89: b"\xc1\xc7'}U\xab"},
service_data={"00000d00-0000-1000-8000-00805f9b34fb": b"c\xd0Y\x00\x11\x04"},
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
rssi=-60,
source="local",
2022-10-15 07:57:23 -10:00
advertisement=generate_advertisement_data(
2022-07-24 11:38:45 -05:00
local_name="WoCurtain",
manufacturer_data={89: b"\xc1\xc7'}U\xab"},
service_data={"00000d00-0000-1000-8000-00805f9b34fb": b"c\xd0Y\x00\x11\x04"},
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
),
2023-03-20 01:06:15 -10:00
device=generate_ble_device("aa:bb:cc:dd:ee:ff", "WoCurtain"),
time=0,
connectable=True,
2024-05-03 05:15:51 -05:00
tx_power=-127,
2022-07-24 11:38:45 -05:00
)
WOSENSORTH_SERVICE_INFO = BluetoothServiceInfoBleak(
name="WoSensorTH",
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
address="aa:bb:cc:dd:ee:ff",
manufacturer_data={2409: b"\xda,\x1e\xb1\x86Au\x03\x00\x96\xac"},
service_data={"0000fd3d-0000-1000-8000-00805f9b34fb": b"T\x00d\x00\x96\xac"},
rssi=-60,
source="local",
2022-10-15 07:57:23 -10:00
advertisement=generate_advertisement_data(
2022-07-24 11:38:45 -05:00
manufacturer_data={2409: b"\xda,\x1e\xb1\x86Au\x03\x00\x96\xac"},
service_data={"0000fd3d-0000-1000-8000-00805f9b34fb": b"T\x00d\x00\x96\xac"},
),
2023-03-20 01:06:15 -10:00
device=generate_ble_device("aa:bb:cc:dd:ee:ff", "WoSensorTH"),
time=0,
connectable=False,
2024-05-03 05:15:51 -05:00
tx_power=-127,
2022-07-24 11:38:45 -05:00
)
2022-12-28 13:16:00 +09:00
WOLOCK_SERVICE_INFO = BluetoothServiceInfoBleak(
name="WoLock",
manufacturer_data={2409: b"\xf1\t\x9fE\x1a]\xda\x83\x00 "},
service_data={"0000fd3d-0000-1000-8000-00805f9b34fb": b"o\x80d"},
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
address="aa:bb:cc:dd:ee:ff",
rssi=-60,
source="local",
advertisement=generate_advertisement_data(
local_name="WoLock",
manufacturer_data={2409: b"\xf1\t\x9fE\x1a]\xda\x83\x00 "},
service_data={"0000fd3d-0000-1000-8000-00805f9b34fb": b"o\x80d"},
2022-12-28 13:16:00 +09:00
service_uuids=["cba20d00-224d-11e6-9fb8-0002a5d5c51b"],
),
2023-03-20 01:06:15 -10:00
device=generate_ble_device("aa:bb:cc:dd:ee:ff", "WoLock"),
2022-12-28 13:16:00 +09:00
time=0,
connectable=True,
2024-05-03 05:15:51 -05:00
tx_power=-127,
2022-12-28 13:16:00 +09:00
)
2022-07-24 11:38:45 -05:00
NOT_SWITCHBOT_INFO = BluetoothServiceInfoBleak(
name="unknown",
service_uuids=[],
address="aa:bb:cc:dd:ee:ff",
manufacturer_data={},
service_data={},
rssi=-60,
source="local",
2022-10-15 07:57:23 -10:00
advertisement=generate_advertisement_data(
2022-07-24 11:38:45 -05:00
manufacturer_data={},
service_data={},
),
2023-03-20 01:06:15 -10:00
device=generate_ble_device("aa:bb:cc:dd:ee:ff", "unknown"),
time=0,
connectable=True,
2024-05-03 05:15:51 -05:00
tx_power=-127,
2022-07-24 11:38:45 -05:00
)