Use dataclass properties in bosch_shc discovery (#60559)

pull/60611/head
epenet 2021-11-30 10:57:37 +01:00 committed by GitHub
parent 9b92787d59
commit d537ec1d6f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 37 deletions

View File

@ -190,22 +190,12 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
return self.async_abort(reason="not_bosch_shc")
try:
hosts = (
discovery_info[zeroconf.ATTR_HOST]
if isinstance(discovery_info[zeroconf.ATTR_HOST], list)
else [discovery_info[zeroconf.ATTR_HOST]]
)
for host in hosts:
if host.startswith("169."): # skip link local address
continue
self.info = await self._get_info(host)
self.host = host
if self.info is None or self.host is None:
return self.async_abort(reason="cannot_connect")
self.info = await self._get_info(discovery_info.host)
except SHCConnectionError:
return self.async_abort(reason="cannot_connect")
self.host = discovery_info.host
local_name = discovery_info[zeroconf.ATTR_HOSTNAME][:-1]
local_name = discovery_info.hostname[:-1]
node_name = local_name[: -len(".local")]
await self.async_set_unique_id(self.info["unique_id"])

View File

@ -21,7 +21,7 @@ MOCK_SETTINGS = {
"device": {"mac": "test-mac", "hostname": "test-host"},
}
DISCOVERY_INFO = zeroconf.ZeroconfServiceInfo(
host=["169.1.1.1", "1.1.1.1"],
host="1.1.1.1",
hostname="shc012345.local.",
name="Bosch SHC [test-mac]._http._tcp.local.",
port=0,
@ -527,29 +527,6 @@ async def test_zeroconf_cannot_connect(hass, mock_zeroconf):
assert result["reason"] == "cannot_connect"
async def test_zeroconf_link_local(hass, mock_zeroconf):
"""Test we get the form."""
DISCOVERY_INFO_LINK_LOCAL = zeroconf.ZeroconfServiceInfo(
host=["169.1.1.1"],
hostname="shc012345.local.",
name="Bosch SHC [test-mac]._http._tcp.local.",
port=0,
properties={},
type="_http._tcp.local.",
)
with patch(
"boschshcpy.session.SHCSession.mdns_info", side_effect=SHCConnectionError
):
result = await hass.config_entries.flow.async_init(
DOMAIN,
data=DISCOVERY_INFO_LINK_LOCAL,
context={"source": config_entries.SOURCE_ZEROCONF},
)
assert result["type"] == "abort"
assert result["reason"] == "cannot_connect"
async def test_zeroconf_not_bosch_shc(hass, mock_zeroconf):
"""Test we filter out non-bosch_shc devices."""
result = await hass.config_entries.flow.async_init(