mirror of https://github.com/home-assistant/core
84 lines
2.4 KiB
Python
84 lines
2.4 KiB
Python
"""The camera tests for the prosegur platform."""
|
|
|
|
import logging
|
|
from unittest.mock import AsyncMock
|
|
|
|
from pyprosegur.exceptions import ProsegurException
|
|
import pytest
|
|
|
|
from homeassistant.components import camera
|
|
from homeassistant.components.camera import Image
|
|
from homeassistant.components.prosegur.const import DOMAIN
|
|
from homeassistant.const import ATTR_ENTITY_ID
|
|
from homeassistant.core import HomeAssistant
|
|
from homeassistant.exceptions import HomeAssistantError
|
|
|
|
|
|
async def test_camera(hass: HomeAssistant, init_integration) -> None:
|
|
"""Test prosegur get_image."""
|
|
|
|
image = await camera.async_get_image(hass, "camera.contract_1234abcd_test_cam")
|
|
|
|
assert image == Image(content_type="image/jpeg", content=b"ABC")
|
|
|
|
|
|
async def test_camera_fail(
|
|
hass: HomeAssistant,
|
|
init_integration,
|
|
mock_install,
|
|
caplog: pytest.LogCaptureFixture,
|
|
) -> None:
|
|
"""Test prosegur get_image fails."""
|
|
|
|
mock_install.get_image = AsyncMock(
|
|
return_value=b"ABC", side_effect=ProsegurException()
|
|
)
|
|
|
|
with (
|
|
caplog.at_level(logging.ERROR, logger="homeassistant.components.prosegur"),
|
|
pytest.raises(HomeAssistantError) as exc,
|
|
):
|
|
await camera.async_get_image(hass, "camera.contract_1234abcd_test_cam")
|
|
|
|
assert "Unable to get image" in str(exc.value)
|
|
|
|
assert "Image test_cam doesn't exist" in caplog.text
|
|
|
|
|
|
async def test_request_image(
|
|
hass: HomeAssistant, init_integration, mock_install
|
|
) -> None:
|
|
"""Test the camera request image service."""
|
|
|
|
await hass.services.async_call(
|
|
DOMAIN,
|
|
"request_image",
|
|
{ATTR_ENTITY_ID: "camera.contract_1234abcd_test_cam"},
|
|
)
|
|
await hass.async_block_till_done()
|
|
|
|
assert mock_install.request_image.called
|
|
|
|
|
|
async def test_request_image_fail(
|
|
hass: HomeAssistant,
|
|
init_integration,
|
|
mock_install,
|
|
caplog: pytest.LogCaptureFixture,
|
|
) -> None:
|
|
"""Test the camera request image service fails."""
|
|
|
|
mock_install.request_image = AsyncMock(side_effect=ProsegurException())
|
|
|
|
with caplog.at_level(logging.ERROR, logger="homeassistant.components.prosegur"):
|
|
await hass.services.async_call(
|
|
DOMAIN,
|
|
"request_image",
|
|
{ATTR_ENTITY_ID: "camera.contract_1234abcd_test_cam"},
|
|
)
|
|
await hass.async_block_till_done()
|
|
|
|
assert mock_install.request_image.called
|
|
|
|
assert "Could not request image from camera test_cam" in caplog.text
|