diff --git a/tests/components/hue/conftest.py b/tests/components/hue/conftest.py index 0ebeaca9b88..9e9ed9af31b 100644 --- a/tests/components/hue/conftest.py +++ b/tests/components/hue/conftest.py @@ -22,8 +22,6 @@ from tests.common import ( mock_device_registry, ) -# from tests.components.light.conftest import mock_light_profiles # noqa: F401 - @pytest.fixture(autouse=True) def no_request_delay(): @@ -248,9 +246,12 @@ async def setup_component(hass): async def setup_bridge(hass, mock_bridge, config_entry): """Load the Hue integration with the provided bridge.""" mock_bridge.config_entry = config_entry - config_entry.add_to_hass(hass) - with patch("homeassistant.components.hue.HueBridge", return_value=mock_bridge): - await hass.config_entries.async_setup(config_entry.entry_id) + with patch.object( + hue.migration, "is_v2_bridge", return_value=mock_bridge.api_version == 2 + ): + config_entry.add_to_hass(hass) + with patch("homeassistant.components.hue.HueBridge", return_value=mock_bridge): + await hass.config_entries.async_setup(config_entry.entry_id) async def setup_platform( @@ -283,22 +284,6 @@ async def setup_platform( await hass.async_block_till_done() -@pytest.fixture -def mock_bridge_setup(): - """Mock bridge setup.""" - with patch.object(hue, "HueBridge") as mock_bridge: - mock_bridge.return_value.async_initialize_bridge = AsyncMock(return_value=True) - mock_bridge.return_value.api_version = 1 - mock_bridge.return_value.api.config = Mock( - bridge_id="mock-id", - mac_address="00:00:00:00:00:00", - software_version="1.0.0", - model_id="BSB002", - ) - mock_bridge.return_value.api.config.name = "Mock Hue bridge" - yield mock_bridge.return_value - - @pytest.fixture(name="device_reg") def get_device_reg(hass): """Return an empty, loaded, registry.""" diff --git a/tests/components/hue/test_config_flow.py b/tests/components/hue/test_config_flow.py index ca5be5e28e9..80e1a8909b9 100644 --- a/tests/components/hue/test_config_flow.py +++ b/tests/components/hue/test_config_flow.py @@ -723,7 +723,7 @@ async def test_bridge_zeroconf(hass, aioclient_mock): data=zeroconf.ZeroconfServiceInfo( host="192.168.1.217", port=443, - hostname="Philips-hue.local.", + hostname="Philips-hue.local", type="_hue._tcp.local.", name="Philips Hue - ABCABC._hue._tcp.local.", properties={ @@ -740,7 +740,9 @@ async def test_bridge_zeroconf(hass, aioclient_mock): async def test_bridge_zeroconf_already_exists(hass, aioclient_mock): """Test a bridge being discovered by zeroconf already exists.""" - create_mock_api_discovery(aioclient_mock, [("192.168.1.217", "ecb5faabcabc")]) + create_mock_api_discovery( + aioclient_mock, [("0.0.0.0", "ecb5faabcabc"), ("192.168.1.217", "ecb5faabcabc")] + ) entry = MockConfigEntry( domain="hue", source=config_entries.SOURCE_SSDP, @@ -754,7 +756,7 @@ async def test_bridge_zeroconf_already_exists(hass, aioclient_mock): data=zeroconf.ZeroconfServiceInfo( host="192.168.1.217", port=443, - hostname="Philips-hue.local.", + hostname="Philips-hue.local", type="_hue._tcp.local.", name="Philips Hue - ABCABC._hue._tcp.local.", properties={ diff --git a/tests/components/hue/test_init.py b/tests/components/hue/test_init.py index b44a638669e..3bce9f9ec83 100644 --- a/tests/components/hue/test_init.py +++ b/tests/components/hue/test_init.py @@ -1,6 +1,7 @@ """Test Hue setup process.""" from unittest.mock import AsyncMock, Mock, patch +import aiohue.v2 as aiohue_v2 import pytest from homeassistant import config_entries @@ -10,17 +11,22 @@ from homeassistant.setup import async_setup_component from tests.common import MockConfigEntry -@pytest.fixture(name="mock_bridge_setup") -def get_mock_bridge_setup(): +@pytest.fixture +def mock_bridge_setup(): """Mock bridge setup.""" with patch.object(hue, "HueBridge") as mock_bridge: + mock_bridge.return_value.api_version = 2 mock_bridge.return_value.async_initialize_bridge = AsyncMock(return_value=True) - mock_bridge.return_value.api_version = 1 mock_bridge.return_value.api.config = Mock( bridge_id="mock-id", mac_address="00:00:00:00:00:00", - software_version="1.0.0", model_id="BSB002", + software_version="1.0.0", + bridge_device=Mock( + id="4a507550-8742-4087-8bf5-c2334f29891c", + product_data=Mock(manufacturer_name="Mock"), + ), + spec=aiohue_v2.ConfigController, ) mock_bridge.return_value.api.config.name = "Mock Hue bridge" yield mock_bridge.return_value @@ -39,7 +45,9 @@ async def test_setup_with_no_config(hass): async def test_unload_entry(hass, mock_bridge_setup): """Test being able to unload an entry.""" - entry = MockConfigEntry(domain=hue.DOMAIN, data={"host": "0.0.0.0"}) + entry = MockConfigEntry( + domain=hue.DOMAIN, data={"host": "0.0.0.0", "api_version": 2} + ) entry.add_to_hass(hass) assert await async_setup_component(hass, hue.DOMAIN, {}) is True @@ -58,7 +66,9 @@ async def test_unload_entry(hass, mock_bridge_setup): async def test_setting_unique_id(hass, mock_bridge_setup): """Test we set unique ID if not set yet.""" - entry = MockConfigEntry(domain=hue.DOMAIN, data={"host": "0.0.0.0"}) + entry = MockConfigEntry( + domain=hue.DOMAIN, data={"host": "0.0.0.0", "api_version": 2} + ) entry.add_to_hass(hass) assert await async_setup_component(hass, hue.DOMAIN, {}) is True assert entry.unique_id == "mock-id" @@ -67,7 +77,9 @@ async def test_setting_unique_id(hass, mock_bridge_setup): async def test_fixing_unique_id_no_other(hass, mock_bridge_setup): """Test we set unique ID if not set yet.""" entry = MockConfigEntry( - domain=hue.DOMAIN, data={"host": "0.0.0.0"}, unique_id="invalid-id" + domain=hue.DOMAIN, + data={"host": "0.0.0.0", "api_version": 2}, + unique_id="invalid-id", ) entry.add_to_hass(hass) assert await async_setup_component(hass, hue.DOMAIN, {}) is True @@ -78,13 +90,13 @@ async def test_fixing_unique_id_other_ignored(hass, mock_bridge_setup): """Test we set unique ID if not set yet.""" MockConfigEntry( domain=hue.DOMAIN, - data={"host": "0.0.0.0"}, + data={"host": "0.0.0.0", "api_version": 2}, unique_id="mock-id", source=config_entries.SOURCE_IGNORE, ).add_to_hass(hass) entry = MockConfigEntry( domain=hue.DOMAIN, - data={"host": "0.0.0.0"}, + data={"host": "0.0.0.0", "api_version": 2}, unique_id="invalid-id", ) entry.add_to_hass(hass) @@ -98,13 +110,13 @@ async def test_fixing_unique_id_other_correct(hass, mock_bridge_setup): """Test we remove config entry if another one has correct ID.""" correct_entry = MockConfigEntry( domain=hue.DOMAIN, - data={"host": "0.0.0.0"}, + data={"host": "0.0.0.0", "api_version": 2}, unique_id="mock-id", ) correct_entry.add_to_hass(hass) entry = MockConfigEntry( domain=hue.DOMAIN, - data={"host": "0.0.0.0"}, + data={"host": "0.0.0.0", "api_version": 2}, unique_id="invalid-id", ) entry.add_to_hass(hass) @@ -121,11 +133,14 @@ async def test_security_vuln_check(hass): entry.add_to_hass(hass) config = Mock( - bridge_id="", mac_address="", model_id="BSB002", software_version="1935144020" + bridge_id="", + mac_address="", + model_id="BSB002", + software_version="1935144020", ) config.name = "Hue" - with patch.object( + with patch.object(hue.migration, "is_v2_bridge", return_value=False), patch.object( hue, "HueBridge", Mock(