68 lines
2.2 KiB
Python
68 lines
2.2 KiB
Python
"""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"
|