ha(H4): исправления по ревью — маскировка ключа в дампе, reload-repair, reconfigure сохраняет поля

- major: diagnostics больше не содержит полный lanip_key (esp_home —
  маска, entry_data redacted); ключ для ESPHome — через reconfigure/CLI;
  план §3 синхронизирован; дамп при незагруженной записи не падает
- reconfigure: сохраняет listen_port/keepalive_ms и текущие overrides/
  temp_step; превью-дефолты подхватывают значения записи
- repair fix-flow: подтверждение перезагружает запись (issue снимается
  только когда сессия вышла из key_error; иначе создаётся заново)
- key_issue_id helper, использование async_remove_issue (мёртвый код),
  CONF_EMAIL/PASSWORD в TO_REDACT, placeholders в fix_flow, тест
  плейсхолдеров ru
- тесты обновлены (47 components)
This commit is contained in:
2026-09-29 14:29:36 +03:00
parent dcbf9a6c7e
commit 43d3ff7dea
12 changed files with 160 additions and 80 deletions
+6 -3
View File
@@ -39,10 +39,9 @@ async def test_diagnostics(hass: HomeAssistant, mock_ac, socket_enabled):
assert diag["config"]["host"] == "127.0.0.1"
assert diag["config"]["template"] == "A"
assert diag["esp_home"]["lanip_key"] == LANIP_KEY
assert diag["esp_home"]["lanip_key"] != LANIP_KEY
assert "REDACTED" in diag["esp_home"]["lanip_key"]
assert diag["esp_home"]["lanip_key_id"] == 64201
assert diag["esp_home_masked"]["lanip_key"] != LANIP_KEY
assert "REDACTED" in diag["esp_home_masked"]["lanip_key"]
assert diag["entry_data"]["lanip_key"] == "**REDACTED**"
assert diag["runtime"]["state"] == "online"
@@ -54,3 +53,7 @@ async def test_diagnostics(hass: HomeAssistant, mock_ac, socket_enabled):
)
assert await hass.config_entries.async_unload(entry.entry_id)
unloaded = await async_get_config_entry_diagnostics(hass, entry)
assert unloaded["runtime"]["loaded"] is False
assert unloaded["config"]["dsn"] == DSN