43 lines
1.4 KiB
Python
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"]
|