core/tests/components/traccar_server/conftest.py

89 lines
2.5 KiB
Python
Raw Normal View History

"""Common fixtures for the Traccar Server tests."""
from collections.abc import Generator
from unittest.mock import AsyncMock, patch
import pytest
from pytraccar import ApiClient, SubscriptionStatus
from homeassistant.components.traccar_server.const import (
CONF_CUSTOM_ATTRIBUTES,
CONF_EVENTS,
CONF_MAX_ACCURACY,
CONF_SKIP_ACCURACY_FILTER_FOR,
DOMAIN,
)
from homeassistant.const import (
CONF_HOST,
CONF_PASSWORD,
CONF_PORT,
CONF_SSL,
CONF_USERNAME,
CONF_VERIFY_SSL,
)
from tests.common import (
MockConfigEntry,
load_json_array_fixture,
load_json_object_fixture,
)
@pytest.fixture
def mock_traccar_api_client() -> Generator[AsyncMock, None, None]:
"""Mock a Traccar ApiClient client."""
with (
patch(
"homeassistant.components.traccar_server.ApiClient",
autospec=True,
) as mock_client,
patch(
"homeassistant.components.traccar_server.config_flow.ApiClient",
new=mock_client,
),
):
client: ApiClient = mock_client.return_value
client.subscription_status = SubscriptionStatus.DISCONNECTED
client.get_devices.return_value = load_json_array_fixture(
"traccar_server/devices.json"
)
client.get_geofences.return_value = load_json_array_fixture(
"traccar_server/geofences.json"
)
client.get_positions.return_value = load_json_array_fixture(
"traccar_server/positions.json"
)
client.get_server.return_value = load_json_object_fixture(
"traccar_server/server.json"
)
client.get_reports_events.return_value = load_json_array_fixture(
"traccar_server/reports_events.json"
)
client.subscribe = AsyncMock()
yield client
@pytest.fixture
def mock_config_entry() -> MockConfigEntry:
"""Mock a Traccar Server config entry."""
return MockConfigEntry(
domain=DOMAIN,
title="1.1.1.1:8082",
data={
CONF_HOST: "1.1.1.1",
CONF_PORT: "8082",
CONF_USERNAME: "test@example.org",
CONF_PASSWORD: "ThisIsNotThePasswordYouAreL00kingFor",
CONF_SSL: False,
CONF_VERIFY_SSL: True,
},
options={
CONF_CUSTOM_ATTRIBUTES: ["custom_attr_1"],
CONF_EVENTS: ["device_moving"],
CONF_MAX_ACCURACY: 5.0,
CONF_SKIP_ACCURACY_FILTER_FOR: [],
},
)