def test_xiaomi_quick_init(raw_device): """Test quick init.""" class XiaomiQuirk(XiaomiQuickInitDevice): signature = { NODE_DESCRIPTOR: XIAOMI_NODE_DESC, ENDPOINTS: { 1: { PROFILE_ID: 0x0260, DEVICE_TYPE: 0x0000, INPUT_CLUSTERS: [], OUTPUT_CLUSTERS: [], } }, MANUFACTURER: LUMI, MODEL: "lumi.sensor_sm0ke", } assert (handle_quick_init( raw_device, 0x0260, 0, 1, 1, b"\x18\x00\n\x05\x00B\x11lumi.sensor_sm0ke\x01\x00 \x01", ) is True) assert raw_device.cancel_initialization.call_count == 1 assert raw_device.application.device_initialized.call_count == 1
def test_xiaomi_quick_init_wrong_cluster_or_message(raw_device, cluster, message): """Test quick init when message is received on wrong cluster or wrong endpoint.""" assert handle_quick_init(raw_device, 0x0260, cluster, 1, 1, message) is None assert raw_device.cancel_initialization.call_count == 0 assert raw_device.application.device_initialized.call_count == 0
def test_xiaomi_quick_init_wrong_ep(raw_device, ep_id, cluster, message): """Test quick init when message is received on wrong endpoint.""" with mock.patch( "zigpy.zcl.foundation.ZCLHeader.deserialize") as hdr_deserialize: assert (handle_quick_init(raw_device, 0x0260, cluster, ep_id, ep_id, message) is None) assert hdr_deserialize.call_count == 0 assert raw_device.cancel_initialization.call_count == 0 assert raw_device.application.device_initialized.call_count == 0
def test_xiaomi_quick_init_wrong_signature(raw_device): """Test quick init for existing quirk with wrong signature for quick joining.""" class WrongSignature(XiaomiQuickInitDevice): signature = { MODEL: "lumi.sensor_sm0ke", } assert (handle_quick_init( raw_device, 0x0260, 0, 1, 1, b"\x18\x00\n\x05\x00B\x11lumi.sensor_sm0ke\x01\x00 \x01", ) is None) assert raw_device.cancel_initialization.call_count == 0 assert raw_device.application.device_initialized.call_count == 0
def test_xiaomi_quick_init_wrong_quirk_type(raw_device): """Test quick init for existing quirk which is not enabled for quick joining.""" class WrongDevice(XiaomiCustomDevice): signature = { MANUFACTURER: LUMI, MODEL: "lumi.sensor_smoke_2", } assert (handle_quick_init( raw_device, 0x0260, 0, 1, 1, b"\x18\x00\n\x05\x00B\x13lumi.sensor_smoke_2\x01\x00 \x01", ) is None) assert raw_device.cancel_initialization.call_count == 0 assert raw_device.application.device_initialized.call_count == 0