hass-core/tests/components/microbees/conftest.py
Federico D'Amico ac926f9c64
Introduce actuator base entity to microBees (#111000)
* changed library imports and added sensors to coordinator and new entity

* revert library

* revert library
2024-02-20 11:55:36 +01:00

95 lines
2.7 KiB
Python

"""Conftest for microBees tests."""
import time
from unittest.mock import AsyncMock, patch
from microBeesPy.bee import Bee
from microBeesPy.microbees import MicroBees
from microBeesPy.profile import Profile
import pytest
from homeassistant.components.application_credentials import (
ClientCredential,
async_import_client_credential,
)
from homeassistant.components.microbees.const import DOMAIN
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component
from tests.common import (
MockConfigEntry,
load_json_array_fixture,
load_json_object_fixture,
)
CLIENT_ID = "1234"
CLIENT_SECRET = "5678"
TITLE = "MicroBees"
MICROBEES_AUTH_URI = "https://dev.microbees.com/oauth/authorize"
MICROBEES_TOKEN_URI = "https://dev.microbees.com/oauth/token"
SCOPES = ["read", "write"]
@pytest.fixture(name="scopes")
def mock_scopes() -> list[str]:
"""Fixture to set the scopes present in the OAuth token."""
return SCOPES
@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),
DOMAIN,
)
@pytest.fixture(name="expires_at")
def mock_expires_at() -> int:
"""Fixture to set the oauth token expiration time."""
return time.time() + 3600
@pytest.fixture(name="config_entry")
def mock_config_entry(expires_at: int, scopes: list[str]) -> MockConfigEntry:
"""Create YouTube entry in Home Assistant."""
return MockConfigEntry(
domain=DOMAIN,
title=TITLE,
unique_id=54321,
data={
"auth_implementation": DOMAIN,
"token": {
"access_token": "mock-access-token",
"refresh_token": "mock-refresh-token",
"expires_at": expires_at,
"scope": " ".join(scopes),
},
},
)
@pytest.fixture(name="microbees")
def mock_microbees():
"""Mock microbees."""
devices_json = load_json_array_fixture("microbees/bees.json")
devices = [Bee.from_dict(device) for device in devices_json]
profile_json = load_json_object_fixture("microbees/profile.json")
profile = Profile.from_dict(profile_json)
mock = AsyncMock(spec=MicroBees)
mock.getBees.return_value = devices
mock.getMyProfile.return_value = profile
with patch(
"homeassistant.components.microbees.config_flow.MicroBees",
return_value=mock,
) as mock, patch(
"homeassistant.components.microbees.MicroBees",
return_value=mock,
):
yield mock