Add Diagnostic platform to Aladdin Connect (#99682)

* Add diagnostics platform

* Add diagnostic platform

* Add raw data to diagnostics

* Remove config data
bump aioaladdinconnect, use new doors property for diag

* remove unnecessary component config
refactor diag output
This commit is contained in:
mkmer 2023-09-07 15:27:41 -04:00 committed by GitHub
parent 77180a73b7
commit 4ce9c1f304
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 97 additions and 4 deletions

View File

@ -0,0 +1,29 @@
"""Diagnostics support for Aladdin Connect."""
from __future__ import annotations
from typing import Any
from AIOAladdinConnect import AladdinConnectClient
from homeassistant.components.diagnostics import async_redact_data
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from .const import DOMAIN
TO_REDACT = {"serial", "device_id"}
async def async_get_config_entry_diagnostics(
hass: HomeAssistant,
config_entry: ConfigEntry,
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
acc: AladdinConnectClient = hass.data[DOMAIN][config_entry.entry_id]
diagnostics_data = {
"doors": async_redact_data(acc.doors, TO_REDACT),
}
return diagnostics_data

View File

@ -6,5 +6,5 @@
"documentation": "https://www.home-assistant.io/integrations/aladdin_connect",
"iot_class": "cloud_polling",
"loggers": ["aladdin_connect"],
"requirements": ["AIOAladdinConnect==0.1.57"]
"requirements": ["AIOAladdinConnect==0.1.58"]
}

View File

@ -5,7 +5,7 @@
AEMET-OpenData==0.4.4
# homeassistant.components.aladdin_connect
AIOAladdinConnect==0.1.57
AIOAladdinConnect==0.1.58
# homeassistant.components.honeywell
AIOSomecomfort==0.0.17

View File

@ -7,7 +7,7 @@
AEMET-OpenData==0.4.4
# homeassistant.components.aladdin_connect
AIOAladdinConnect==0.1.57
AIOAladdinConnect==0.1.58
# homeassistant.components.honeywell
AIOSomecomfort==0.0.17

View File

@ -12,6 +12,10 @@ DEVICE_CONFIG_OPEN = {
"link_status": "Connected",
"serial": "12345",
"model": "02",
"rssi": -67,
"ble_strength": 0,
"vendor": "GENIE",
"battery_level": 0,
}
@ -35,7 +39,7 @@ def fixture_mock_aladdinconnect_api():
mock_opener.async_get_ble_strength = AsyncMock(return_value="-45")
mock_opener.get_ble_strength.return_value = "-45"
mock_opener.get_doors = AsyncMock(return_value=[DEVICE_CONFIG_OPEN])
mock_opener.doors = [DEVICE_CONFIG_OPEN]
mock_opener.register_callback = mock.Mock(return_value=True)
mock_opener.open_door = AsyncMock(return_value=True)
mock_opener.close_door = AsyncMock(return_value=True)

View File

@ -0,0 +1,20 @@
# serializer version: 1
# name: test_entry_diagnostics
dict({
'doors': list([
dict({
'battery_level': 0,
'ble_strength': 0,
'device_id': '**REDACTED**',
'door_number': 1,
'link_status': 'Connected',
'model': '02',
'name': 'home',
'rssi': -67,
'serial': '**REDACTED**',
'status': 'open',
'vendor': 'GENIE',
}),
]),
})
# ---

View File

@ -0,0 +1,40 @@
"""Test AccuWeather diagnostics."""
from unittest.mock import MagicMock, patch
from syrupy import SnapshotAssertion
from homeassistant.components.aladdin_connect.const import DOMAIN
from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry
from tests.components.diagnostics import get_diagnostics_for_config_entry
from tests.typing import ClientSessionGenerator
YAML_CONFIG = {"username": "test-user", "password": "test-password"}
async def test_entry_diagnostics(
hass: HomeAssistant,
hass_client: ClientSessionGenerator,
snapshot: SnapshotAssertion,
mock_aladdinconnect_api: MagicMock,
) -> None:
"""Test config entry diagnostics."""
config_entry = MockConfigEntry(
domain=DOMAIN,
data=YAML_CONFIG,
unique_id="test-id",
)
config_entry.add_to_hass(hass)
with patch(
"homeassistant.components.aladdin_connect.AladdinConnectClient",
return_value=mock_aladdinconnect_api,
):
await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done()
result = await get_diagnostics_for_config_entry(hass, hass_client, config_entry)
assert result == snapshot