Store wemo device sw_version & upnp connections (#62758)

This commit is contained in:
Eric Severance 2021-12-24 12:31:42 -08:00 committed by GitHub
parent c37077aa9b
commit a1be11a492
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 33 additions and 3 deletions

View File

@ -16,7 +16,10 @@ from homeassistant.const import (
CONF_UNIQUE_ID,
)
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.device_registry import async_get as async_get_device_registry
from homeassistant.helpers.device_registry import (
CONNECTION_UPNP,
async_get as async_get_device_registry,
)
from homeassistant.helpers.entity import DeviceInfo
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
@ -123,10 +126,12 @@ class DeviceCoordinator(DataUpdateCoordinator):
def _device_info(wemo: WeMoDevice) -> DeviceInfo:
return DeviceInfo(
connections={(CONNECTION_UPNP, wemo.udn)},
identifiers={(DOMAIN, wemo.serialnumber)},
manufacturer="Belkin",
model=wemo.model_name,
name=wemo.name,
sw_version=wemo.firmware_version,
)

View File

@ -14,6 +14,7 @@ MOCK_HOST = "127.0.0.1"
MOCK_PORT = 50000
MOCK_NAME = "WemoDeviceName"
MOCK_SERIAL_NUMBER = "WemoSerialNumber"
MOCK_FIRMWARE_VERSION = "WeMo_WW_2.00.XXXXX.PVT-OWRT"
@pytest.fixture(name="pywemo_model")
@ -58,6 +59,8 @@ def pywemo_device_fixture(pywemo_registry, pywemo_model):
device.name = MOCK_NAME
device.serialnumber = MOCK_SERIAL_NUMBER
device.model_name = pywemo_model.replace("LongPress", "")
device.udn = f"uuid:{device.model_name}-1_0-{device.serialnumber}"
device.firmware_version = MOCK_FIRMWARE_VERSION
device.get_state.return_value = 0 # Default to Off
device.supports_long_press.return_value = cls.supports_long_press()

View File

@ -10,7 +10,13 @@ from homeassistant.helpers import entity_registry as er
from homeassistant.setup import async_setup_component
from homeassistant.util import dt
from .conftest import MOCK_HOST, MOCK_NAME, MOCK_PORT, MOCK_SERIAL_NUMBER
from .conftest import (
MOCK_FIRMWARE_VERSION,
MOCK_HOST,
MOCK_NAME,
MOCK_PORT,
MOCK_SERIAL_NUMBER,
)
from tests.common import async_fire_time_changed
@ -109,6 +115,8 @@ async def test_discovery(hass, pywemo_registry):
device.name = f"{MOCK_NAME}_{counter}"
device.serialnumber = f"{MOCK_SERIAL_NUMBER}_{counter}"
device.model_name = "Motion"
device.udn = f"uuid:{device.model_name}-1_0-{device.serialnumber}"
device.firmware_version = MOCK_FIRMWARE_VERSION
device.get_state.return_value = 0 # Default to Off
device.supports_long_press.return_value = False
return device

View File

@ -17,7 +17,7 @@ from homeassistant.helpers.update_coordinator import UpdateFailed
from homeassistant.setup import async_setup_component
from homeassistant.util.dt import utcnow
from .conftest import MOCK_HOST
from .conftest import MOCK_FIRMWARE_VERSION, MOCK_HOST, MOCK_SERIAL_NUMBER
from tests.common import async_fire_time_changed
@ -154,6 +154,20 @@ async def test_async_update_data_subscribed(
pywemo_device.get_state.assert_not_called()
async def test_device_info(hass, wemo_entity):
"""Verify the DeviceInfo data is set properly."""
dr = device_registry.async_get(hass)
device_entries = list(dr.devices.values())
assert len(device_entries) == 1
assert device_entries[0].connections == {
("upnp", f"uuid:LightSwitch-1_0-{MOCK_SERIAL_NUMBER}")
}
assert device_entries[0].manufacturer == "Belkin"
assert device_entries[0].model == "LightSwitch"
assert device_entries[0].sw_version == MOCK_FIRMWARE_VERSION
class TestInsight:
"""Tests specific to the WeMo Insight device."""