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:
Maciej Bieniek 2023-12-13 08:18:50 +01:00 committed by GitHub
parent 9e9b518433
commit 66d24b38aa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 137 additions and 0 deletions

View 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

View 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',
}),
})
# ---

View 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