Add tests that exercise nest dhcp discovery behavior (#62526)

* Add tests that exercise nest dhcp discovery

Add tests that exercise the behavior of dhcp discovery for nest,
which is effectively that it doesn't work -- it only works when
you have already added a configuration.yaml.

Discovery can be made to work by using an entirely config flow
driven approach, which is in discussion.

* Adjust whitespace from merge
pull/63533/head
Allen Porter 2022-01-05 17:35:55 -08:00 committed by GitHub
parent 7eacabf684
commit da71e89f53
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 46 additions and 0 deletions

View File

@ -12,6 +12,7 @@ from google_nest_sdm.structure import Structure
import pytest
from homeassistant import config_entries, setup
from homeassistant.components import dhcp
from homeassistant.components.nest.const import DOMAIN, OAUTH2_AUTHORIZE, OAUTH2_TOKEN
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_CLIENT_ID, CONF_CLIENT_SECRET
@ -43,6 +44,11 @@ WEB_REDIRECT_URL = "https://example.com/auth/external/callback"
APP_REDIRECT_URL = "urn:ietf:wg:oauth:2.0:oob"
FAKE_DHCP_DATA = dhcp.DhcpServiceInfo(
ip="127.0.0.2", macaddress="00:11:22:33:44:55", hostname="fake_hostname"
)
@pytest.fixture
def subscriber() -> FakeSubscriber:
"""Create FakeSubscriber."""
@ -723,3 +729,43 @@ async def test_structure_missing_trait(hass, oauth, subscriber):
# Fallback to default name
assert entry.title == "OAuth for Apps"
async def test_dhcp_discovery_without_config(hass, oauth):
"""Exercise discovery dhcp with no config present (can't run)."""
result = await hass.config_entries.flow.async_init(
DOMAIN,
context={"source": config_entries.SOURCE_DHCP},
data=FAKE_DHCP_DATA,
)
await hass.async_block_till_done()
assert result["type"] == "abort"
assert result["reason"] == "missing_configuration"
async def test_dhcp_discovery(hass, oauth):
"""Discover via dhcp when config is present."""
assert await setup.async_setup_component(hass, DOMAIN, CONFIG)
result = await hass.config_entries.flow.async_init(
DOMAIN,
context={"source": config_entries.SOURCE_DHCP},
data=FAKE_DHCP_DATA,
)
await hass.async_block_till_done()
# DHCP discovery invokes the config flow
result = await oauth.async_pick_flow(result, WEB_AUTH_DOMAIN)
await oauth.async_oauth_web_flow(result)
entry = await oauth.async_finish_setup(result)
assert entry.title == "OAuth for Web"
# Discovery does not run once configured
result = await hass.config_entries.flow.async_init(
DOMAIN,
context={"source": config_entries.SOURCE_DHCP},
data=FAKE_DHCP_DATA,
)
await hass.async_block_till_done()
assert result["type"] == "abort"
assert result["reason"] == "already_configured"