mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 05:07:41 +00:00
Fix samsungtv to abort when ATTR_UPNP_MANUFACTURER is missing (#78895)
This commit is contained in:
parent
17ddc40784
commit
0a8a5b973a
@ -458,7 +458,7 @@ class SamsungTVConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
|||||||
)
|
)
|
||||||
if hostname := urlparse(discovery_info.ssdp_location or "").hostname:
|
if hostname := urlparse(discovery_info.ssdp_location or "").hostname:
|
||||||
self._host = 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()
|
self._abort_if_manufacturer_is_not_samsung()
|
||||||
|
|
||||||
# Set defaults, in case they cannot be extracted from device_info
|
# 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",
|
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(
|
MOCK_SSDP_DATA_NOPREFIX = ssdp.SsdpServiceInfo(
|
||||||
ssdp_usn="mock_usn",
|
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"
|
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(
|
@pytest.mark.parametrize(
|
||||||
"data", [MOCK_SSDP_DATA_MAIN_TV_AGENT_ST, MOCK_SSDP_DATA_RENDERING_CONTROL_ST]
|
"data", [MOCK_SSDP_DATA_MAIN_TV_AGENT_ST, MOCK_SSDP_DATA_RENDERING_CONTROL_ST]
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user