Fix legacy nest diangostics to return gracefully, rather than a TypError by checking explicitiy for SDM in the config entry. Update diagnostics to use the common nest test fixture, and extend with support for the legacy nest config. Use the sdm test fixture in the existing legacy tests so they all share the same config files.
98 lines
3.4 KiB
Python
98 lines
3.4 KiB
Python
"""Test nest diagnostics."""
|
|
|
|
from unittest.mock import patch
|
|
|
|
from google_nest_sdm.exceptions import SubscriberException
|
|
import pytest
|
|
|
|
from homeassistant.config_entries import ConfigEntryState
|
|
|
|
from .common import TEST_CONFIG_LEGACY
|
|
|
|
from tests.components.diagnostics import get_diagnostics_for_config_entry
|
|
|
|
|
|
async def test_entry_diagnostics(
|
|
hass, hass_client, create_device, setup_platform, config_entry
|
|
):
|
|
"""Test config entry diagnostics."""
|
|
create_device.create(
|
|
raw_data={
|
|
"name": "enterprises/project-id/devices/device-id",
|
|
"type": "sdm.devices.types.THERMOSTAT",
|
|
"assignee": "enterprises/project-id/structures/structure-id/rooms/room-id",
|
|
"traits": {
|
|
"sdm.devices.traits.Info": {
|
|
"customName": "My Sensor",
|
|
},
|
|
"sdm.devices.traits.Temperature": {
|
|
"ambientTemperatureCelsius": 25.1,
|
|
},
|
|
"sdm.devices.traits.Humidity": {
|
|
"ambientHumidityPercent": 35.0,
|
|
},
|
|
},
|
|
"parentRelations": [
|
|
{
|
|
"parent": "enterprises/project-id/structures/structure-id/rooms/room-id",
|
|
"displayName": "Lobby",
|
|
}
|
|
],
|
|
}
|
|
)
|
|
await setup_platform()
|
|
assert config_entry.state is ConfigEntryState.LOADED
|
|
|
|
# Test that only non identifiable device information is returned
|
|
assert await get_diagnostics_for_config_entry(hass, hass_client, config_entry) == {
|
|
"devices": [
|
|
{
|
|
"data": {
|
|
"assignee": "**REDACTED**",
|
|
"name": "**REDACTED**",
|
|
"parentRelations": [
|
|
{"displayName": "**REDACTED**", "parent": "**REDACTED**"}
|
|
],
|
|
"traits": {
|
|
"sdm.devices.traits.Info": {"customName": "**REDACTED**"},
|
|
"sdm.devices.traits.Humidity": {"ambientHumidityPercent": 35.0},
|
|
"sdm.devices.traits.Temperature": {
|
|
"ambientTemperatureCelsius": 25.1
|
|
},
|
|
},
|
|
"type": "sdm.devices.types.THERMOSTAT",
|
|
}
|
|
}
|
|
],
|
|
}
|
|
|
|
|
|
async def test_setup_susbcriber_failure(
|
|
hass, hass_client, config_entry, setup_base_platform
|
|
):
|
|
"""Test configuration error."""
|
|
with patch(
|
|
"homeassistant.helpers.config_entry_oauth2_flow.async_get_config_entry_implementation"
|
|
), patch(
|
|
"homeassistant.components.nest.api.GoogleNestSubscriber.start_async",
|
|
side_effect=SubscriberException(),
|
|
):
|
|
await setup_base_platform()
|
|
|
|
assert config_entry.state is ConfigEntryState.SETUP_RETRY
|
|
|
|
assert await get_diagnostics_for_config_entry(hass, hass_client, config_entry) == {
|
|
"error": "No subscriber configured"
|
|
}
|
|
|
|
|
|
@pytest.mark.parametrize("nest_test_config", [TEST_CONFIG_LEGACY])
|
|
async def test_legacy_config_entry_diagnostics(
|
|
hass, hass_client, config_entry, setup_base_platform
|
|
):
|
|
"""Test config entry diagnostics for legacy integration doesn't fail."""
|
|
|
|
with patch("homeassistant.components.nest.legacy.Nest"):
|
|
await setup_base_platform()
|
|
|
|
assert await get_diagnostics_for_config_entry(hass, hass_client, config_entry) == {}
|