diff --git a/homeassistant/components/nest/diagnostics.py b/homeassistant/components/nest/diagnostics.py index b60889358fd..0b6cfff6bae 100644 --- a/homeassistant/components/nest/diagnostics.py +++ b/homeassistant/components/nest/diagnostics.py @@ -4,6 +4,7 @@ from __future__ import annotations from typing import Any +from google_nest_sdm import diagnostics from google_nest_sdm.device import Device from google_nest_sdm.device_traits import InfoTrait from google_nest_sdm.exceptions import ApiException @@ -30,22 +31,14 @@ async def async_get_config_entry_diagnostics( return {"error": str(err)} return { + **diagnostics.get_diagnostics(), "devices": [ get_device_data(device) for device in device_manager.devices.values() - ] + ], } def get_device_data(device: Device) -> dict[str, Any]: """Return diagnostic information about a device.""" - # Return a simplified view of the API object, but skipping any id fields or - # traits that include unique identifiers or personally identifiable information. - # See https://developers.google.com/nest/device-access/traits for API details - return { - "type": device.type, - "traits": { - trait: data - for trait, data in device.raw_data.get("traits", {}).items() - if trait not in REDACT_DEVICE_TRAITS - }, - } + # Library performs its own redaction for device data + return device.get_diagnostics() diff --git a/tests/components/nest/conftest.py b/tests/components/nest/conftest.py index b13dbf662b9..9b060d38fbe 100644 --- a/tests/components/nest/conftest.py +++ b/tests/components/nest/conftest.py @@ -1,6 +1,7 @@ """Common libraries for test setup.""" from __future__ import annotations +from collections.abc import Generator import copy import shutil from typing import Any @@ -8,6 +9,7 @@ from unittest.mock import patch import uuid import aiohttp +from google_nest_sdm import diagnostics from google_nest_sdm.auth import AbstractAuth from google_nest_sdm.device_manager import DeviceManager import pytest @@ -234,3 +236,10 @@ async def setup_platform( ) -> PlatformSetup: """Fixture to setup the integration platform and subscriber.""" return setup_base_platform + + +@pytest.fixture(autouse=True) +def reset_diagnostics() -> Generator[None, None, None]: + """Fixture to reset client library diagnostic counters.""" + yield + diagnostics.reset() diff --git a/tests/components/nest/test_diagnostics.py b/tests/components/nest/test_diagnostics.py index 09930c18501..b603019da81 100644 --- a/tests/components/nest/test_diagnostics.py +++ b/tests/components/nest/test_diagnostics.py @@ -56,13 +56,21 @@ async def test_entry_diagnostics(hass, hass_client): assert await get_diagnostics_for_config_entry(hass, hass_client, config_entry) == { "devices": [ { - "traits": { - "sdm.devices.traits.Humidity": {"ambientHumidityPercent": 35.0}, - "sdm.devices.traits.Temperature": { - "ambientTemperatureCelsius": 25.1 + "data": { + "assignee": "**REDACTED**", + "name": "**REDACTED**", + "parentRelations": [ + {"displayName": "**REDACTED**", "parent": "**REDACTED**"} + ], + "traits": { + "sdm.devices.traits.Info": {"customName": "**REDACTED**"}, + "sdm.devices.traits.Humidity": {"ambientHumidityPercent": 35.0}, + "sdm.devices.traits.Temperature": { + "ambientTemperatureCelsius": 25.1 + }, }, - }, - "type": "sdm.devices.types.THERMOSTAT", + "type": "sdm.devices.types.THERMOSTAT", + } } ], }