Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
"""Provides diagnostics for the Home Assistant Connect ZBT-2 integration."""

from typing import Any

from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant


async def async_get_config_entry_diagnostics(
hass: HomeAssistant, config_entry: ConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
return {"config_entry": config_entry.as_dict()}
Comment on lines +5 to +13
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we need to redact the unique id, as it doesn't contain any secrets or personal data

Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# serializer version: 1
# name: test_diagnostics_for_config_entry
dict({
'config_entry': dict({
'data': dict({
'device': '/dev/serial/by-id/usb-Nabu_Casa_ZBT-2_80B54EEFAE18-if01-port0',
'firmware': 'ezsp',
'firmware_version': '7.3.1.0 build 0',
'manufacturer': 'Nabu Casa',
'pid': '4001',
'product': 'ZBT-2',
'serial_number': '80B54EEFAE18',
Comment on lines +6 to +12
'vid': '303A',
}),
'disabled_by': None,
'discovery_keys': dict({
}),
'domain': 'homeassistant_connect_zbt2',
'minor_version': 1,
'options': dict({
}),
'pref_disable_new_entities': False,
'pref_disable_polling': False,
'source': 'user',
'subentries': list([
]),
'title': 'Mock Title',
'unique_id': None,
'version': 1,
}),
})
# ---
51 changes: 51 additions & 0 deletions tests/components/homeassistant_connect_zbt2/test_diagnostics.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
"""Tests for the diagnostics data provided by the Home Assistant Connect ZBT-2 integration."""

from syrupy.assertion import SnapshotAssertion
from syrupy.filters import props

from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component

from .common import USB_DATA_ZBT2

from tests.common import MockConfigEntry
from tests.components.diagnostics import get_diagnostics_for_config_entry
from tests.typing import ClientSessionGenerator


async def test_diagnostics_for_config_entry(
hass: HomeAssistant,
hass_client: ClientSessionGenerator,
snapshot: SnapshotAssertion,
) -> None:
"""Test diagnostics for config entry."""
await async_setup_component(hass, "homeassistant", {})

# Set up the ZBT-2 integration
zbt2_config_entry = MockConfigEntry(
domain="homeassistant_connect_zbt2",
data={
"firmware": "ezsp",
"firmware_version": "7.3.1.0 build 0",
"device": USB_DATA_ZBT2.device,
"manufacturer": USB_DATA_ZBT2.manufacturer,
"pid": USB_DATA_ZBT2.pid,
"product": USB_DATA_ZBT2.description,
"serial_number": USB_DATA_ZBT2.serial_number,
"vid": USB_DATA_ZBT2.vid,
},
version=1,
minor_version=1,
)
Comment on lines +25 to +39
zbt2_config_entry.add_to_hass(hass)

assert await hass.config_entries.async_setup(zbt2_config_entry.entry_id)
await hass.async_block_till_done()

diagnostics_data = await get_diagnostics_for_config_entry(
hass, hass_client, zbt2_config_entry
)

assert diagnostics_data == snapshot(
exclude=props("created_at", "modified_at", "entry_id")
)
Loading