mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 20:57:21 +00:00
Use IP address instead of hostname in Brother integration (#73556)
This commit is contained in:
parent
7731cfd978
commit
c2b484e38b
@ -83,8 +83,7 @@ class BrotherConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
||||
self, discovery_info: zeroconf.ZeroconfServiceInfo
|
||||
) -> FlowResult:
|
||||
"""Handle zeroconf discovery."""
|
||||
# Hostname is format: brother.local.
|
||||
self.host = discovery_info.hostname.rstrip(".")
|
||||
self.host = discovery_info.host
|
||||
|
||||
# Do not probe the device if the host is already configured
|
||||
self._async_abort_entries_match({CONF_HOST: self.host})
|
||||
@ -102,7 +101,7 @@ class BrotherConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
||||
|
||||
# Check if already configured
|
||||
await self.async_set_unique_id(self.brother.serial.lower())
|
||||
self._abort_if_unique_id_configured()
|
||||
self._abort_if_unique_id_configured({CONF_HOST: self.host})
|
||||
|
||||
self.context.update(
|
||||
{
|
||||
|
@ -12,7 +12,7 @@ from homeassistant.const import CONF_HOST, CONF_TYPE
|
||||
|
||||
from tests.common import MockConfigEntry, load_fixture
|
||||
|
||||
CONFIG = {CONF_HOST: "localhost", CONF_TYPE: "laser"}
|
||||
CONFIG = {CONF_HOST: "127.0.0.1", CONF_TYPE: "laser"}
|
||||
|
||||
|
||||
async def test_show_form(hass):
|
||||
@ -32,13 +32,15 @@ async def test_create_entry_with_hostname(hass):
|
||||
return_value=json.loads(load_fixture("printer_data.json", "brother")),
|
||||
):
|
||||
result = await hass.config_entries.flow.async_init(
|
||||
DOMAIN, context={"source": SOURCE_USER}, data=CONFIG
|
||||
DOMAIN,
|
||||
context={"source": SOURCE_USER},
|
||||
data={CONF_HOST: "example.local", CONF_TYPE: "laser"},
|
||||
)
|
||||
|
||||
assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY
|
||||
assert result["title"] == "HL-L2340DW 0123456789"
|
||||
assert result["data"][CONF_HOST] == CONFIG[CONF_HOST]
|
||||
assert result["data"][CONF_TYPE] == CONFIG[CONF_TYPE]
|
||||
assert result["data"][CONF_HOST] == "example.local"
|
||||
assert result["data"][CONF_TYPE] == "laser"
|
||||
|
||||
|
||||
async def test_create_entry_with_ipv4_address(hass):
|
||||
@ -48,9 +50,7 @@ async def test_create_entry_with_ipv4_address(hass):
|
||||
return_value=json.loads(load_fixture("printer_data.json", "brother")),
|
||||
):
|
||||
result = await hass.config_entries.flow.async_init(
|
||||
DOMAIN,
|
||||
context={"source": SOURCE_USER},
|
||||
data={CONF_HOST: "127.0.0.1", CONF_TYPE: "laser"},
|
||||
DOMAIN, context={"source": SOURCE_USER}, data=CONFIG
|
||||
)
|
||||
|
||||
assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY
|
||||
@ -145,7 +145,7 @@ async def test_zeroconf_snmp_error(hass):
|
||||
DOMAIN,
|
||||
context={"source": SOURCE_ZEROCONF},
|
||||
data=zeroconf.ZeroconfServiceInfo(
|
||||
host="mock_host",
|
||||
host="127.0.0.1",
|
||||
addresses=["mock_host"],
|
||||
hostname="example.local.",
|
||||
name="Brother Printer",
|
||||
@ -166,7 +166,7 @@ async def test_zeroconf_unsupported_model(hass):
|
||||
DOMAIN,
|
||||
context={"source": SOURCE_ZEROCONF},
|
||||
data=zeroconf.ZeroconfServiceInfo(
|
||||
host="mock_host",
|
||||
host="127.0.0.1",
|
||||
addresses=["mock_host"],
|
||||
hostname="example.local.",
|
||||
name="Brother Printer",
|
||||
@ -187,15 +187,18 @@ async def test_zeroconf_device_exists_abort(hass):
|
||||
"brother.Brother._get_data",
|
||||
return_value=json.loads(load_fixture("printer_data.json", "brother")),
|
||||
):
|
||||
MockConfigEntry(domain=DOMAIN, unique_id="0123456789", data=CONFIG).add_to_hass(
|
||||
hass
|
||||
entry = MockConfigEntry(
|
||||
domain=DOMAIN,
|
||||
unique_id="0123456789",
|
||||
data={CONF_HOST: "example.local", CONF_TYPE: "laser"},
|
||||
)
|
||||
entry.add_to_hass(hass)
|
||||
|
||||
result = await hass.config_entries.flow.async_init(
|
||||
DOMAIN,
|
||||
context={"source": SOURCE_ZEROCONF},
|
||||
data=zeroconf.ZeroconfServiceInfo(
|
||||
host="mock_host",
|
||||
host="127.0.0.1",
|
||||
addresses=["mock_host"],
|
||||
hostname="example.local.",
|
||||
name="Brother Printer",
|
||||
@ -208,6 +211,9 @@ async def test_zeroconf_device_exists_abort(hass):
|
||||
assert result["type"] == data_entry_flow.RESULT_TYPE_ABORT
|
||||
assert result["reason"] == "already_configured"
|
||||
|
||||
# Test config entry got updated with latest IP
|
||||
assert entry.data["host"] == "127.0.0.1"
|
||||
|
||||
|
||||
async def test_zeroconf_no_probe_existing_device(hass):
|
||||
"""Test we do not probe the device is the host is already configured."""
|
||||
@ -218,9 +224,9 @@ async def test_zeroconf_no_probe_existing_device(hass):
|
||||
DOMAIN,
|
||||
context={"source": SOURCE_ZEROCONF},
|
||||
data=zeroconf.ZeroconfServiceInfo(
|
||||
host="mock_host",
|
||||
host="127.0.0.1",
|
||||
addresses=["mock_host"],
|
||||
hostname="localhost",
|
||||
hostname="example.local.",
|
||||
name="Brother Printer",
|
||||
port=None,
|
||||
properties={},
|
||||
@ -245,7 +251,7 @@ async def test_zeroconf_confirm_create_entry(hass):
|
||||
DOMAIN,
|
||||
context={"source": SOURCE_ZEROCONF},
|
||||
data=zeroconf.ZeroconfServiceInfo(
|
||||
host="mock_host",
|
||||
host="127.0.0.1",
|
||||
addresses=["mock_host"],
|
||||
hostname="example.local.",
|
||||
name="Brother Printer",
|
||||
@ -266,5 +272,5 @@ async def test_zeroconf_confirm_create_entry(hass):
|
||||
|
||||
assert result["type"] == data_entry_flow.RESULT_TYPE_CREATE_ENTRY
|
||||
assert result["title"] == "HL-L2340DW 0123456789"
|
||||
assert result["data"][CONF_HOST] == "example.local"
|
||||
assert result["data"][CONF_HOST] == "127.0.0.1"
|
||||
assert result["data"][CONF_TYPE] == "laser"
|
||||
|
Loading…
x
Reference in New Issue
Block a user