"""Test NextDNS diagnostics.""" from collections.abc import Awaitable, Callable import json from aiohttp import ClientSession from homeassistant.components.diagnostics import REDACTED from homeassistant.core import HomeAssistant from tests.common import load_fixture from tests.components.diagnostics import get_diagnostics_for_config_entry from tests.components.nextdns import init_integration async def test_entry_diagnostics( hass: HomeAssistant, hass_client: Callable[..., Awaitable[ClientSession]] ) -> None: """Test config entry diagnostics.""" settings = json.loads(load_fixture("settings.json", "nextdns")) entry = await init_integration(hass) result = await get_diagnostics_for_config_entry(hass, hass_client, entry) assert result["config_entry"] == { "entry_id": entry.entry_id, "version": 1, "domain": "nextdns", "title": "Fake Profile", "data": {"profile_id": REDACTED, "api_key": REDACTED}, "options": {}, "pref_disable_new_entities": False, "pref_disable_polling": False, "source": "user", "unique_id": REDACTED, "disabled_by": None, } assert result["dnssec_coordinator_data"] == { "not_validated_queries": 25, "validated_queries": 75, "validated_queries_ratio": 75.0, } assert result["encryption_coordinator_data"] == { "encrypted_queries": 60, "unencrypted_queries": 40, "encrypted_queries_ratio": 60.0, } assert result["ip_versions_coordinator_data"] == { "ipv6_queries": 10, "ipv4_queries": 90, "ipv6_queries_ratio": 10.0, } assert result["protocols_coordinator_data"] == { "doh_queries": 20, "doh3_queries": 15, "doq_queries": 10, "dot_queries": 30, "tcp_queries": 0, "udp_queries": 40, "doh_queries_ratio": 17.4, "doh3_queries_ratio": 13.0, "doq_queries_ratio": 8.7, "dot_queries_ratio": 26.1, "tcp_queries_ratio": 0.0, "udp_queries_ratio": 34.8, } assert result["settings_coordinator_data"] == settings assert result["status_coordinator_data"] == { "all_queries": 100, "allowed_queries": 30, "blocked_queries": 20, "default_queries": 40, "relayed_queries": 10, "blocked_queries_ratio": 20.0, }