252 lines
7.7 KiB
Python
252 lines
7.7 KiB
Python
|
"""Test function in __init__.py."""
|
||
|
from typing import Dict
|
||
|
from unittest.mock import patch
|
||
|
|
||
|
import pytest
|
||
|
|
||
|
from homeassistant.components.mysensors import (
|
||
|
CONF_BAUD_RATE,
|
||
|
CONF_DEVICE,
|
||
|
CONF_GATEWAYS,
|
||
|
CONF_PERSISTENCE,
|
||
|
CONF_PERSISTENCE_FILE,
|
||
|
CONF_RETAIN,
|
||
|
CONF_TCP_PORT,
|
||
|
CONF_VERSION,
|
||
|
DEFAULT_VERSION,
|
||
|
DOMAIN,
|
||
|
)
|
||
|
from homeassistant.components.mysensors.const import (
|
||
|
CONF_GATEWAY_TYPE,
|
||
|
CONF_GATEWAY_TYPE_MQTT,
|
||
|
CONF_GATEWAY_TYPE_SERIAL,
|
||
|
CONF_GATEWAY_TYPE_TCP,
|
||
|
CONF_TOPIC_IN_PREFIX,
|
||
|
CONF_TOPIC_OUT_PREFIX,
|
||
|
)
|
||
|
from homeassistant.helpers.typing import ConfigType, HomeAssistantType
|
||
|
from homeassistant.setup import async_setup_component
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize(
|
||
|
"config, expected_calls, expected_to_succeed, expected_config_flow_user_input",
|
||
|
[
|
||
|
(
|
||
|
{
|
||
|
DOMAIN: {
|
||
|
CONF_GATEWAYS: [
|
||
|
{
|
||
|
CONF_DEVICE: "COM5",
|
||
|
CONF_PERSISTENCE_FILE: "bla.json",
|
||
|
CONF_BAUD_RATE: 57600,
|
||
|
CONF_TCP_PORT: 5003,
|
||
|
}
|
||
|
],
|
||
|
CONF_VERSION: "2.3",
|
||
|
CONF_PERSISTENCE: False,
|
||
|
CONF_RETAIN: True,
|
||
|
}
|
||
|
},
|
||
|
1,
|
||
|
True,
|
||
|
{
|
||
|
CONF_GATEWAY_TYPE: CONF_GATEWAY_TYPE_SERIAL,
|
||
|
CONF_DEVICE: "COM5",
|
||
|
CONF_PERSISTENCE_FILE: "bla.json",
|
||
|
CONF_BAUD_RATE: 57600,
|
||
|
CONF_VERSION: "2.3",
|
||
|
},
|
||
|
),
|
||
|
(
|
||
|
{
|
||
|
DOMAIN: {
|
||
|
CONF_GATEWAYS: [
|
||
|
{
|
||
|
CONF_DEVICE: "127.0.0.1",
|
||
|
CONF_PERSISTENCE_FILE: "blub.pickle",
|
||
|
CONF_BAUD_RATE: 115200,
|
||
|
CONF_TCP_PORT: 343,
|
||
|
}
|
||
|
],
|
||
|
CONF_VERSION: "2.4",
|
||
|
CONF_PERSISTENCE: False,
|
||
|
CONF_RETAIN: False,
|
||
|
}
|
||
|
},
|
||
|
1,
|
||
|
True,
|
||
|
{
|
||
|
CONF_GATEWAY_TYPE: CONF_GATEWAY_TYPE_TCP,
|
||
|
CONF_DEVICE: "127.0.0.1",
|
||
|
CONF_PERSISTENCE_FILE: "blub.pickle",
|
||
|
CONF_TCP_PORT: 343,
|
||
|
CONF_VERSION: "2.4",
|
||
|
},
|
||
|
),
|
||
|
(
|
||
|
{
|
||
|
DOMAIN: {
|
||
|
CONF_GATEWAYS: [
|
||
|
{
|
||
|
CONF_DEVICE: "127.0.0.1",
|
||
|
}
|
||
|
],
|
||
|
CONF_PERSISTENCE: False,
|
||
|
CONF_RETAIN: False,
|
||
|
}
|
||
|
},
|
||
|
1,
|
||
|
True,
|
||
|
{
|
||
|
CONF_GATEWAY_TYPE: CONF_GATEWAY_TYPE_TCP,
|
||
|
CONF_DEVICE: "127.0.0.1",
|
||
|
CONF_TCP_PORT: 5003,
|
||
|
CONF_VERSION: DEFAULT_VERSION,
|
||
|
},
|
||
|
),
|
||
|
(
|
||
|
{
|
||
|
DOMAIN: {
|
||
|
CONF_GATEWAYS: [
|
||
|
{
|
||
|
CONF_DEVICE: "mqtt",
|
||
|
CONF_BAUD_RATE: 115200,
|
||
|
CONF_TCP_PORT: 5003,
|
||
|
CONF_TOPIC_IN_PREFIX: "intopic",
|
||
|
CONF_TOPIC_OUT_PREFIX: "outtopic",
|
||
|
}
|
||
|
],
|
||
|
CONF_PERSISTENCE: False,
|
||
|
CONF_RETAIN: False,
|
||
|
}
|
||
|
},
|
||
|
1,
|
||
|
True,
|
||
|
{
|
||
|
CONF_GATEWAY_TYPE: CONF_GATEWAY_TYPE_MQTT,
|
||
|
CONF_DEVICE: "mqtt",
|
||
|
CONF_VERSION: DEFAULT_VERSION,
|
||
|
CONF_TOPIC_OUT_PREFIX: "outtopic",
|
||
|
CONF_TOPIC_IN_PREFIX: "intopic",
|
||
|
},
|
||
|
),
|
||
|
(
|
||
|
{
|
||
|
DOMAIN: {
|
||
|
CONF_GATEWAYS: [
|
||
|
{
|
||
|
CONF_DEVICE: "mqtt",
|
||
|
CONF_BAUD_RATE: 115200,
|
||
|
CONF_TCP_PORT: 5003,
|
||
|
}
|
||
|
],
|
||
|
CONF_PERSISTENCE: False,
|
||
|
CONF_RETAIN: False,
|
||
|
}
|
||
|
},
|
||
|
0,
|
||
|
True,
|
||
|
{},
|
||
|
),
|
||
|
(
|
||
|
{
|
||
|
DOMAIN: {
|
||
|
CONF_GATEWAYS: [
|
||
|
{
|
||
|
CONF_DEVICE: "mqtt",
|
||
|
CONF_PERSISTENCE_FILE: "bla.json",
|
||
|
CONF_TOPIC_OUT_PREFIX: "out",
|
||
|
CONF_TOPIC_IN_PREFIX: "in",
|
||
|
CONF_BAUD_RATE: 115200,
|
||
|
CONF_TCP_PORT: 5003,
|
||
|
},
|
||
|
{
|
||
|
CONF_DEVICE: "COM6",
|
||
|
CONF_PERSISTENCE_FILE: "bla2.json",
|
||
|
CONF_BAUD_RATE: 115200,
|
||
|
CONF_TCP_PORT: 5003,
|
||
|
},
|
||
|
],
|
||
|
CONF_VERSION: "2.4",
|
||
|
CONF_PERSISTENCE: False,
|
||
|
CONF_RETAIN: False,
|
||
|
}
|
||
|
},
|
||
|
2,
|
||
|
True,
|
||
|
{},
|
||
|
),
|
||
|
(
|
||
|
{
|
||
|
DOMAIN: {
|
||
|
CONF_GATEWAYS: [
|
||
|
{
|
||
|
CONF_DEVICE: "mqtt",
|
||
|
CONF_PERSISTENCE_FILE: "bla.json",
|
||
|
CONF_BAUD_RATE: 115200,
|
||
|
CONF_TCP_PORT: 5003,
|
||
|
},
|
||
|
{
|
||
|
CONF_DEVICE: "COM6",
|
||
|
CONF_PERSISTENCE_FILE: "bla.json",
|
||
|
CONF_BAUD_RATE: 115200,
|
||
|
CONF_TCP_PORT: 5003,
|
||
|
},
|
||
|
],
|
||
|
CONF_VERSION: "2.4",
|
||
|
CONF_PERSISTENCE: False,
|
||
|
CONF_RETAIN: False,
|
||
|
}
|
||
|
},
|
||
|
0,
|
||
|
False,
|
||
|
{},
|
||
|
),
|
||
|
(
|
||
|
{
|
||
|
DOMAIN: {
|
||
|
CONF_GATEWAYS: [
|
||
|
{
|
||
|
CONF_DEVICE: "COMx",
|
||
|
CONF_PERSISTENCE_FILE: "bla.json",
|
||
|
CONF_BAUD_RATE: 115200,
|
||
|
CONF_TCP_PORT: 5003,
|
||
|
},
|
||
|
],
|
||
|
CONF_VERSION: "2.4",
|
||
|
CONF_PERSISTENCE: False,
|
||
|
CONF_RETAIN: False,
|
||
|
}
|
||
|
},
|
||
|
0,
|
||
|
True,
|
||
|
{},
|
||
|
),
|
||
|
],
|
||
|
)
|
||
|
async def test_import(
|
||
|
hass: HomeAssistantType,
|
||
|
config: ConfigType,
|
||
|
expected_calls: int,
|
||
|
expected_to_succeed: bool,
|
||
|
expected_config_flow_user_input: Dict[str, any],
|
||
|
):
|
||
|
"""Test importing a gateway."""
|
||
|
with patch("sys.platform", "win32"), patch(
|
||
|
"homeassistant.components.mysensors.config_flow.try_connect", return_value=True
|
||
|
), patch(
|
||
|
"homeassistant.components.mysensors.async_setup_entry",
|
||
|
return_value=True,
|
||
|
) as mock_setup_entry:
|
||
|
result = await async_setup_component(hass, DOMAIN, config)
|
||
|
assert result == expected_to_succeed
|
||
|
await hass.async_block_till_done()
|
||
|
|
||
|
assert len(mock_setup_entry.mock_calls) == expected_calls
|
||
|
|
||
|
if expected_calls > 0:
|
||
|
config_flow_user_input = mock_setup_entry.mock_calls[0][1][1].data
|
||
|
for key, value in expected_config_flow_user_input.items():
|
||
|
assert key in config_flow_user_input
|
||
|
assert config_flow_user_input[key] == value
|