mirror of https://github.com/home-assistant/core
101 lines
3.2 KiB
Python
101 lines
3.2 KiB
Python
"""Provide common Netatmo fixtures."""
|
|
|
|
from time import time
|
|
from unittest.mock import AsyncMock, patch
|
|
|
|
from pyatmo.const import ALL_SCOPES
|
|
import pytest
|
|
|
|
from homeassistant.components.application_credentials import (
|
|
ClientCredential,
|
|
async_import_client_credential,
|
|
)
|
|
from homeassistant.components.netatmo.const import DOMAIN
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.setup import async_setup_component
|
|
|
|
from .common import fake_get_image, fake_post_request
|
|
|
|
from tests.common import MockConfigEntry
|
|
|
|
CLIENT_ID = "1234"
|
|
CLIENT_SECRET = "5678"
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
async def setup_credentials(hass: HomeAssistant) -> None:
|
|
"""Fixture to setup credentials."""
|
|
assert await async_setup_component(hass, "application_credentials", {})
|
|
await async_import_client_credential(
|
|
hass,
|
|
DOMAIN,
|
|
ClientCredential(CLIENT_ID, CLIENT_SECRET),
|
|
)
|
|
|
|
|
|
@pytest.fixture(name="config_entry")
|
|
def mock_config_entry_fixture(hass: HomeAssistant) -> MockConfigEntry:
|
|
"""Mock a config entry."""
|
|
mock_entry = MockConfigEntry(
|
|
domain="netatmo",
|
|
data={
|
|
"auth_implementation": "cloud",
|
|
"token": {
|
|
"refresh_token": "mock-refresh-token",
|
|
"access_token": "mock-access-token",
|
|
"type": "Bearer",
|
|
"expires_in": 60,
|
|
"expires_at": time() + 1000,
|
|
"scope": ALL_SCOPES,
|
|
},
|
|
},
|
|
options={
|
|
"weather_areas": {
|
|
"Home avg": {
|
|
"lat_ne": 32.2345678,
|
|
"lon_ne": -117.1234567,
|
|
"lat_sw": 32.1234567,
|
|
"lon_sw": -117.2345678,
|
|
"show_on_map": False,
|
|
"area_name": "Home avg",
|
|
"mode": "avg",
|
|
},
|
|
"Home max": {
|
|
"lat_ne": 32.2345678,
|
|
"lon_ne": -117.1234567,
|
|
"lat_sw": 32.1234567,
|
|
"lon_sw": -117.2345678,
|
|
"show_on_map": True,
|
|
"area_name": "Home max",
|
|
"mode": "max",
|
|
},
|
|
"Home min": {
|
|
"lat_ne": 32.2345678,
|
|
"lon_ne": -117.1234567,
|
|
"lat_sw": 32.1234567,
|
|
"lon_sw": -117.2345678,
|
|
"show_on_map": True,
|
|
"area_name": "Home min",
|
|
"mode": "min",
|
|
},
|
|
}
|
|
},
|
|
)
|
|
mock_entry.add_to_hass(hass)
|
|
|
|
return mock_entry
|
|
|
|
|
|
@pytest.fixture(name="netatmo_auth")
|
|
def netatmo_auth() -> AsyncMock:
|
|
"""Restrict loaded platforms to list given."""
|
|
with patch(
|
|
"homeassistant.components.netatmo.api.AsyncConfigEntryNetatmoAuth"
|
|
) as mock_auth:
|
|
mock_auth.return_value.async_post_request.side_effect = fake_post_request
|
|
mock_auth.return_value.async_post_api_request.side_effect = fake_post_request
|
|
mock_auth.return_value.async_get_image.side_effect = fake_get_image
|
|
mock_auth.return_value.async_addwebhook.side_effect = AsyncMock()
|
|
mock_auth.return_value.async_dropwebhook.side_effect = AsyncMock()
|
|
yield
|