From 24212ab59841b6c71a3e77e1b75bbed0f8427e1e Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Mon, 28 Mar 2022 17:42:25 +0200 Subject: [PATCH] Add diagnostics platform for AccuWeather integration (#68752) --- .../components/accuweather/diagnostics.py | 28 +++++++++++++++++++ .../accuweather/test_diagnostics.py | 26 +++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 homeassistant/components/accuweather/diagnostics.py create mode 100644 tests/components/accuweather/test_diagnostics.py diff --git a/homeassistant/components/accuweather/diagnostics.py b/homeassistant/components/accuweather/diagnostics.py new file mode 100644 index 00000000000..e4305eb747a --- /dev/null +++ b/homeassistant/components/accuweather/diagnostics.py @@ -0,0 +1,28 @@ +"""Diagnostics support for AccuWeather.""" +from __future__ import annotations + +from homeassistant.components.diagnostics import async_redact_data +from homeassistant.config_entries import ConfigEntry +from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE +from homeassistant.core import HomeAssistant + +from . import AccuWeatherDataUpdateCoordinator +from .const import DOMAIN + +TO_REDACT = {CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE} + + +async def async_get_config_entry_diagnostics( + hass: HomeAssistant, config_entry: ConfigEntry +) -> dict: + """Return diagnostics for a config entry.""" + coordinator: AccuWeatherDataUpdateCoordinator = hass.data[DOMAIN][ + config_entry.entry_id + ] + + diagnostics_data = { + "config_entry_data": async_redact_data(dict(config_entry.data), TO_REDACT), + "coordinator_data": coordinator.data, + } + + return diagnostics_data diff --git a/tests/components/accuweather/test_diagnostics.py b/tests/components/accuweather/test_diagnostics.py new file mode 100644 index 00000000000..1936de5fad7 --- /dev/null +++ b/tests/components/accuweather/test_diagnostics.py @@ -0,0 +1,26 @@ +"""Test AccuWeather diagnostics.""" +import json + +from tests.common import load_fixture +from tests.components.accuweather import init_integration +from tests.components.diagnostics import get_diagnostics_for_config_entry + + +async def test_entry_diagnostics(hass, hass_client): + """Test config entry diagnostics.""" + entry = await init_integration(hass) + + coordinator_data = json.loads( + load_fixture("current_conditions_data.json", "accuweather") + ) + coordinator_data["forecast"] = {} + + result = await get_diagnostics_for_config_entry(hass, hass_client, entry) + + assert result["config_entry_data"] == { + "api_key": "**REDACTED**", + "latitude": "**REDACTED**", + "longitude": "**REDACTED**", + "name": "Home", + } + assert result["coordinator_data"] == coordinator_data