forked from home-assistant/core
Add DHCP discovery to Amazon Devices (#145587)
* Add DHCP discovery to Amazon Devices * Add DHCP discovery to Amazon Devices * Add DHCP discovery to Amazon Devices
This commit is contained in:
committed by
GitHub
parent
d0b2331a5f
commit
6634efa3aa
@@ -3,6 +3,17 @@
|
|||||||
"name": "Amazon Devices",
|
"name": "Amazon Devices",
|
||||||
"codeowners": ["@chemelli74"],
|
"codeowners": ["@chemelli74"],
|
||||||
"config_flow": true,
|
"config_flow": true,
|
||||||
|
"dhcp": [
|
||||||
|
{ "macaddress": "10BF67*" },
|
||||||
|
{ "macaddress": "48B423*" },
|
||||||
|
{ "macaddress": "4C1744*" },
|
||||||
|
{ "macaddress": "50DCE7*" },
|
||||||
|
{ "macaddress": "74D637*" },
|
||||||
|
{ "macaddress": "9CC8E9*" },
|
||||||
|
{ "macaddress": "C095CF*" },
|
||||||
|
{ "macaddress": "D8BE65*" },
|
||||||
|
{ "macaddress": "EC2BEB*" }
|
||||||
|
],
|
||||||
"documentation": "https://www.home-assistant.io/integrations/amazon_devices",
|
"documentation": "https://www.home-assistant.io/integrations/amazon_devices",
|
||||||
"integration_type": "hub",
|
"integration_type": "hub",
|
||||||
"iot_class": "cloud_polling",
|
"iot_class": "cloud_polling",
|
||||||
|
@@ -42,8 +42,10 @@ rules:
|
|||||||
# Gold
|
# Gold
|
||||||
devices: done
|
devices: done
|
||||||
diagnostics: todo
|
diagnostics: todo
|
||||||
discovery-update-info: todo
|
discovery-update-info:
|
||||||
discovery: todo
|
status: exempt
|
||||||
|
comment: Network information not relevant
|
||||||
|
discovery: done
|
||||||
docs-data-update: todo
|
docs-data-update: todo
|
||||||
docs-examples: todo
|
docs-examples: todo
|
||||||
docs-known-limitations: todo
|
docs-known-limitations: todo
|
||||||
|
36
homeassistant/generated/dhcp.py
generated
36
homeassistant/generated/dhcp.py
generated
@@ -26,6 +26,42 @@ DHCP: Final[list[dict[str, str | bool]]] = [
|
|||||||
"domain": "airzone",
|
"domain": "airzone",
|
||||||
"macaddress": "E84F25*",
|
"macaddress": "E84F25*",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"domain": "amazon_devices",
|
||||||
|
"macaddress": "10BF67*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"domain": "amazon_devices",
|
||||||
|
"macaddress": "48B423*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"domain": "amazon_devices",
|
||||||
|
"macaddress": "4C1744*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"domain": "amazon_devices",
|
||||||
|
"macaddress": "50DCE7*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"domain": "amazon_devices",
|
||||||
|
"macaddress": "74D637*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"domain": "amazon_devices",
|
||||||
|
"macaddress": "9CC8E9*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"domain": "amazon_devices",
|
||||||
|
"macaddress": "C095CF*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"domain": "amazon_devices",
|
||||||
|
"macaddress": "D8BE65*",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"domain": "amazon_devices",
|
||||||
|
"macaddress": "EC2BEB*",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"domain": "august",
|
"domain": "august",
|
||||||
"hostname": "connect",
|
"hostname": "connect",
|
||||||
|
@@ -6,15 +6,22 @@ from aioamazondevices.exceptions import CannotAuthenticate, CannotConnect
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from homeassistant.components.amazon_devices.const import CONF_LOGIN_DATA, DOMAIN
|
from homeassistant.components.amazon_devices.const import CONF_LOGIN_DATA, DOMAIN
|
||||||
from homeassistant.config_entries import SOURCE_USER
|
from homeassistant.config_entries import SOURCE_DHCP, SOURCE_USER
|
||||||
from homeassistant.const import CONF_CODE, CONF_COUNTRY, CONF_PASSWORD, CONF_USERNAME
|
from homeassistant.const import CONF_CODE, CONF_COUNTRY, CONF_PASSWORD, CONF_USERNAME
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.data_entry_flow import FlowResultType
|
from homeassistant.data_entry_flow import FlowResultType
|
||||||
|
from homeassistant.helpers.service_info.dhcp import DhcpServiceInfo
|
||||||
|
|
||||||
from .const import TEST_CODE, TEST_COUNTRY, TEST_PASSWORD, TEST_USERNAME
|
from .const import TEST_CODE, TEST_COUNTRY, TEST_PASSWORD, TEST_USERNAME
|
||||||
|
|
||||||
from tests.common import MockConfigEntry
|
from tests.common import MockConfigEntry
|
||||||
|
|
||||||
|
DHCP_DISCOVERY = DhcpServiceInfo(
|
||||||
|
ip="1.1.1.1",
|
||||||
|
hostname="",
|
||||||
|
macaddress="c095cfebf19f",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
async def test_full_flow(
|
async def test_full_flow(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
@@ -132,3 +139,58 @@ async def test_already_configured(
|
|||||||
|
|
||||||
assert result["type"] is FlowResultType.ABORT
|
assert result["type"] is FlowResultType.ABORT
|
||||||
assert result["reason"] == "already_configured"
|
assert result["reason"] == "already_configured"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_dhcp_flow(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
mock_amazon_devices_client: AsyncMock,
|
||||||
|
mock_setup_entry: AsyncMock,
|
||||||
|
) -> None:
|
||||||
|
"""Test full DHCP flow."""
|
||||||
|
result = await hass.config_entries.flow.async_init(
|
||||||
|
DOMAIN,
|
||||||
|
context={"source": SOURCE_DHCP},
|
||||||
|
data=DHCP_DISCOVERY,
|
||||||
|
)
|
||||||
|
assert result["type"] is FlowResultType.FORM
|
||||||
|
assert result["step_id"] == "user"
|
||||||
|
|
||||||
|
result = await hass.config_entries.flow.async_configure(
|
||||||
|
result["flow_id"],
|
||||||
|
{
|
||||||
|
CONF_COUNTRY: TEST_COUNTRY,
|
||||||
|
CONF_USERNAME: TEST_USERNAME,
|
||||||
|
CONF_PASSWORD: TEST_PASSWORD,
|
||||||
|
CONF_CODE: TEST_CODE,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
assert result["type"] is FlowResultType.CREATE_ENTRY
|
||||||
|
assert result["title"] == TEST_USERNAME
|
||||||
|
assert result["data"] == {
|
||||||
|
CONF_COUNTRY: TEST_COUNTRY,
|
||||||
|
CONF_USERNAME: TEST_USERNAME,
|
||||||
|
CONF_PASSWORD: TEST_PASSWORD,
|
||||||
|
CONF_LOGIN_DATA: {
|
||||||
|
"customer_info": {"user_id": TEST_USERNAME},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
assert result["result"].unique_id == TEST_USERNAME
|
||||||
|
|
||||||
|
|
||||||
|
async def test_dhcp_already_configured(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
mock_amazon_devices_client: AsyncMock,
|
||||||
|
mock_setup_entry: AsyncMock,
|
||||||
|
mock_config_entry: MockConfigEntry,
|
||||||
|
) -> None:
|
||||||
|
"""Test duplicate flow."""
|
||||||
|
mock_config_entry.add_to_hass(hass)
|
||||||
|
|
||||||
|
result = await hass.config_entries.flow.async_init(
|
||||||
|
DOMAIN,
|
||||||
|
context={"source": SOURCE_DHCP},
|
||||||
|
data=DHCP_DISCOVERY,
|
||||||
|
)
|
||||||
|
|
||||||
|
assert result["type"] is FlowResultType.ABORT
|
||||||
|
assert result["reason"] == "already_configured"
|
||||||
|
Reference in New Issue
Block a user