コード例 #1
0
ファイル: test_init.py プロジェクト: home-ha/home-assistant
async def test_aiodiscover_finds_new_hosts(hass):
    """Test aiodiscover finds new host."""
    with patch.object(
            hass.config_entries.flow, "async_init") as mock_init, patch(
                "homeassistant.components.dhcp.DiscoverHosts.async_discover",
                return_value=[{
                    dhcp.DISCOVERY_IP_ADDRESS: "192.168.210.56",
                    dhcp.DISCOVERY_HOSTNAME: "connect",
                    dhcp.DISCOVERY_MAC_ADDRESS: "b8b7f16db533",
                }],
            ):
        device_tracker_watcher = dhcp.NetworkWatcher(
            hass,
            {},
            [{
                "domain": "mock-domain",
                "hostname": "connect",
                "macaddress": "B8B7F1*"
            }],
        )
        await device_tracker_watcher.async_start()
        await hass.async_block_till_done()
        await device_tracker_watcher.async_stop()
        await hass.async_block_till_done()

    assert len(mock_init.mock_calls) == 1
    assert mock_init.mock_calls[0][1][0] == "mock-domain"
    assert mock_init.mock_calls[0][2]["context"] == {
        "source": config_entries.SOURCE_DHCP
    }
    assert mock_init.mock_calls[0][2]["data"] == {
        dhcp.IP_ADDRESS: "192.168.210.56",
        dhcp.HOSTNAME: "connect",
        dhcp.MAC_ADDRESS: "b8b7f16db533",
    }
コード例 #2
0
ファイル: test_init.py プロジェクト: testitesti22/core-1
async def test_aiodiscover_does_not_call_again_on_shorter_hostname(hass):
    """Verify longer hostnames generate a new flow but shorter ones do not.

    Some routers will truncate hostnames so we want to accept
    additional discovery where the hostname is longer and then
    reject shorter ones.
    """
    with patch.object(
            hass.config_entries.flow, "async_init") as mock_init, patch(
                "homeassistant.components.dhcp.DiscoverHosts.async_discover",
                return_value=[
                    {
                        dhcp.DISCOVERY_IP_ADDRESS: "192.168.210.56",
                        dhcp.DISCOVERY_HOSTNAME: "irobot-abc",
                        dhcp.DISCOVERY_MAC_ADDRESS: "b8b7f16db533",
                    },
                    {
                        dhcp.DISCOVERY_IP_ADDRESS: "192.168.210.56",
                        dhcp.DISCOVERY_HOSTNAME: "irobot-abcdef",
                        dhcp.DISCOVERY_MAC_ADDRESS: "b8b7f16db533",
                    },
                    {
                        dhcp.DISCOVERY_IP_ADDRESS: "192.168.210.56",
                        dhcp.DISCOVERY_HOSTNAME: "irobot-abc",
                        dhcp.DISCOVERY_MAC_ADDRESS: "b8b7f16db533",
                    },
                ],
            ):
        device_tracker_watcher = dhcp.NetworkWatcher(
            hass,
            {},
            [{
                "domain": "mock-domain",
                "hostname": "irobot-*",
                "macaddress": "B8B7F1*",
            }],
        )
        await device_tracker_watcher.async_start()
        await hass.async_block_till_done()
        await device_tracker_watcher.async_stop()
        await hass.async_block_till_done()

    assert len(mock_init.mock_calls) == 2
    assert mock_init.mock_calls[0][1][0] == "mock-domain"
    assert mock_init.mock_calls[0][2]["context"] == {"source": "dhcp"}
    assert mock_init.mock_calls[0][2]["data"] == {
        dhcp.IP_ADDRESS: "192.168.210.56",
        dhcp.HOSTNAME: "irobot-abc",
        dhcp.MAC_ADDRESS: "b8b7f16db533",
    }
    assert mock_init.mock_calls[1][1][0] == "mock-domain"
    assert mock_init.mock_calls[1][2]["context"] == {"source": "dhcp"}
    assert mock_init.mock_calls[1][2]["data"] == {
        dhcp.IP_ADDRESS: "192.168.210.56",
        dhcp.HOSTNAME: "irobot-abcdef",
        dhcp.MAC_ADDRESS: "b8b7f16db533",
    }
コード例 #3
0
async def test_aiodiscover_finds_new_hosts_after_interval(hass):
    """Test aiodiscover finds new host after interval."""
    with patch.object(
            hass.config_entries.flow, "async_init") as mock_init, patch(
                "homeassistant.components.dhcp.DiscoverHosts.async_discover",
                return_value=[],
            ):
        device_tracker_watcher = dhcp.NetworkWatcher(
            hass,
            {},
            [{
                "domain": "mock-domain",
                "hostname": "connect",
                "macaddress": "B8B7F1*"
            }],
        )
        await device_tracker_watcher.async_start()
        await hass.async_block_till_done()

    assert len(mock_init.mock_calls) == 0

    with patch.object(
            hass.config_entries.flow, "async_init") as mock_init, patch(
                "homeassistant.components.dhcp.DiscoverHosts.async_discover",
                return_value=[{
                    dhcp.DISCOVERY_IP_ADDRESS: "192.168.210.56",
                    dhcp.DISCOVERY_HOSTNAME: "connect",
                    dhcp.DISCOVERY_MAC_ADDRESS: "b8b7f16db533",
                }],
            ):
        async_fire_time_changed(
            hass,
            dt_util.utcnow() + datetime.timedelta(minutes=65))
        await hass.async_block_till_done()
        await device_tracker_watcher.async_stop()
        await hass.async_block_till_done()

    assert len(mock_init.mock_calls) == 1
    assert mock_init.mock_calls[0][1][0] == "mock-domain"
    assert mock_init.mock_calls[0][2]["context"] == {
        "source": config_entries.SOURCE_DHCP
    }
    assert mock_init.mock_calls[0][2]["data"] == dhcp.DhcpServiceInfo(
        ip="192.168.210.56",
        hostname="connect",
        macaddress="b8b7f16db533",
    )