
* Remove bunch of unneeded lint exclusions * Use symbolic names instead of identifiers in pylint disables * Tighten scope of some pylint disables
110 lines
4.2 KiB
Python
110 lines
4.2 KiB
Python
"""Tests for HomematicIP Cloud alarm control panel."""
|
|
from homeassistant.components.alarm_control_panel import (
|
|
DOMAIN as ALARM_CONTROL_PANEL_DOMAIN,
|
|
)
|
|
from homeassistant.components.homematicip_cloud import DOMAIN as HMIPC_DOMAIN
|
|
from homeassistant.const import (
|
|
STATE_ALARM_ARMED_AWAY,
|
|
STATE_ALARM_ARMED_HOME,
|
|
STATE_ALARM_DISARMED,
|
|
STATE_ALARM_TRIGGERED,
|
|
)
|
|
from homeassistant.setup import async_setup_component
|
|
|
|
from .helper import get_and_check_entity_basics
|
|
|
|
|
|
async def _async_manipulate_security_zones(
|
|
hass, home, internal_active=False, external_active=False, alarm_triggered=False
|
|
):
|
|
"""Set new values on hmip security zones."""
|
|
json = home._rawJSONData # pylint: disable=protected-access
|
|
json["functionalHomes"]["SECURITY_AND_ALARM"]["alarmActive"] = alarm_triggered
|
|
external_zone_id = json["functionalHomes"]["SECURITY_AND_ALARM"]["securityZones"][
|
|
"EXTERNAL"
|
|
]
|
|
internal_zone_id = json["functionalHomes"]["SECURITY_AND_ALARM"]["securityZones"][
|
|
"INTERNAL"
|
|
]
|
|
external_zone = home.search_group_by_id(external_zone_id)
|
|
external_zone.active = external_active
|
|
internal_zone = home.search_group_by_id(internal_zone_id)
|
|
internal_zone.active = internal_active
|
|
|
|
home.fire_update_event(json)
|
|
await hass.async_block_till_done()
|
|
|
|
|
|
async def test_manually_configured_platform(hass):
|
|
"""Test that we do not set up an access point."""
|
|
assert (
|
|
await async_setup_component(
|
|
hass,
|
|
ALARM_CONTROL_PANEL_DOMAIN,
|
|
{ALARM_CONTROL_PANEL_DOMAIN: {"platform": HMIPC_DOMAIN}},
|
|
)
|
|
is True
|
|
)
|
|
assert not hass.data.get(HMIPC_DOMAIN)
|
|
|
|
|
|
async def test_hmip_alarm_control_panel(hass, default_mock_hap):
|
|
"""Test HomematicipAlarmControlPanel."""
|
|
entity_id = "alarm_control_panel.hmip_alarm_control_panel"
|
|
entity_name = "HmIP Alarm Control Panel"
|
|
device_model = None
|
|
|
|
ha_state, hmip_device = get_and_check_entity_basics(
|
|
hass, default_mock_hap, entity_id, entity_name, device_model
|
|
)
|
|
|
|
assert ha_state.state == "disarmed"
|
|
assert not hmip_device
|
|
|
|
home = default_mock_hap.home
|
|
|
|
await hass.services.async_call(
|
|
"alarm_control_panel", "alarm_arm_away", {"entity_id": entity_id}, blocking=True
|
|
)
|
|
assert home.mock_calls[-1][0] == "set_security_zones_activation"
|
|
assert home.mock_calls[-1][1] == (True, True)
|
|
await _async_manipulate_security_zones(
|
|
hass, home, internal_active=True, external_active=True
|
|
)
|
|
assert hass.states.get(entity_id).state is STATE_ALARM_ARMED_AWAY
|
|
|
|
await hass.services.async_call(
|
|
"alarm_control_panel", "alarm_arm_home", {"entity_id": entity_id}, blocking=True
|
|
)
|
|
assert home.mock_calls[-1][0] == "set_security_zones_activation"
|
|
assert home.mock_calls[-1][1] == (False, True)
|
|
await _async_manipulate_security_zones(hass, home, external_active=True)
|
|
assert hass.states.get(entity_id).state is STATE_ALARM_ARMED_HOME
|
|
|
|
await hass.services.async_call(
|
|
"alarm_control_panel", "alarm_disarm", {"entity_id": entity_id}, blocking=True
|
|
)
|
|
assert home.mock_calls[-1][0] == "set_security_zones_activation"
|
|
assert home.mock_calls[-1][1] == (False, False)
|
|
await _async_manipulate_security_zones(hass, home)
|
|
assert hass.states.get(entity_id).state is STATE_ALARM_DISARMED
|
|
|
|
await hass.services.async_call(
|
|
"alarm_control_panel", "alarm_arm_away", {"entity_id": entity_id}, blocking=True
|
|
)
|
|
assert home.mock_calls[-1][0] == "set_security_zones_activation"
|
|
assert home.mock_calls[-1][1] == (True, True)
|
|
await _async_manipulate_security_zones(
|
|
hass, home, internal_active=True, external_active=True, alarm_triggered=True
|
|
)
|
|
assert hass.states.get(entity_id).state is STATE_ALARM_TRIGGERED
|
|
|
|
await hass.services.async_call(
|
|
"alarm_control_panel", "alarm_arm_home", {"entity_id": entity_id}, blocking=True
|
|
)
|
|
assert home.mock_calls[-1][0] == "set_security_zones_activation"
|
|
assert home.mock_calls[-1][1] == (False, True)
|
|
await _async_manipulate_security_zones(
|
|
hass, home, external_active=True, alarm_triggered=True
|
|
)
|
|
assert hass.states.get(entity_id).state is STATE_ALARM_TRIGGERED
|