Files
home-assistant-mb-secure/tests/test_diagnostics.py
T

43 lines
1.4 KiB
Python

"""Tests for MB-Secure diagnostics redaction."""
from unittest.mock import AsyncMock, MagicMock
from homeassistant.core import HomeAssistant
from pytest_homeassistant_custom_component.common import MockConfigEntry
from custom_components.mb_secure.const import CONF_TOKEN, DOMAIN
from custom_components.mb_secure.diagnostics import async_get_config_entry_diagnostics
async def test_diagnostics_redact_config_and_whitelist_bridge_data(
hass: HomeAssistant,
) -> None:
"""Tokens, hosts, and unrecognized bridge fields never leave diagnostics."""
entry = MockConfigEntry(
domain=DOMAIN,
data={
"host": "private-host.local",
"port": 8099,
CONF_TOKEN: "x" * 32,
},
unique_id="bridge-installation-1",
)
coordinator = MagicMock()
coordinator.client.async_get_diagnostics = AsyncMock(
return_value={
"api_version": 1,
"connected": True,
"snapshot_revision": 4,
"object_counts": {"areas": 1},
"unexpected_private_field": "must-not-leak",
}
)
entry.runtime_data = coordinator
result = await async_get_config_entry_diagnostics(hass, entry)
assert result["config_entry"]["host"] != "private-host.local"
assert result["config_entry"][CONF_TOKEN] != entry.data[CONF_TOKEN]
assert result["config_entry"]["port"] == 8099
assert "unexpected_private_field" not in result["bridge"]