mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 17:27:52 +00:00
Add diagnostics platform to BraviaTV (#105603)
* Add diagnostics platform * Add test * Improve test * Use consts * Fix test * Patch methods * Patch methods
This commit is contained in:
parent
9e9b518433
commit
66d24b38aa
28
homeassistant/components/braviatv/diagnostics.py
Normal file
28
homeassistant/components/braviatv/diagnostics.py
Normal file
@ -0,0 +1,28 @@
|
||||
"""Diagnostics support for BraviaTV."""
|
||||
from typing import Any
|
||||
|
||||
from homeassistant.components.diagnostics import async_redact_data
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import CONF_MAC, CONF_PIN
|
||||
from homeassistant.core import HomeAssistant
|
||||
|
||||
from .const import DOMAIN
|
||||
from .coordinator import BraviaTVCoordinator
|
||||
|
||||
TO_REDACT = {CONF_MAC, CONF_PIN, "macAddr"}
|
||||
|
||||
|
||||
async def async_get_config_entry_diagnostics(
|
||||
hass: HomeAssistant, config_entry: ConfigEntry
|
||||
) -> dict[str, Any]:
|
||||
"""Return diagnostics for a config entry."""
|
||||
coordinator: BraviaTVCoordinator = hass.data[DOMAIN][config_entry.entry_id]
|
||||
|
||||
device_info = await coordinator.client.get_system_info()
|
||||
|
||||
diagnostics_data = {
|
||||
"config_entry": async_redact_data(config_entry.as_dict(), TO_REDACT),
|
||||
"device_info": async_redact_data(device_info, TO_REDACT),
|
||||
}
|
||||
|
||||
return diagnostics_data
|
37
tests/components/braviatv/snapshots/test_diagnostics.ambr
Normal file
37
tests/components/braviatv/snapshots/test_diagnostics.ambr
Normal file
@ -0,0 +1,37 @@
|
||||
# serializer version: 1
|
||||
# name: test_entry_diagnostics
|
||||
dict({
|
||||
'config_entry': dict({
|
||||
'data': dict({
|
||||
'host': 'localhost',
|
||||
'mac': '**REDACTED**',
|
||||
'pin': '**REDACTED**',
|
||||
'use_psk': True,
|
||||
}),
|
||||
'disabled_by': None,
|
||||
'domain': 'braviatv',
|
||||
'entry_id': '3bd2acb0e4f0476d40865546d0d91921',
|
||||
'minor_version': 1,
|
||||
'options': dict({
|
||||
}),
|
||||
'pref_disable_new_entities': False,
|
||||
'pref_disable_polling': False,
|
||||
'source': 'user',
|
||||
'title': 'Mock Title',
|
||||
'unique_id': 'very_unique_string',
|
||||
'version': 1,
|
||||
}),
|
||||
'device_info': dict({
|
||||
'area': 'POL',
|
||||
'cid': 'very_unique_string',
|
||||
'generation': '5.2.0',
|
||||
'language': 'pol',
|
||||
'macAddr': '**REDACTED**',
|
||||
'model': 'TV-Model',
|
||||
'name': 'BRAVIA',
|
||||
'product': 'TV',
|
||||
'region': 'XEU',
|
||||
'serial': 'serial_number',
|
||||
}),
|
||||
})
|
||||
# ---
|
72
tests/components/braviatv/test_diagnostics.py
Normal file
72
tests/components/braviatv/test_diagnostics.py
Normal file
@ -0,0 +1,72 @@
|
||||
"""Test the BraviaTV diagnostics."""
|
||||
from unittest.mock import patch
|
||||
|
||||
from syrupy import SnapshotAssertion
|
||||
|
||||
from homeassistant.components.braviatv.const import CONF_USE_PSK, DOMAIN
|
||||
from homeassistant.const import CONF_HOST, CONF_MAC, CONF_PIN
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.setup import async_setup_component
|
||||
|
||||
from tests.common import MockConfigEntry
|
||||
from tests.components.diagnostics import get_diagnostics_for_config_entry
|
||||
from tests.typing import ClientSessionGenerator
|
||||
|
||||
BRAVIA_SYSTEM_INFO = {
|
||||
"product": "TV",
|
||||
"region": "XEU",
|
||||
"language": "pol",
|
||||
"model": "TV-Model",
|
||||
"serial": "serial_number",
|
||||
"macAddr": "AA:BB:CC:DD:EE:FF",
|
||||
"name": "BRAVIA",
|
||||
"generation": "5.2.0",
|
||||
"area": "POL",
|
||||
"cid": "very_unique_string",
|
||||
}
|
||||
INPUTS = [
|
||||
{
|
||||
"uri": "extInput:hdmi?port=1",
|
||||
"title": "HDMI 1",
|
||||
"connection": False,
|
||||
"label": "",
|
||||
"icon": "meta:hdmi",
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
async def test_entry_diagnostics(
|
||||
hass: HomeAssistant,
|
||||
hass_client: ClientSessionGenerator,
|
||||
snapshot: SnapshotAssertion,
|
||||
) -> None:
|
||||
"""Test config entry diagnostics."""
|
||||
|
||||
config_entry = MockConfigEntry(
|
||||
domain=DOMAIN,
|
||||
data={
|
||||
CONF_HOST: "localhost",
|
||||
CONF_MAC: "AA:BB:CC:DD:EE:FF",
|
||||
CONF_USE_PSK: True,
|
||||
CONF_PIN: "12345qwerty",
|
||||
},
|
||||
unique_id="very_unique_string",
|
||||
entry_id="3bd2acb0e4f0476d40865546d0d91921",
|
||||
)
|
||||
|
||||
config_entry.add_to_hass(hass)
|
||||
with patch("pybravia.BraviaClient.connect"), patch(
|
||||
"pybravia.BraviaClient.pair"
|
||||
), patch("pybravia.BraviaClient.set_wol_mode"), patch(
|
||||
"pybravia.BraviaClient.get_system_info", return_value=BRAVIA_SYSTEM_INFO
|
||||
), patch("pybravia.BraviaClient.get_power_status", return_value="active"), patch(
|
||||
"pybravia.BraviaClient.get_external_status", return_value=INPUTS
|
||||
), patch("pybravia.BraviaClient.get_volume_info", return_value={}), patch(
|
||||
"pybravia.BraviaClient.get_playing_info", return_value={}
|
||||
), patch("pybravia.BraviaClient.get_app_list", return_value=[]), patch(
|
||||
"pybravia.BraviaClient.get_content_list_all", return_value=[]
|
||||
):
|
||||
assert await async_setup_component(hass, DOMAIN, {})
|
||||
result = await get_diagnostics_for_config_entry(hass, hass_client, config_entry)
|
||||
|
||||
assert result == snapshot
|
Loading…
x
Reference in New Issue
Block a user