core/tests/components/trafikverket_camera/test_camera.py

74 lines
2.3 KiB
Python

"""The test for the Trafikverket camera platform."""
from __future__ import annotations
from datetime import timedelta
from unittest.mock import patch
from freezegun.api import FrozenDateTimeFactory
import pytest
from pytrafikverket.models import CameraInfoModel
from homeassistant.components.camera import async_get_image
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError
from tests.common import async_fire_time_changed
from tests.test_util.aiohttp import AiohttpClientMocker
async def test_camera(
hass: HomeAssistant,
load_int: ConfigEntry,
freezer: FrozenDateTimeFactory,
monkeypatch: pytest.MonkeyPatch,
aioclient_mock: AiohttpClientMocker,
get_camera: CameraInfoModel,
) -> None:
"""Test the Trafikverket Camera sensor."""
state1 = hass.states.get("camera.test_camera")
assert state1.state == "idle"
assert state1.attributes["description"] == "Test Camera for testing"
assert state1.attributes["location"] == "Test location"
assert state1.attributes["type"] == "Road"
with patch(
"homeassistant.components.trafikverket_camera.coordinator.TrafikverketCamera.async_get_camera",
return_value=get_camera,
):
aioclient_mock.get(
"https://www.testurl.com/test_photo.jpg?type=fullsize",
content=b"9876543210",
)
freezer.tick(timedelta(minutes=6))
async_fire_time_changed(hass)
await hass.async_block_till_done()
state1 = hass.states.get("camera.test_camera")
assert state1.state == "idle"
assert state1.attributes != {}
assert await async_get_image(hass, "camera.test_camera")
monkeypatch.setattr(
get_camera,
"photourl",
None,
)
aioclient_mock.get(
"https://www.testurl.com/test_photo.jpg?type=fullsize",
status=404,
)
with patch(
"homeassistant.components.trafikverket_camera.coordinator.TrafikverketCamera.async_get_camera",
return_value=get_camera,
):
freezer.tick(timedelta(minutes=6))
async_fire_time_changed(hass)
await hass.async_block_till_done()
with pytest.raises(HomeAssistantError):
await async_get_image(hass, "camera.test_camera")