Import Traccar YAML configuration to Traccar Server (#109226)
* Import Traccar YAML configuration to Traccar Server * Remove import
This commit is contained in:
parent
0b0bf73780
commit
cd96fb381f
4 changed files with 230 additions and 271 deletions
|
@ -1,16 +1,19 @@
|
|||
"""Test the Traccar Server config flow."""
|
||||
from typing import Any
|
||||
from unittest.mock import AsyncMock, patch
|
||||
|
||||
import pytest
|
||||
from pytraccar import TraccarException
|
||||
|
||||
from homeassistant import config_entries
|
||||
from homeassistant.components.traccar.device_tracker import PLATFORM_SCHEMA
|
||||
from homeassistant.components.traccar_server.const import (
|
||||
CONF_CUSTOM_ATTRIBUTES,
|
||||
CONF_EVENTS,
|
||||
CONF_MAX_ACCURACY,
|
||||
CONF_SKIP_ACCURACY_FILTER_FOR,
|
||||
DOMAIN,
|
||||
EVENTS,
|
||||
)
|
||||
from homeassistant.const import (
|
||||
CONF_HOST,
|
||||
|
@ -156,6 +159,129 @@ async def test_options(
|
|||
}
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("imported", "data", "options"),
|
||||
(
|
||||
(
|
||||
{
|
||||
CONF_HOST: "1.1.1.1",
|
||||
CONF_PORT: 443,
|
||||
CONF_USERNAME: "test-username",
|
||||
CONF_PASSWORD: "test-password",
|
||||
},
|
||||
{
|
||||
CONF_HOST: "1.1.1.1",
|
||||
CONF_PORT: "443",
|
||||
CONF_VERIFY_SSL: True,
|
||||
CONF_SSL: False,
|
||||
CONF_USERNAME: "test-username",
|
||||
CONF_PASSWORD: "test-password",
|
||||
},
|
||||
{
|
||||
CONF_EVENTS: [],
|
||||
CONF_CUSTOM_ATTRIBUTES: [],
|
||||
CONF_SKIP_ACCURACY_FILTER_FOR: [],
|
||||
CONF_MAX_ACCURACY: 0,
|
||||
},
|
||||
),
|
||||
(
|
||||
{
|
||||
CONF_HOST: "1.1.1.1",
|
||||
CONF_USERNAME: "test-username",
|
||||
CONF_PASSWORD: "test-password",
|
||||
CONF_SSL: True,
|
||||
"event": ["device_online", "device_offline"],
|
||||
},
|
||||
{
|
||||
CONF_HOST: "1.1.1.1",
|
||||
CONF_PORT: "8082",
|
||||
CONF_VERIFY_SSL: True,
|
||||
CONF_SSL: True,
|
||||
CONF_USERNAME: "test-username",
|
||||
CONF_PASSWORD: "test-password",
|
||||
},
|
||||
{
|
||||
CONF_EVENTS: ["device_online", "device_offline"],
|
||||
CONF_CUSTOM_ATTRIBUTES: [],
|
||||
CONF_SKIP_ACCURACY_FILTER_FOR: [],
|
||||
CONF_MAX_ACCURACY: 0,
|
||||
},
|
||||
),
|
||||
(
|
||||
{
|
||||
CONF_HOST: "1.1.1.1",
|
||||
CONF_USERNAME: "test-username",
|
||||
CONF_PASSWORD: "test-password",
|
||||
CONF_SSL: True,
|
||||
"event": ["device_online", "device_offline", "all_events"],
|
||||
},
|
||||
{
|
||||
CONF_HOST: "1.1.1.1",
|
||||
CONF_PORT: "8082",
|
||||
CONF_VERIFY_SSL: True,
|
||||
CONF_SSL: True,
|
||||
CONF_USERNAME: "test-username",
|
||||
CONF_PASSWORD: "test-password",
|
||||
},
|
||||
{
|
||||
CONF_EVENTS: list(EVENTS.values()),
|
||||
CONF_CUSTOM_ATTRIBUTES: [],
|
||||
CONF_SKIP_ACCURACY_FILTER_FOR: [],
|
||||
CONF_MAX_ACCURACY: 0,
|
||||
},
|
||||
),
|
||||
),
|
||||
)
|
||||
async def test_import_from_yaml(
|
||||
hass: HomeAssistant,
|
||||
mock_setup_entry: AsyncMock,
|
||||
imported: dict[str, Any],
|
||||
data: dict[str, Any],
|
||||
options: dict[str, Any],
|
||||
) -> None:
|
||||
"""Test importing configuration from YAML."""
|
||||
result = await hass.config_entries.flow.async_init(
|
||||
DOMAIN,
|
||||
context={"source": config_entries.SOURCE_IMPORT},
|
||||
data=PLATFORM_SCHEMA({"platform": "traccar", **imported}),
|
||||
)
|
||||
assert result["type"] == FlowResultType.CREATE_ENTRY
|
||||
assert result["title"] == f"{data[CONF_HOST]}:{data[CONF_PORT]}"
|
||||
assert result["data"] == data
|
||||
assert result["options"] == options
|
||||
|
||||
|
||||
async def test_abort_import_already_configured(
|
||||
hass: HomeAssistant,
|
||||
mock_setup_entry: AsyncMock,
|
||||
) -> None:
|
||||
"""Test abort for existing server while importing."""
|
||||
|
||||
config_entry = MockConfigEntry(
|
||||
domain=DOMAIN,
|
||||
data={CONF_HOST: "1.1.1.1", CONF_PORT: "8082"},
|
||||
)
|
||||
|
||||
config_entry.add_to_hass(hass)
|
||||
|
||||
result = await hass.config_entries.flow.async_init(
|
||||
DOMAIN,
|
||||
context={"source": config_entries.SOURCE_IMPORT},
|
||||
data=PLATFORM_SCHEMA(
|
||||
{
|
||||
"platform": "traccar",
|
||||
CONF_USERNAME: "test-username",
|
||||
CONF_PASSWORD: "test-password",
|
||||
CONF_HOST: "1.1.1.1",
|
||||
CONF_PORT: "8082",
|
||||
}
|
||||
),
|
||||
)
|
||||
|
||||
assert result["type"] == FlowResultType.ABORT
|
||||
assert result["reason"] == "already_configured"
|
||||
|
||||
|
||||
async def test_abort_already_configured(
|
||||
hass: HomeAssistant,
|
||||
mock_setup_entry: AsyncMock,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue