Add additional data to HomeKit diagnostics (#80980)
This commit is contained in:
parent
7dd1f58d04
commit
a90ef3a575
2 changed files with 182 additions and 2 deletions
|
@ -1,7 +1,11 @@
|
|||
"""Test homekit diagnostics."""
|
||||
from unittest.mock import ANY, patch
|
||||
|
||||
from homeassistant.components.homekit.const import DOMAIN
|
||||
from homeassistant.components.homekit.const import (
|
||||
CONF_HOMEKIT_MODE,
|
||||
DOMAIN,
|
||||
HOMEKIT_MODE_ACCESSORY,
|
||||
)
|
||||
from homeassistant.const import CONF_NAME, CONF_PORT, EVENT_HOMEASSISTANT_STARTED
|
||||
|
||||
from .util import async_init_integration
|
||||
|
@ -28,7 +32,7 @@ async def test_config_entry_not_running(
|
|||
|
||||
|
||||
async def test_config_entry_running(hass, hass_client, hk_driver, mock_async_zeroconf):
|
||||
"""Test generating diagnostics for a config entry."""
|
||||
"""Test generating diagnostics for a bridge config entry."""
|
||||
entry = MockConfigEntry(
|
||||
domain=DOMAIN, data={CONF_NAME: "mock_name", CONF_PORT: 12345}
|
||||
)
|
||||
|
@ -38,6 +42,7 @@ async def test_config_entry_running(hass, hass_client, hk_driver, mock_async_zer
|
|||
await hass.async_block_till_done()
|
||||
diag = await get_diagnostics_for_config_entry(hass, hass_client, entry)
|
||||
assert diag == {
|
||||
"bridge": {},
|
||||
"accessories": [
|
||||
{
|
||||
"aid": 1,
|
||||
|
@ -117,3 +122,145 @@ async def test_config_entry_running(hass, hass_client, hk_driver, mock_async_zer
|
|||
), patch("homeassistant.components.homekit.async_port_is_available"):
|
||||
assert await hass.config_entries.async_unload(entry.entry_id)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
|
||||
async def test_config_entry_accessory(
|
||||
hass, hass_client, hk_driver, mock_async_zeroconf
|
||||
):
|
||||
"""Test generating diagnostics for an accessory config entry."""
|
||||
hass.states.async_set("light.demo", "on")
|
||||
|
||||
entry = MockConfigEntry(
|
||||
domain=DOMAIN,
|
||||
data={
|
||||
CONF_NAME: "mock_name",
|
||||
CONF_PORT: 12345,
|
||||
CONF_HOMEKIT_MODE: HOMEKIT_MODE_ACCESSORY,
|
||||
"filter": {
|
||||
"exclude_domains": [],
|
||||
"exclude_entities": [],
|
||||
"include_domains": [],
|
||||
"include_entities": ["light.demo"],
|
||||
},
|
||||
},
|
||||
)
|
||||
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 " "Light",
|
||||
},
|
||||
{
|
||||
"format": "string",
|
||||
"iid": 4,
|
||||
"perms": ["pr"],
|
||||
"type": "21",
|
||||
"value": "Light",
|
||||
},
|
||||
{
|
||||
"format": "string",
|
||||
"iid": 5,
|
||||
"perms": ["pr"],
|
||||
"type": "23",
|
||||
"value": "demo",
|
||||
},
|
||||
{
|
||||
"format": "string",
|
||||
"iid": 6,
|
||||
"perms": ["pr"],
|
||||
"type": "30",
|
||||
"value": "light.demo",
|
||||
},
|
||||
{
|
||||
"format": "string",
|
||||
"iid": 7,
|
||||
"perms": ["pr"],
|
||||
"type": "52",
|
||||
"value": "2022.11.0",
|
||||
},
|
||||
],
|
||||
"iid": 1,
|
||||
"type": "3E",
|
||||
},
|
||||
{
|
||||
"characteristics": [
|
||||
{
|
||||
"format": "string",
|
||||
"iid": 9,
|
||||
"perms": ["pr", "ev"],
|
||||
"type": "37",
|
||||
"value": "01.01.00",
|
||||
}
|
||||
],
|
||||
"iid": 8,
|
||||
"type": "A2",
|
||||
},
|
||||
{
|
||||
"characteristics": [
|
||||
{
|
||||
"format": "bool",
|
||||
"iid": 11,
|
||||
"perms": ["pr", "pw", "ev"],
|
||||
"type": "25",
|
||||
"value": True,
|
||||
}
|
||||
],
|
||||
"iid": 10,
|
||||
"type": "43",
|
||||
},
|
||||
],
|
||||
}
|
||||
],
|
||||
"accessory": {
|
||||
"aid": 1,
|
||||
"category": 5,
|
||||
"config": {},
|
||||
"entity_id": "light.demo",
|
||||
"entity_state": {
|
||||
"attributes": {},
|
||||
"context": {"id": ANY, "parent_id": None, "user_id": None},
|
||||
"entity_id": "light.demo",
|
||||
"last_changed": ANY,
|
||||
"last_updated": ANY,
|
||||
"state": "on",
|
||||
},
|
||||
"name": "demo",
|
||||
},
|
||||
"client_properties": {},
|
||||
"config-entry": {
|
||||
"data": {"name": "mock_name", "port": 12345},
|
||||
"options": {
|
||||
"filter": {
|
||||
"exclude_domains": [],
|
||||
"exclude_entities": [],
|
||||
"include_domains": [],
|
||||
"include_entities": ["light.demo"],
|
||||
},
|
||||
"mode": "accessory",
|
||||
},
|
||||
"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()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue