diff --git a/homeassistant/components/co2signal/diagnostics.py b/homeassistant/components/co2signal/diagnostics.py new file mode 100644 index 00000000000..24f47f96da0 --- /dev/null +++ b/homeassistant/components/co2signal/diagnostics.py @@ -0,0 +1,23 @@ +"""Diagnostics support for CO2Signal.""" +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 +from homeassistant.core import HomeAssistant + +from . import DOMAIN, CO2SignalCoordinator + +TO_REDACT = {CONF_API_KEY} + + +async def async_get_config_entry_diagnostics( + hass: HomeAssistant, config_entry: ConfigEntry +) -> dict: + """Return diagnostics for a config entry.""" + coordinator: CO2SignalCoordinator = hass.data[DOMAIN][config_entry.entry_id] + + return { + "config_entry": async_redact_data(config_entry.as_dict(), TO_REDACT), + "data": coordinator.data, + } diff --git a/tests/components/co2signal/test_diagnostics.py b/tests/components/co2signal/test_diagnostics.py new file mode 100644 index 00000000000..f84cb5e84df --- /dev/null +++ b/tests/components/co2signal/test_diagnostics.py @@ -0,0 +1,32 @@ +"""Test the CO2Signal diagnostics.""" +from unittest.mock import patch + +from homeassistant.components.co2signal import DOMAIN +from homeassistant.components.diagnostics import REDACTED +from homeassistant.const import CONF_API_KEY +from homeassistant.setup import async_setup_component + +from . import VALID_PAYLOAD + +from tests.common import MockConfigEntry +from tests.components.diagnostics import get_diagnostics_for_config_entry + + +async def test_entry_diagnostics(hass, hass_client): + """Test config entry diagnostics.""" + config_entry = MockConfigEntry( + domain=DOMAIN, data={CONF_API_KEY: "", "location": ""} + ) + config_entry.add_to_hass(hass) + with patch("CO2Signal.get_latest", return_value=VALID_PAYLOAD): + assert await async_setup_component(hass, DOMAIN, {}) + + result = await get_diagnostics_for_config_entry(hass, hass_client, config_entry) + + config_entry_dict = config_entry.as_dict() + config_entry_dict["data"][CONF_API_KEY] = REDACTED + + assert result == { + "config_entry": config_entry_dict, + "data": VALID_PAYLOAD, + }