async def test_homekit_setup_advertise_ip(hass, hk_driver): """Test setup with given IP address to advertise.""" entry = MockConfigEntry( domain=DOMAIN, data={CONF_NAME: "mock_name", CONF_PORT: 12345}, source=SOURCE_IMPORT, ) homekit = HomeKit( hass, BRIDGE_NAME, DEFAULT_PORT, "0.0.0.0", {}, {}, None, "192.168.1.100", entry_id=entry.entry_id, ) zeroconf_instance = MagicMock() path = get_persist_fullpath_for_entry_id(hass, entry.entry_id) with patch( f"{PATH_HOMEKIT}.accessories.HomeDriver", return_value=hk_driver ) as mock_driver: await hass.async_add_executor_job(homekit.setup, zeroconf_instance) mock_driver.assert_called_with( hass, entry.entry_id, BRIDGE_NAME, address="0.0.0.0", port=DEFAULT_PORT, persist_file=path, advertised_address="192.168.1.100", zeroconf_instance=zeroconf_instance, )
async def test_homekit_setup_interface_choice(hass, hk_driver): """Test setup with interface choice of Default.""" entry = MockConfigEntry( domain=DOMAIN, data={CONF_NAME: "mock_name", CONF_PORT: 12345}, source=SOURCE_IMPORT, ) homekit = HomeKit( hass, BRIDGE_NAME, DEFAULT_PORT, "0.0.0.0", {}, {}, None, None, InterfaceChoice.Default, entry_id=entry.entry_id, ) path = get_persist_fullpath_for_entry_id(hass, entry.entry_id) with patch( f"{PATH_HOMEKIT}.accessories.HomeDriver", return_value=hk_driver ) as mock_driver: await hass.async_add_executor_job(homekit.setup) mock_driver.assert_called_with( hass, entry.entry_id, BRIDGE_NAME, address="0.0.0.0", port=DEFAULT_PORT, persist_file=path, advertised_address=None, interface_choice=InterfaceChoice.Default, )
async def test_homekit_setup(hass, hk_driver): """Test setup of bridge and driver.""" entry = MockConfigEntry( domain=DOMAIN, data={ CONF_NAME: "mock_name", CONF_PORT: 12345 }, source=SOURCE_IMPORT, ) homekit = HomeKit( hass, BRIDGE_NAME, DEFAULT_PORT, None, {}, {}, DEFAULT_SAFE_MODE, HOMEKIT_MODE_BRIDGE, advertise_ip=None, entry_id=entry.entry_id, ) hass.states.async_set("light.demo", "on") hass.states.async_set("light.demo2", "on") zeroconf_mock = MagicMock() with patch(f"{PATH_HOMEKIT}.accessories.HomeDriver", return_value=hk_driver) as mock_driver, patch( "homeassistant.util.get_local_ip") as mock_ip: mock_ip.return_value = IP_ADDRESS await hass.async_add_executor_job(homekit.setup, zeroconf_mock) path = get_persist_fullpath_for_entry_id(hass, entry.entry_id) mock_driver.assert_called_with( hass, entry.entry_id, BRIDGE_NAME, loop=hass.loop, address=IP_ADDRESS, port=DEFAULT_PORT, persist_file=path, advertised_address=None, zeroconf_instance=zeroconf_mock, ) assert homekit.driver.safe_mode is False # Test if stop listener is setup assert hass.bus.async_listeners().get(EVENT_HOMEASSISTANT_STOP) == 1
async def test_homekit_setup_ip_address(hass, hk_driver, mock_zeroconf): """Test setup with given IP address.""" entry = MockConfigEntry( domain=DOMAIN, data={ CONF_NAME: "mock_name", CONF_PORT: 12345 }, source=SOURCE_IMPORT, ) homekit = HomeKit( hass, BRIDGE_NAME, DEFAULT_PORT, "172.0.0.0", True, {}, {}, HOMEKIT_MODE_BRIDGE, None, entry_id=entry.entry_id, entry_title=entry.title, ) mock_zeroconf = MagicMock() path = get_persist_fullpath_for_entry_id(hass, entry.entry_id) with patch(f"{PATH_HOMEKIT}.HomeDriver", return_value=hk_driver) as mock_driver: await hass.async_add_executor_job(homekit.setup, mock_zeroconf) mock_driver.assert_called_with( hass, entry.entry_id, BRIDGE_NAME, entry.title, loop=hass.loop, address="172.0.0.0", port=DEFAULT_PORT, persist_file=path, advertised_address=None, async_zeroconf_instance=mock_zeroconf, )
async def test_setup_imported(hass): """Test async_setup with imported config options.""" legacy_persist_file_path = hass.config.path(HOMEKIT_FILE) legacy_aid_storage_path = hass.config.path(STORAGE_DIR, "homekit.aids") legacy_homekit_state_contents = {"homekit.state": 1} legacy_homekit_aids_contents = {"homekit.aids": 1} await hass.async_add_executor_job( _write_data, legacy_persist_file_path, legacy_homekit_state_contents ) await hass.async_add_executor_job( _write_data, legacy_aid_storage_path, legacy_homekit_aids_contents ) entry = MockConfigEntry( domain=DOMAIN, source=SOURCE_IMPORT, data={CONF_NAME: BRIDGE_NAME, CONF_PORT: DEFAULT_PORT, CONF_ENTRY_INDEX: 0}, options={}, ) entry.add_to_hass(hass) with patch(f"{PATH_HOMEKIT}.HomeKit") as mock_homekit: mock_homekit.return_value = homekit = Mock() type(homekit).async_start = AsyncMock() assert await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() mock_homekit.assert_any_call( hass, BRIDGE_NAME, DEFAULT_PORT, None, ANY, {}, DEFAULT_SAFE_MODE, None, entry.entry_id, ) assert mock_homekit().setup.called is True # Test auto start enabled mock_homekit.reset_mock() hass.bus.async_fire(EVENT_HOMEASSISTANT_START) await hass.async_block_till_done() mock_homekit().async_start.assert_called() migrated_persist_file_path = get_persist_fullpath_for_entry_id(hass, entry.entry_id) assert ( await hass.async_add_executor_job( json_util.load_json, migrated_persist_file_path ) == legacy_homekit_state_contents ) os.unlink(migrated_persist_file_path) migrated_aid_file_path = get_aid_storage_fullpath_for_entry_id(hass, entry.entry_id) assert ( await hass.async_add_executor_job(json_util.load_json, migrated_aid_file_path) == legacy_homekit_aids_contents ) os.unlink(migrated_aid_file_path)