async def test_pairing(): accessories = Accessories.from_file("tests/fixtures/koogeek_ls1.json") controller = FakeController() device = controller.add_device(accessories) discovery = await controller.find_ip_by_device_id(device.device_id) finish_pairing = await discovery.start_pairing("alias") pairing = await finish_pairing("111-22-333") chars_and_services = await pairing.list_accessories_and_characteristics() assert isinstance(chars_and_services, list)
async def test_put_failure(): accessories = Accessories.from_file("tests/fixtures/koogeek_ls1.json") char = accessories.aid(1).characteristics.iid(10) char.status = HapStatusCode.UNABLE_TO_COMMUNICATE controller = FakeController() device = controller.add_device(accessories) discovery = await controller.find_ip_by_device_id(device.description.id) finish_pairing = await discovery.start_pairing("alias") pairing = await finish_pairing("111-22-333") chars = await pairing.put_characteristics([(1, 10, 1)]) assert chars == {(1, 10): {"status": -70402}}
async def test_update_named_service_events_manual_accessory_auto_requires(): accessories = Accessories() accessory = Accessory.create_with_info( name="TestLight", manufacturer="Test Mfr", model="Test Bulb", serial_number="1234", firmware_revision="1.1", ) service = accessory.add_service(ServicesTypes.LIGHTBULB, name="Light Strip", add_required=True) on_char = service[CharacteristicsTypes.ON] accessories.add_accessory(accessory) controller = FakeController() pairing = await controller.add_paired_device(accessories, "alias") callback = mock.Mock() await pairing.subscribe([(accessory.aid, on_char.iid)]) pairing.dispatcher_connect(callback) # Simulate that the state was changed on the device itself. pairing.testing.update_named_service("Light Strip", {CharacteristicsTypes.ON: True}) assert callback.call_args_list == [ mock.call({(accessory.aid, on_char.iid): { "value": 1 }}) ]
def controller(hass): """Replace aiohomekit.Controller with an instance of aiohomekit.testing.FakeController.""" instance = FakeController() with unittest.mock.patch( "homeassistant.components.homekit_controller.utils.Controller", return_value=instance, ): yield instance
async def test_get_and_set(): accessories = Accessories.from_file("tests/fixtures/koogeek_ls1.json") controller = FakeController() device = controller.add_device(accessories) discovery = await controller.find_ip_by_device_id(device.device_id) finish_pairing = await discovery.start_pairing("alias") pairing = await finish_pairing("111-22-333") chars = await pairing.get_characteristics([(1, 10)]) assert chars == {(1, 10): {"value": 0}} chars = await pairing.put_characteristics([(1, 10, 1)]) assert chars == {} chars = await pairing.get_characteristics([(1, 10)]) assert chars == {(1, 10): {"value": 1}}
async def setup_platform(hass): """Load the platform but with a fake Controller API.""" config = {"discovery": {}} with mock.patch("aiohomekit.Controller") as controller: fake_controller = controller.return_value = FakeController() await async_setup_component(hass, DOMAIN, config) return fake_controller
async def test_update_aid_iid_events(): accessories = Accessories.from_file("tests/fixtures/koogeek_ls1.json") controller = FakeController() pairing = await controller.add_paired_device(accessories, "alias") callback = mock.Mock() await pairing.subscribe([(1, 8)]) pairing.dispatcher_connect(callback) # Simulate that the state was changed on the device itself. pairing.testing.update_aid_iid([(1, 8, True)]) assert callback.call_args_list == [mock.call({(1, 8): {"value": 1}})]
async def test_events_are_filtered(): accessories = Accessories.from_file("tests/fixtures/koogeek_ls1.json") controller = FakeController() pairing = await controller.add_paired_device(accessories, "alias") callback = mock.Mock() await pairing.subscribe([(1, 10)]) pairing.dispatcher_connect(callback) # Simulate that the state was changed on the device itself. pairing.testing.update_named_service("Light Strip", {CharacteristicsTypes.ON: True}) assert callback.call_args_list == []
async def test_async_remove_entry(hass: HomeAssistant): """Test unpairing a component.""" helper = await setup_test_component(hass, create_motion_sensor_service) hkid = "00:00:00:00:00:00" with patch("aiohomekit.Controller") as controller_cls: # Setup a fake controller with 1 pairing controller = controller_cls.return_value = FakeController() await controller.add_paired_device([helper.accessory], hkid) assert len(controller.pairings) == 1 assert hkid in hass.data[ENTITY_MAP].storage_data # Remove it via config entry and number of pairings should go down await helper.config_entry.async_remove(hass) assert len(controller.pairings) == 0 assert hkid not in hass.data[ENTITY_MAP].storage_data
def controller(hass): """Replace aiohomekit.Controller with an instance of aiohomekit.testing.FakeController.""" instance = FakeController() with tests.async_mock.patch("aiohomekit.Controller", return_value=instance): yield instance
def controller(opp): """Replace aiohomekit.Controller with an instance of aiohomekit.testing.FakeController.""" instance = FakeController() with unittest.mock.patch("aiohomekit.Controller", return_value=instance): yield instance
async def test_camera(): accessories = Accessories.from_file("tests/fixtures/koogeek_ls1.json") controller = FakeController() pairing = await controller.add_paired_device(accessories, "alias") result = await pairing.image(1, 640, 480) assert len(result) > 0