mirror of https://github.com/home-assistant/core
54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
"""Basic checks for HomeKit cameras."""
|
|
|
|
import base64
|
|
from collections.abc import Callable
|
|
|
|
from aiohomekit.model import Accessory
|
|
from aiohomekit.model.services import ServicesTypes
|
|
from aiohomekit.testing import FAKE_CAMERA_IMAGE
|
|
|
|
from homeassistant.components import camera
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.helpers import entity_registry as er
|
|
|
|
from .common import setup_test_component
|
|
|
|
|
|
def create_camera(accessory: Accessory) -> None:
|
|
"""Define camera characteristics."""
|
|
accessory.add_service(ServicesTypes.CAMERA_RTP_STREAM_MANAGEMENT)
|
|
|
|
|
|
async def test_migrate_unique_ids(
|
|
hass: HomeAssistant,
|
|
entity_registry: er.EntityRegistry,
|
|
get_next_aid: Callable[[], int],
|
|
) -> None:
|
|
"""Test migrating entity unique ids."""
|
|
aid = get_next_aid()
|
|
camera = entity_registry.async_get_or_create(
|
|
"camera",
|
|
"homekit_controller",
|
|
f"homekit-0001-aid:{aid}",
|
|
)
|
|
await setup_test_component(hass, aid, create_camera)
|
|
assert (
|
|
entity_registry.async_get(camera.entity_id).unique_id
|
|
== f"00:00:00:00:00:00_{aid}"
|
|
)
|
|
|
|
|
|
async def test_read_state(hass: HomeAssistant, get_next_aid: Callable[[], int]) -> None:
|
|
"""Test reading the state of a HomeKit camera."""
|
|
helper = await setup_test_component(hass, get_next_aid(), create_camera)
|
|
|
|
state = await helper.poll_and_get_state()
|
|
assert state.state == "idle"
|
|
|
|
|
|
async def test_get_image(hass: HomeAssistant, get_next_aid: Callable[[], int]) -> None:
|
|
"""Test getting a JPEG from a camera."""
|
|
helper = await setup_test_component(hass, get_next_aid(), create_camera)
|
|
image = await camera.async_get_image(hass, helper.entity_id)
|
|
assert image.content == base64.b64decode(FAKE_CAMERA_IMAGE)
|