"""Tests for the ibeacon integration.""" from typing import Any from bleak.backends.device import BLEDevice from homeassistant.helpers.service_info.bluetooth import BluetoothServiceInfo BLUECHARM_BLE_DEVICE = BLEDevice( address="61DE521B-F0BF-9F44-64D4-75BBE1738105", name="BlueCharm_177999", ) BLUECHARM_BEACON_SERVICE_INFO = BluetoothServiceInfo( name="BlueCharm_177999", address="61DE521B-F0BF-9F44-64D4-75BBE1738105", rssi=-63, service_data={}, manufacturer_data={76: b"\x02\x15BlueCharmBeacons\x0e\xfe\x13U\xc5"}, service_uuids=[], source="local", ) BLUECHARM_BEACON_SERVICE_INFO_2 = BluetoothServiceInfo( name="BlueCharm_177999", address="61DE521B-F0BF-9F44-64D4-75BBE1738105", rssi=-53, manufacturer_data={76: b"\x02\x15BlueCharmBeacons\x0e\xfe\x13U\xc5"}, service_data={ "00002080-0000-1000-8000-00805f9b34fb": b"j\x0c\x0e\xfe\x13U", "0000feaa-0000-1000-8000-00805f9b34fb": b" \x00\x0c\x00\x1c\x00\x00\x00\x06h\x00\x008\x10", }, service_uuids=["0000feaa-0000-1000-8000-00805f9b34fb"], source="local", ) BLUECHARM_BEACON_SERVICE_INFO_DBUS = BluetoothServiceInfo( name="BlueCharm_177999", address="AA:BB:CC:DD:EE:FF", rssi=-63, service_data={}, manufacturer_data={76: b"\x02\x15BlueCharmBeacons\x0e\xfe\x13U\xc5"}, service_uuids=[], source="local", ) NO_NAME_BEACON_SERVICE_INFO = BluetoothServiceInfo( name="61DE521B-F0BF-9F44-64D4-75BBE1738105", address="61DE521B-F0BF-9F44-64D4-75BBE1738105", rssi=-53, manufacturer_data={76: b"\x02\x15NoNamearmBeacons\x0e\xfe\x13U\xc5"}, service_data={ "00002080-0000-1000-8000-00805f9b34fb": b"j\x0c\x0e\xfe\x13U", "0000feaa-0000-1000-8000-00805f9b34fb": b" \x00\x0c\x00\x1c\x00\x00\x00\x06h\x00\x008\x10", }, service_uuids=["0000feaa-0000-1000-8000-00805f9b34fb"], source="local", ) BEACON_RANDOM_ADDRESS_SERVICE_INFO = BluetoothServiceInfo( name="RandomAddress_1234", address="AA:BB:CC:DD:EE:00", rssi=-63, service_data={}, manufacturer_data={76: b"\x02\x15RandCharmBeacons\x0e\xfe\x13U\xc5"}, service_uuids=[], source="local", ) TESLA_TRANSIENT = BluetoothServiceInfo( address="CC:CC:CC:CC:CC:CC", rssi=-60, name="S6da7c9389bd5452cC", manufacturer_data={ 76: b"\x02\x15t'\x8b\xda\xb6DE \x8f\x0cr\x0e\xaf\x05\x995\x00\x00[$\xc5" }, service_data={}, service_uuids=[], source="hci0", ) TESLA_TRANSIENT_BLE_DEVICE = BLEDevice( address="CC:CC:CC:CC:CC:CC", name="S6da7c9389bd5452cC", ) FEASY_BEACON_BLE_DEVICE = BLEDevice( address="AA:BB:CC:DD:EE:FF", name="FSC-BP108", ) FEASY_BEACON_SERVICE_INFO_1 = BluetoothServiceInfo( name="FSC-BP108", address="AA:BB:CC:DD:EE:FF", rssi=-63, manufacturer_data={ 76: b"\x02\x15\xfd\xa5\x06\x93\xa4\xe2O\xb1\xaf\xcf\xc6\xeb\x07dx%'Qe\xc1\xfd" }, service_data={ "0000feaa-0000-1000-8000-00805f9b34fb": b' \x00\x0c\x86\x80\x00\x00\x00\x93f\x0b\x7f\x93"', "0000fff0-0000-1000-8000-00805f9b34fb": b"'\x02\x17\x92\xdc\r0\x0e \xbad", }, service_uuids=[ "0000feaa-0000-1000-8000-00805f9b34fb", "0000fef5-0000-1000-8000-00805f9b34fb", ], source="local", ) FEASY_BEACON_SERVICE_INFO_2 = BluetoothServiceInfo( name="FSC-BP108", address="AA:BB:CC:DD:EE:FF", rssi=-63, manufacturer_data={ 76: b"\x02\x15\xd5F\xdf\x97GWG\xef\xbe\t>-\xcb\xdd\x0cw\xed\xd1;\xd2\xb5" }, service_data={ "0000feaa-0000-1000-8000-00805f9b34fb": b' \x00\x0c\x86\x80\x00\x00\x00\x93f\x0b\x7f\x93"', "0000fff0-0000-1000-8000-00805f9b34fb": b"'\x02\x17\x92\xdc\r0\x0e \xbad", }, service_uuids=[ "0000feaa-0000-1000-8000-00805f9b34fb", "0000fef5-0000-1000-8000-00805f9b34fb", ], source="local", ) def bluetooth_service_info_replace( info: BluetoothServiceInfo, **kwargs: Any ) -> BluetoothServiceInfo: """Replace attributes of a BluetoothServiceInfoBleak.""" return BluetoothServiceInfo( address=kwargs.get("address", info.address), name=kwargs.get("name", info.name), rssi=kwargs.get("rssi", info.rssi), manufacturer_data=kwargs.get("manufacturer_data", info.manufacturer_data), service_data=kwargs.get("service_data", info.service_data), service_uuids=kwargs.get("service_uuids", info.service_uuids), source=kwargs.get("source", info.source), )