mirror of
https://github.com/home-assistant/core.git
synced 2026-02-21 02:18:47 +00:00
114 lines
3.1 KiB
Python
114 lines
3.1 KiB
Python
"""Common fixtures for html5 integration."""
|
|
|
|
from collections.abc import Generator
|
|
from unittest.mock import AsyncMock, MagicMock
|
|
|
|
from aiohttp import ClientResponse
|
|
import pytest
|
|
|
|
from homeassistant.components.html5.const import (
|
|
ATTR_VAPID_EMAIL,
|
|
ATTR_VAPID_PRV_KEY,
|
|
ATTR_VAPID_PUB_KEY,
|
|
DOMAIN,
|
|
)
|
|
from homeassistant.const import CONF_NAME
|
|
|
|
from tests.common import MockConfigEntry, patch
|
|
|
|
MOCK_CONF = {
|
|
ATTR_VAPID_EMAIL: "test@example.com",
|
|
ATTR_VAPID_PRV_KEY: "h6acSRds8_KR8hT9djD8WucTL06Gfe29XXyZ1KcUjN8",
|
|
}
|
|
MOCK_CONF_PUB_KEY = "BIUtPN7Rq_8U7RBEqClZrfZ5dR9zPCfvxYPtLpWtRVZTJEc7lzv2dhzDU6Aw1m29Ao0-UA1Uq6XO9Df8KALBKqA"
|
|
|
|
|
|
@pytest.fixture(name="config_entry")
|
|
def mock_config_entry() -> MockConfigEntry:
|
|
"""Mock ntfy configuration entry."""
|
|
return MockConfigEntry(
|
|
domain=DOMAIN,
|
|
title="HTML5",
|
|
data={
|
|
ATTR_VAPID_PRV_KEY: MOCK_CONF[ATTR_VAPID_PRV_KEY],
|
|
ATTR_VAPID_PUB_KEY: MOCK_CONF_PUB_KEY,
|
|
ATTR_VAPID_EMAIL: MOCK_CONF[ATTR_VAPID_EMAIL],
|
|
CONF_NAME: DOMAIN,
|
|
},
|
|
entry_id="ABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
|
)
|
|
|
|
|
|
@pytest.fixture(name="load_config")
|
|
def mock_load_config() -> Generator[MagicMock]:
|
|
"""Mock load config."""
|
|
|
|
with patch(
|
|
"homeassistant.components.html5.notify._load_config", return_value={}
|
|
) as mock_load_config:
|
|
yield mock_load_config
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_wp() -> Generator[AsyncMock]:
|
|
"""Mock WebPusher."""
|
|
|
|
with patch(
|
|
"homeassistant.components.html5.notify.WebPusher", autospec=True
|
|
) as mock_client:
|
|
client = mock_client.return_value
|
|
client.cls = mock_client
|
|
client.send_async.return_value = AsyncMock(spec=ClientResponse, status=201)
|
|
yield client
|
|
|
|
|
|
@pytest.fixture(name="webpush_async")
|
|
def mock_webpush_async() -> Generator[AsyncMock]:
|
|
"""Mock webpush_async."""
|
|
|
|
with patch(
|
|
"homeassistant.components.html5.notify.webpush_async", autospec=True
|
|
) as mock_client:
|
|
mock_client.return_value = AsyncMock(spec=ClientResponse, status=201)
|
|
yield mock_client
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_jwt() -> Generator[MagicMock]:
|
|
"""Mock JWT."""
|
|
|
|
with (
|
|
patch("homeassistant.components.html5.notify.jwt") as mock_client,
|
|
):
|
|
mock_client.encode.return_value = "JWT"
|
|
mock_client.decode.return_value = {"target": "device"}
|
|
yield mock_client
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_uuid() -> Generator[MagicMock]:
|
|
"""Mock UUID."""
|
|
|
|
with (
|
|
patch("homeassistant.components.html5.notify.uuid") as mock_client,
|
|
):
|
|
mock_client.uuid4.return_value = "12345678-1234-5678-1234-567812345678"
|
|
yield mock_client
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_vapid() -> Generator[MagicMock]:
|
|
"""Mock VAPID headers."""
|
|
|
|
with (
|
|
patch(
|
|
"homeassistant.components.html5.notify.Vapid", autospec=True
|
|
) as mock_client,
|
|
):
|
|
mock_client.from_string.return_value.sign.return_value = {
|
|
"Authorization": "vapid t=signed!!!",
|
|
"urgency": "normal",
|
|
"priority": "normal",
|
|
}
|
|
yield mock_client
|