core/tests/components/homekit_controller/test_camera.py

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)