async def test_device_tracker_ignore_self_assigned_ips_before_start(hass): """Test matching ignores self assigned ip address.""" hass.states.async_set( "device_tracker.august_connect", STATE_HOME, { ATTR_HOST_NAME: "connect", ATTR_IP: "169.254.210.56", ATTR_SOURCE_TYPE: SOURCE_TYPE_ROUTER, ATTR_MAC: "B8:B7:F1:6D:B5:33", }, ) with patch.object(hass.config_entries.flow, "async_init") as mock_init: device_tracker_watcher = dhcp.DeviceTrackerWatcher( 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) == 0
async def test_device_tracker_hostname_and_macaddress_after_start_hostname_missing( hass, ): """Test matching based on hostname and macaddress after start but missing hostname.""" with patch.object(hass.config_entries.flow, "async_init") as mock_init: device_tracker_watcher = dhcp.DeviceTrackerWatcher( hass, {}, [{ "domain": "mock-domain", "hostname": "connect", "macaddress": "B8B7F1*" }], ) await device_tracker_watcher.async_start() await hass.async_block_till_done() hass.states.async_set( "device_tracker.august_connect", STATE_HOME, { ATTR_IP: "192.168.210.56", ATTR_SOURCE_TYPE: SOURCE_TYPE_ROUTER, ATTR_MAC: "B8:B7:F1:6D:B5:33", }, ) await hass.async_block_till_done() await device_tracker_watcher.async_stop() await hass.async_block_till_done() assert len(mock_init.mock_calls) == 0
async def test_device_tracker_hostname_and_macaddress_after_start_not_router( hass): """Test matching based on hostname and macaddress after start but not router.""" with patch.object(hass.config_entries.flow, "async_init", return_value=mock_coro()) as mock_init: device_tracker_watcher = dhcp.DeviceTrackerWatcher( hass, {}, [{ "domain": "mock-domain", "hostname": "connect", "macaddress": "B8B7F1*" }], ) device_tracker_watcher.async_start() await hass.async_block_till_done() hass.states.async_set( "device_tracker.august_connect", STATE_HOME, { ATTR_HOST_NAME: "connect", ATTR_IP: "192.168.210.56", ATTR_SOURCE_TYPE: "something_else", ATTR_MAC: "B8:B7:F1:6D:B5:33", }, ) await hass.async_block_till_done() device_tracker_watcher.async_stop() await hass.async_block_till_done() assert len(mock_init.mock_calls) == 0
async def test_device_tracker_hostname_and_macaddress_after_start(hass): """Test matching based on hostname and macaddress after start.""" with patch.object(hass.config_entries.flow, "async_init") as mock_init: device_tracker_watcher = dhcp.DeviceTrackerWatcher( hass, {}, [{"domain": "mock-domain", "hostname": "connect", "macaddress": "B8B7F1*"}], ) await device_tracker_watcher.async_start() await hass.async_block_till_done() hass.states.async_set( "device_tracker.august_connect", STATE_HOME, { ATTR_HOST_NAME: "Connect", ATTR_IP: "192.168.210.56", ATTR_SOURCE_TYPE: SOURCE_TYPE_ROUTER, ATTR_MAC: "B8:B7:F1:6D:B5:33", }, ) 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", )
async def test_device_tracker_hostname_and_macaddress_exists_before_start(hass): """Test matching based on hostname and macaddress before start.""" hass.states.async_set( "device_tracker.august_connect", STATE_HOME, { ATTR_HOST_NAME: "connect", ATTR_IP: "192.168.210.56", ATTR_SOURCE_TYPE: SOURCE_TYPE_ROUTER, ATTR_MAC: "B8:B7:F1:6D:B5:33", }, ) with patch.object( hass.config_entries.flow, "async_init", return_value=mock_coro() ) as mock_init: device_tracker_watcher = dhcp.DeviceTrackerWatcher( 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": "dhcp"} assert mock_init.mock_calls[0][2]["data"] == { dhcp.IP_ADDRESS: "192.168.210.56", dhcp.HOSTNAME: "connect", dhcp.MAC_ADDRESS: "b8b7f16db533", }