"""Test homekit diagnostics.""" from unittest.mock import ANY, patch from homeassistant.components.homekit.const import DOMAIN from homeassistant.const import CONF_NAME, CONF_PORT, EVENT_HOMEASSISTANT_STARTED from .util import async_init_integration from tests.common import MockConfigEntry from tests.components.diagnostics import get_diagnostics_for_config_entry async def test_config_entry_not_running( hass, hass_client, hk_driver, mock_async_zeroconf ): """Test generating diagnostics for a config entry.""" entry = await async_init_integration(hass) diag = await get_diagnostics_for_config_entry(hass, hass_client, entry) assert diag == { "config-entry": { "data": {"name": "mock_name", "port": 12345}, "options": {}, "title": "Mock Title", "version": 1, }, "status": 0, } async def test_config_entry_running(hass, hass_client, hk_driver, mock_async_zeroconf): """Test generating diagnostics for a config entry.""" entry = MockConfigEntry( domain=DOMAIN, data={CONF_NAME: "mock_name", CONF_PORT: 12345} ) entry.add_to_hass(hass) assert await hass.config_entries.async_setup(entry.entry_id) hass.bus.async_fire(EVENT_HOMEASSISTANT_STARTED) await hass.async_block_till_done() diag = await get_diagnostics_for_config_entry(hass, hass_client, entry) assert diag == { "accessories": [ { "aid": 1, "services": [ { "characteristics": [ {"format": "bool", "iid": 2, "perms": ["pw"], "type": "14"}, { "format": "string", "iid": 3, "perms": ["pr"], "type": "20", "value": "Home Assistant", }, { "format": "string", "iid": 4, "perms": ["pr"], "type": "21", "value": "Bridge", }, { "format": "string", "iid": 5, "perms": ["pr"], "type": "23", "value": "mock_name", }, { "format": "string", "iid": 6, "perms": ["pr"], "type": "30", "value": "homekit.bridge", }, { "format": "string", "iid": 7, "perms": ["pr"], "type": "52", "value": ANY, }, ], "iid": 1, "type": "3E", }, { "characteristics": [ { "format": "string", "iid": 9, "perms": ["pr", "ev"], "type": "37", "value": "01.01.00", } ], "iid": 8, "type": "A2", }, ], } ], "client_properties": {}, "config-entry": { "data": {"name": "mock_name", "port": 12345}, "options": {}, "title": "Mock Title", "version": 1, }, "config_version": 2, "pairing_id": ANY, "status": 1, } with patch("pyhap.accessory_driver.AccessoryDriver.async_start"), patch( "homeassistant.components.homekit.HomeKit.async_stop" ), patch("homeassistant.components.homekit.async_port_is_available"): assert await hass.config_entries.async_unload(entry.entry_id) await hass.async_block_till_done()