"""Test Verisure ethernet status.""" from contextlib import contextmanager from unittest.mock import patch from homeassistant.components.verisure import DOMAIN as VERISURE_DOMAIN from homeassistant.const import STATE_UNAVAILABLE from homeassistant.setup import async_setup_component CONFIG = { "verisure": { "username": "test", "password": "test", "alarm": False, "door_window": False, "hygrometers": False, "mouse": False, "smartplugs": False, "thermometers": False, "smartcam": False, } } @contextmanager def mock_hub(config, response): """Extensively mock out a verisure hub.""" hub_prefix = "homeassistant.components.verisure.binary_sensor.hub" verisure_prefix = "verisure.Session" with patch(verisure_prefix) as session, patch(hub_prefix) as hub: session.login.return_value = True hub.config = config["verisure"] hub.get.return_value = response hub.get_first.return_value = response.get("ethernetConnectedNow", None) yield hub async def setup_verisure(hass, config, response): """Set up mock verisure.""" with mock_hub(config, response): await async_setup_component(hass, VERISURE_DOMAIN, config) await hass.async_block_till_done() async def test_verisure_no_ethernet_status(hass): """Test no data from API.""" await setup_verisure(hass, CONFIG, {}) assert len(hass.states.async_all()) == 1 entity_id = hass.states.async_entity_ids()[0] assert hass.states.get(entity_id).state == STATE_UNAVAILABLE async def test_verisure_ethernet_status_disconnected(hass): """Test disconnected.""" await setup_verisure(hass, CONFIG, {"ethernetConnectedNow": False}) assert len(hass.states.async_all()) == 1 entity_id = hass.states.async_entity_ids()[0] assert hass.states.get(entity_id).state == "off" async def test_verisure_ethernet_status_connected(hass): """Test connected.""" await setup_verisure(hass, CONFIG, {"ethernetConnectedNow": True}) assert len(hass.states.async_all()) == 1 entity_id = hass.states.async_entity_ids()[0] assert hass.states.get(entity_id).state == "on"