Fix samsungtv to abort when ATTR_UPNP_MANUFACTURER is missing (#78895)
parent
17ddc40784
commit
0a8a5b973a
|
@ -458,7 +458,7 @@ class SamsungTVConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
|||
)
|
||||
if hostname := urlparse(discovery_info.ssdp_location or "").hostname:
|
||||
self._host = hostname
|
||||
self._manufacturer = discovery_info.upnp[ssdp.ATTR_UPNP_MANUFACTURER]
|
||||
self._manufacturer = discovery_info.upnp.get(ssdp.ATTR_UPNP_MANUFACTURER)
|
||||
self._abort_if_manufacturer_is_not_samsung()
|
||||
|
||||
# Set defaults, in case they cannot be extracted from device_info
|
||||
|
|
|
@ -100,6 +100,15 @@ MOCK_SSDP_DATA = ssdp.SsdpServiceInfo(
|
|||
ATTR_UPNP_UDN: "uuid:0d1cef00-00dc-1000-9c80-4844f7b172de",
|
||||
},
|
||||
)
|
||||
MOCK_SSDP_DATA_NO_MANUFACTURER = ssdp.SsdpServiceInfo(
|
||||
ssdp_usn="mock_usn",
|
||||
ssdp_st="mock_st",
|
||||
ssdp_location="https://fake_host:12345/test",
|
||||
upnp={
|
||||
ATTR_UPNP_FRIENDLY_NAME: "[TV] fake_name",
|
||||
ATTR_UPNP_UDN: "uuid:0d1cef00-00dc-1000-9c80-4844f7b172de",
|
||||
},
|
||||
)
|
||||
|
||||
MOCK_SSDP_DATA_NOPREFIX = ssdp.SsdpServiceInfo(
|
||||
ssdp_usn="mock_usn",
|
||||
|
@ -521,6 +530,18 @@ async def test_ssdp(hass: HomeAssistant) -> None:
|
|||
assert result["result"].unique_id == "0d1cef00-00dc-1000-9c80-4844f7b172de"
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("remote", "rest_api_failing")
|
||||
async def test_ssdp_no_manufacturer(hass: HomeAssistant) -> None:
|
||||
"""Test starting a flow from discovery when the manufacturer data is missing."""
|
||||
result = await hass.config_entries.flow.async_init(
|
||||
DOMAIN,
|
||||
context={"source": config_entries.SOURCE_SSDP},
|
||||
data=MOCK_SSDP_DATA_NO_MANUFACTURER,
|
||||
)
|
||||
assert result["type"] == "abort"
|
||||
assert result["reason"] == "not_supported"
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"data", [MOCK_SSDP_DATA_MAIN_TV_AGENT_ST, MOCK_SSDP_DATA_RENDERING_CONTROL_ST]
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue