From 9bf13231f705c2a20d1d551cbb535ab5efacd0f8 Mon Sep 17 00:00:00 2001 From: Johan Bloemberg Date: Sun, 4 Dec 2016 18:51:40 +0100 Subject: [PATCH] Actually test calling async macvendor lookup and fix it. (#4718) --- .../components/device_tracker/__init__.py | 2 +- tests/components/device_tracker/test_init.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index 91f0720e927..4c27b4075e3 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -282,7 +282,7 @@ class DeviceTracker(object): list(self.group.tracking) + [device.entity_id]) # lookup mac vendor string to be stored in config - device.set_vendor_for_mac() + yield from device.set_vendor_for_mac() # update known_devices.yaml self.hass.async_add_job( diff --git a/tests/components/device_tracker/test_init.py b/tests/components/device_tracker/test_init.py index e2ee21ab90d..013920985ff 100644 --- a/tests/components/device_tracker/test_init.py +++ b/tests/components/device_tracker/test_init.py @@ -256,6 +256,24 @@ class TestComponentsDeviceTracker(unittest.TestCase): self.assertEqual(device.vendor, 'unknown') + def test_mac_vendor_lookup_on_see(self): + """Test if macvendor is looked up when device is seen.""" + mac = 'B8:27:EB:00:00:00' + vendor_string = 'Raspberry Pi Foundation' + + tracker = device_tracker.DeviceTracker( + self.hass, timedelta(seconds=60), 0, []) + + with mock_aiohttp_client() as aioclient_mock: + aioclient_mock.get('http://api.macvendors.com/b8:27:eb', + text=vendor_string) + + run_coroutine_threadsafe( + tracker.async_see(mac=mac), self.hass.loop).result() + assert aioclient_mock.call_count == 1, \ + 'No http request for macvendor made!' + self.assertEqual(tracker.devices['b827eb000000'].vendor, vendor_string) + def test_discovery(self): """Test discovery.""" scanner = get_component('device_tracker.test').SCANNER