mirror of
https://github.com/home-assistant/core.git
synced 2025-07-17 10:17:09 +00:00
ISY994: Add dhcp support for eisy (#85083)
This commit is contained in:
parent
5169721916
commit
e150b0cf0f
@ -202,7 +202,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
|||||||
async def async_step_dhcp(self, discovery_info: dhcp.DhcpServiceInfo) -> FlowResult:
|
async def async_step_dhcp(self, discovery_info: dhcp.DhcpServiceInfo) -> FlowResult:
|
||||||
"""Handle a discovered ISY/IoX device via dhcp."""
|
"""Handle a discovered ISY/IoX device via dhcp."""
|
||||||
friendly_name = discovery_info.hostname
|
friendly_name = discovery_info.hostname
|
||||||
if friendly_name.startswith("polisy"):
|
if friendly_name.startswith("polisy") or friendly_name.startswith("eisy"):
|
||||||
url = f"http://{discovery_info.ip}:8080"
|
url = f"http://{discovery_info.ip}:8080"
|
||||||
else:
|
else:
|
||||||
url = f"http://{discovery_info.ip}"
|
url = f"http://{discovery_info.ip}"
|
||||||
|
@ -20,6 +20,10 @@
|
|||||||
"hostname": "isy*",
|
"hostname": "isy*",
|
||||||
"macaddress": "0021B9*"
|
"macaddress": "0021B9*"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"hostname": "eisy*",
|
||||||
|
"macaddress": "0021B9*"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"hostname": "polisy*",
|
"hostname": "polisy*",
|
||||||
"macaddress": "000DB9*"
|
"macaddress": "000DB9*"
|
||||||
|
@ -239,6 +239,11 @@ DHCP: list[dict[str, str | bool]] = [
|
|||||||
"hostname": "isy*",
|
"hostname": "isy*",
|
||||||
"macaddress": "0021B9*",
|
"macaddress": "0021B9*",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"domain": "isy994",
|
||||||
|
"hostname": "eisy*",
|
||||||
|
"macaddress": "0021B9*",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"domain": "isy994",
|
"domain": "isy994",
|
||||||
"hostname": "polisy*",
|
"hostname": "polisy*",
|
||||||
|
@ -44,7 +44,7 @@ MOCK_USER_INPUT = {
|
|||||||
CONF_PASSWORD: MOCK_PASSWORD,
|
CONF_PASSWORD: MOCK_PASSWORD,
|
||||||
CONF_TLS_VER: MOCK_TLS_VERSION,
|
CONF_TLS_VER: MOCK_TLS_VERSION,
|
||||||
}
|
}
|
||||||
MOCK_POLISY_USER_INPUT = {
|
MOCK_IOX_USER_INPUT = {
|
||||||
CONF_HOST: f"http://{MOCK_HOSTNAME}:8080",
|
CONF_HOST: f"http://{MOCK_HOSTNAME}:8080",
|
||||||
CONF_USERNAME: MOCK_USERNAME,
|
CONF_USERNAME: MOCK_USERNAME,
|
||||||
CONF_PASSWORD: MOCK_PASSWORD,
|
CONF_PASSWORD: MOCK_PASSWORD,
|
||||||
@ -587,14 +587,54 @@ async def test_form_dhcp_with_polisy(hass: HomeAssistant):
|
|||||||
) as mock_setup_entry:
|
) as mock_setup_entry:
|
||||||
result2 = await hass.config_entries.flow.async_configure(
|
result2 = await hass.config_entries.flow.async_configure(
|
||||||
result["flow_id"],
|
result["flow_id"],
|
||||||
MOCK_POLISY_USER_INPUT,
|
MOCK_IOX_USER_INPUT,
|
||||||
)
|
)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
assert result2["type"] == data_entry_flow.FlowResultType.CREATE_ENTRY
|
assert result2["type"] == data_entry_flow.FlowResultType.CREATE_ENTRY
|
||||||
assert result2["title"] == f"{MOCK_DEVICE_NAME} ({MOCK_HOSTNAME})"
|
assert result2["title"] == f"{MOCK_DEVICE_NAME} ({MOCK_HOSTNAME})"
|
||||||
assert result2["result"].unique_id == MOCK_UUID
|
assert result2["result"].unique_id == MOCK_UUID
|
||||||
assert result2["data"] == MOCK_POLISY_USER_INPUT
|
assert result2["data"] == MOCK_IOX_USER_INPUT
|
||||||
|
assert len(mock_setup.mock_calls) == 1
|
||||||
|
assert len(mock_setup_entry.mock_calls) == 1
|
||||||
|
|
||||||
|
|
||||||
|
async def test_form_dhcp_with_eisy(hass: HomeAssistant):
|
||||||
|
"""Test we can setup from dhcp with eisy."""
|
||||||
|
|
||||||
|
result = await hass.config_entries.flow.async_init(
|
||||||
|
DOMAIN,
|
||||||
|
context={"source": SOURCE_DHCP},
|
||||||
|
data=dhcp.DhcpServiceInfo(
|
||||||
|
ip="1.2.3.4",
|
||||||
|
hostname="eisy",
|
||||||
|
macaddress=MOCK_MAC,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
assert result["type"] == data_entry_flow.FlowResultType.FORM
|
||||||
|
assert result["step_id"] == "user"
|
||||||
|
assert result["errors"] == {}
|
||||||
|
assert (
|
||||||
|
_get_schema_default(result["data_schema"].schema, CONF_HOST)
|
||||||
|
== "http://1.2.3.4:8080"
|
||||||
|
)
|
||||||
|
|
||||||
|
with patch(PATCH_CONNECTION, return_value=MOCK_CONFIG_RESPONSE), patch(
|
||||||
|
PATCH_ASYNC_SETUP, return_value=True
|
||||||
|
) as mock_setup, patch(
|
||||||
|
PATCH_ASYNC_SETUP_ENTRY,
|
||||||
|
return_value=True,
|
||||||
|
) as mock_setup_entry:
|
||||||
|
result2 = await hass.config_entries.flow.async_configure(
|
||||||
|
result["flow_id"],
|
||||||
|
MOCK_IOX_USER_INPUT,
|
||||||
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
assert result2["type"] == data_entry_flow.FlowResultType.CREATE_ENTRY
|
||||||
|
assert result2["title"] == f"{MOCK_DEVICE_NAME} ({MOCK_HOSTNAME})"
|
||||||
|
assert result2["result"].unique_id == MOCK_UUID
|
||||||
|
assert result2["data"] == MOCK_IOX_USER_INPUT
|
||||||
assert len(mock_setup.mock_calls) == 1
|
assert len(mock_setup.mock_calls) == 1
|
||||||
assert len(mock_setup_entry.mock_calls) == 1
|
assert len(mock_setup_entry.mock_calls) == 1
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user