mirror of
https://github.com/home-assistant/core.git
synced 2026-08-29 02:35:05 -05:00
94 lines
3.0 KiB
Python
94 lines
3.0 KiB
Python
"""Tests for Monzo diagnostics."""
|
|
|
|
import json
|
|
from unittest.mock import AsyncMock
|
|
|
|
from syrupy.assertion import SnapshotAssertion
|
|
from syrupy.filters import props
|
|
|
|
from homeassistant.components.monzo.const import CONF_CLOUDHOOK_URL
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
from .conftest import (
|
|
OWNER,
|
|
TEST_ACCOUNTS,
|
|
TEST_POTS,
|
|
TITLE,
|
|
USER_ID,
|
|
WEBHOOK_ID,
|
|
WEBHOOK_URL,
|
|
)
|
|
|
|
from tests.common import MockConfigEntry
|
|
from tests.components.diagnostics import get_diagnostics_for_config_entry
|
|
from tests.typing import ClientSessionGenerator
|
|
|
|
CLOUDHOOK_URL = "https://hooks.nabu.casa/test-cloudhook"
|
|
|
|
|
|
async def test_entry_diagnostics(
|
|
hass: HomeAssistant,
|
|
hass_client: ClientSessionGenerator,
|
|
monzo: AsyncMock,
|
|
polling_config_entry: MockConfigEntry,
|
|
snapshot: SnapshotAssertion,
|
|
) -> None:
|
|
"""Test config entry diagnostics and redaction."""
|
|
joint_account = {
|
|
"id": "acc_joint",
|
|
"name": "Joint Account",
|
|
"type": "uk_retail_joint",
|
|
"owners": [OWNER, {"preferred_name": "Jake Martin"}],
|
|
"balance": {
|
|
"balance": 456,
|
|
"total_balance": 654,
|
|
"spend_today": -78,
|
|
"currency": "GBP",
|
|
},
|
|
}
|
|
unlinked_pot = {
|
|
**TEST_POTS[0],
|
|
"id": "pot_unlinked",
|
|
"name": "Unlinked pot",
|
|
"current_account_id": "acc_missing",
|
|
}
|
|
monzo.user_account.accounts.return_value = [*TEST_ACCOUNTS, joint_account]
|
|
monzo.user_account.pots.return_value = [*TEST_POTS, unlinked_pot]
|
|
polling_config_entry.add_to_hass(hass)
|
|
hass.config_entries.async_update_entry(
|
|
polling_config_entry,
|
|
data={**polling_config_entry.data, CONF_CLOUDHOOK_URL: CLOUDHOOK_URL},
|
|
)
|
|
await hass.config_entries.async_setup(polling_config_entry.entry_id)
|
|
|
|
result = await get_diagnostics_for_config_entry(
|
|
hass, hass_client, polling_config_entry
|
|
)
|
|
|
|
assert result == snapshot(exclude=props("created_at", "modified_at"))
|
|
serialized_result = json.dumps(result)
|
|
assert TITLE not in serialized_result
|
|
assert str(USER_ID) not in serialized_result
|
|
assert OWNER["preferred_name"] not in serialized_result
|
|
assert WEBHOOK_ID not in serialized_result
|
|
assert WEBHOOK_URL not in serialized_result
|
|
assert CLOUDHOOK_URL not in serialized_result
|
|
assert "mock-access-token" not in serialized_result
|
|
assert "mock-refresh-token" not in serialized_result
|
|
assert "acc_curr" not in serialized_result
|
|
assert "acc_flex" not in serialized_result
|
|
assert "acc_joint" not in serialized_result
|
|
assert "acc_missing" not in serialized_result
|
|
assert "pot_savings" not in serialized_result
|
|
assert "pot_unlinked" not in serialized_result
|
|
assert "Current Account" not in serialized_result
|
|
assert "Joint Account" not in serialized_result
|
|
assert "Savings" not in serialized_result
|
|
assert "Unlinked pot" not in serialized_result
|
|
|
|
assert {account["type"] for account in result["coordinator"]["accounts"]} == {
|
|
"uk_monzo_flex",
|
|
"uk_retail",
|
|
"uk_retail_joint",
|
|
}
|