Adjust root-import in motioneye tests (#78770)

This commit is contained in:
epenet 2022-09-19 15:42:19 +02:00 committed by GitHub
parent 7e41afe660
commit beca4bb7a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -5,10 +5,14 @@ from unittest.mock import AsyncMock, Mock, call
from motioneye_client.client import MotionEyeClientPathError from motioneye_client.client import MotionEyeClientPathError
import pytest import pytest
from homeassistant.components import media_source from homeassistant.components.media_source import (
from homeassistant.components.media_source import const URI_SCHEME,
from homeassistant.components.media_source.error import MediaSourceError, Unresolvable MediaSourceError,
from homeassistant.components.media_source.models import PlayMedia PlayMedia,
Unresolvable,
async_browse_media,
async_resolve_media,
)
from homeassistant.components.motioneye.const import DOMAIN from homeassistant.components.motioneye.const import DOMAIN
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr from homeassistant.helpers import device_registry as dr
@ -86,9 +90,9 @@ async def test_async_browse_media_success(hass: HomeAssistant) -> None:
identifiers={TEST_CAMERA_DEVICE_IDENTIFIER}, identifiers={TEST_CAMERA_DEVICE_IDENTIFIER},
) )
media = await media_source.async_browse_media( media = await async_browse_media(
hass, hass,
f"{const.URI_SCHEME}{DOMAIN}", f"{URI_SCHEME}{DOMAIN}",
) )
assert media.as_dict() == { assert media.as_dict() == {
@ -117,9 +121,7 @@ async def test_async_browse_media_success(hass: HomeAssistant) -> None:
"not_shown": 0, "not_shown": 0,
} }
media = await media_source.async_browse_media( media = await async_browse_media(hass, f"{URI_SCHEME}{DOMAIN}/{config.entry_id}")
hass, f"{const.URI_SCHEME}{DOMAIN}/{config.entry_id}"
)
assert media.as_dict() == { assert media.as_dict() == {
"title": "http://test:8766", "title": "http://test:8766",
@ -150,8 +152,8 @@ async def test_async_browse_media_success(hass: HomeAssistant) -> None:
"not_shown": 0, "not_shown": 0,
} }
media = await media_source.async_browse_media( media = await async_browse_media(
hass, f"{const.URI_SCHEME}{DOMAIN}/{config.entry_id}#{device.id}" hass, f"{URI_SCHEME}{DOMAIN}/{config.entry_id}#{device.id}"
) )
assert media.as_dict() == { assert media.as_dict() == {
"title": "http://test:8766 Test Camera", "title": "http://test:8766 Test Camera",
@ -196,8 +198,8 @@ async def test_async_browse_media_success(hass: HomeAssistant) -> None:
} }
client.async_get_movies = AsyncMock(return_value=TEST_MOVIES) client.async_get_movies = AsyncMock(return_value=TEST_MOVIES)
media = await media_source.async_browse_media( media = await async_browse_media(
hass, f"{const.URI_SCHEME}{DOMAIN}/{config.entry_id}#{device.id}#movies" hass, f"{URI_SCHEME}{DOMAIN}/{config.entry_id}#{device.id}#movies"
) )
assert media.as_dict() == { assert media.as_dict() == {
@ -231,9 +233,9 @@ async def test_async_browse_media_success(hass: HomeAssistant) -> None:
} }
client.get_movie_url = Mock(return_value="http://movie") client.get_movie_url = Mock(return_value="http://movie")
media = await media_source.async_browse_media( media = await async_browse_media(
hass, hass,
f"{const.URI_SCHEME}{DOMAIN}/{config.entry_id}#{device.id}#movies#/2021-04-25", f"{URI_SCHEME}{DOMAIN}/{config.entry_id}#{device.id}#movies#/2021-04-25",
) )
assert media.as_dict() == { assert media.as_dict() == {
"title": "http://test:8766 Test Camera Movies 2021-04-25", "title": "http://test:8766 Test Camera Movies 2021-04-25",
@ -310,9 +312,9 @@ async def test_async_browse_media_images_success(hass: HomeAssistant) -> None:
client.async_get_images = AsyncMock(return_value=TEST_IMAGES) client.async_get_images = AsyncMock(return_value=TEST_IMAGES)
client.get_image_url = Mock(return_value="http://image") client.get_image_url = Mock(return_value="http://image")
media = await media_source.async_browse_media( media = await async_browse_media(
hass, hass,
f"{const.URI_SCHEME}{DOMAIN}/{config.entry_id}#{device.id}#images#/2021-04-12", f"{URI_SCHEME}{DOMAIN}/{config.entry_id}#{device.id}#images#/2021-04-12",
) )
assert media.as_dict() == { assert media.as_dict() == {
"title": "http://test:8766 Test Camera Images 2021-04-12", "title": "http://test:8766 Test Camera Images 2021-04-12",
@ -361,10 +363,10 @@ async def test_async_resolve_media_success(hass: HomeAssistant) -> None:
# Test successful resolve for a movie. # Test successful resolve for a movie.
client.get_movie_url = Mock(return_value="http://movie-url") client.get_movie_url = Mock(return_value="http://movie-url")
media = await media_source.async_resolve_media( media = await async_resolve_media(
hass, hass,
( (
f"{const.URI_SCHEME}{DOMAIN}" f"{URI_SCHEME}{DOMAIN}"
f"/{TEST_CONFIG_ENTRY_ID}#{device.id}#movies#/foo.mp4" f"/{TEST_CONFIG_ENTRY_ID}#{device.id}#movies#/foo.mp4"
), ),
None, None,
@ -374,10 +376,10 @@ async def test_async_resolve_media_success(hass: HomeAssistant) -> None:
# Test successful resolve for an image. # Test successful resolve for an image.
client.get_image_url = Mock(return_value="http://image-url") client.get_image_url = Mock(return_value="http://image-url")
media = await media_source.async_resolve_media( media = await async_resolve_media(
hass, hass,
( (
f"{const.URI_SCHEME}{DOMAIN}" f"{URI_SCHEME}{DOMAIN}"
f"/{TEST_CONFIG_ENTRY_ID}#{device.id}#images#/foo.jpg" f"/{TEST_CONFIG_ENTRY_ID}#{device.id}#images#/foo.jpg"
), ),
None, None,
@ -411,28 +413,24 @@ async def test_async_resolve_media_failure(hass: HomeAssistant) -> None:
# URI doesn't contain necessary components. # URI doesn't contain necessary components.
with pytest.raises(Unresolvable): with pytest.raises(Unresolvable):
await media_source.async_resolve_media( await async_resolve_media(hass, f"{URI_SCHEME}{DOMAIN}/foo", None)
hass, f"{const.URI_SCHEME}{DOMAIN}/foo", None
)
# Config entry doesn't exist. # Config entry doesn't exist.
with pytest.raises(MediaSourceError): with pytest.raises(MediaSourceError):
await media_source.async_resolve_media( await async_resolve_media(hass, f"{URI_SCHEME}{DOMAIN}/1#2#3#4", None)
hass, f"{const.URI_SCHEME}{DOMAIN}/1#2#3#4", None
)
# Device doesn't exist. # Device doesn't exist.
with pytest.raises(MediaSourceError): with pytest.raises(MediaSourceError):
await media_source.async_resolve_media( await async_resolve_media(
hass, f"{const.URI_SCHEME}{DOMAIN}/{TEST_CONFIG_ENTRY_ID}#2#3#4", None hass, f"{URI_SCHEME}{DOMAIN}/{TEST_CONFIG_ENTRY_ID}#2#3#4", None
) )
# Device identifiers are incorrect (no camera id) # Device identifiers are incorrect (no camera id)
with pytest.raises(MediaSourceError): with pytest.raises(MediaSourceError):
await media_source.async_resolve_media( await async_resolve_media(
hass, hass,
( (
f"{const.URI_SCHEME}{DOMAIN}" f"{URI_SCHEME}{DOMAIN}"
f"/{TEST_CONFIG_ENTRY_ID}#{broken_device_1.id}#images#4" f"/{TEST_CONFIG_ENTRY_ID}#{broken_device_1.id}#images#4"
), ),
None, None,
@ -440,10 +438,10 @@ async def test_async_resolve_media_failure(hass: HomeAssistant) -> None:
# Device identifiers are incorrect (non integer camera id) # Device identifiers are incorrect (non integer camera id)
with pytest.raises(MediaSourceError): with pytest.raises(MediaSourceError):
await media_source.async_resolve_media( await async_resolve_media(
hass, hass,
( (
f"{const.URI_SCHEME}{DOMAIN}" f"{URI_SCHEME}{DOMAIN}"
f"/{TEST_CONFIG_ENTRY_ID}#{broken_device_2.id}#images#4" f"/{TEST_CONFIG_ENTRY_ID}#{broken_device_2.id}#images#4"
), ),
None, None,
@ -451,19 +449,19 @@ async def test_async_resolve_media_failure(hass: HomeAssistant) -> None:
# Kind is incorrect. # Kind is incorrect.
with pytest.raises(MediaSourceError): with pytest.raises(MediaSourceError):
await media_source.async_resolve_media( await async_resolve_media(
hass, hass,
f"{const.URI_SCHEME}{DOMAIN}/{TEST_CONFIG_ENTRY_ID}#{device.id}#games#moo", f"{URI_SCHEME}{DOMAIN}/{TEST_CONFIG_ENTRY_ID}#{device.id}#games#moo",
None, None,
) )
# Playback URL raises exception. # Playback URL raises exception.
client.get_movie_url = Mock(side_effect=MotionEyeClientPathError) client.get_movie_url = Mock(side_effect=MotionEyeClientPathError)
with pytest.raises(Unresolvable): with pytest.raises(Unresolvable):
await media_source.async_resolve_media( await async_resolve_media(
hass, hass,
( (
f"{const.URI_SCHEME}{DOMAIN}" f"{URI_SCHEME}{DOMAIN}"
f"/{TEST_CONFIG_ENTRY_ID}#{device.id}#movies#/foo.mp4" f"/{TEST_CONFIG_ENTRY_ID}#{device.id}#movies#/foo.mp4"
), ),
None, None,
@ -472,10 +470,10 @@ async def test_async_resolve_media_failure(hass: HomeAssistant) -> None:
# Media path does not start with '/' # Media path does not start with '/'
client.get_movie_url = Mock(side_effect=MotionEyeClientPathError) client.get_movie_url = Mock(side_effect=MotionEyeClientPathError)
with pytest.raises(MediaSourceError): with pytest.raises(MediaSourceError):
await media_source.async_resolve_media( await async_resolve_media(
hass, hass,
( (
f"{const.URI_SCHEME}{DOMAIN}" f"{URI_SCHEME}{DOMAIN}"
f"/{TEST_CONFIG_ENTRY_ID}#{device.id}#movies#foo.mp4" f"/{TEST_CONFIG_ENTRY_ID}#{device.id}#movies#foo.mp4"
), ),
None, None,
@ -484,9 +482,9 @@ async def test_async_resolve_media_failure(hass: HomeAssistant) -> None:
# Media missing path. # Media missing path.
broken_movies = {"mediaList": [{}, {"path": "something", "mimeType": "NOT_A_MIME"}]} broken_movies = {"mediaList": [{}, {"path": "something", "mimeType": "NOT_A_MIME"}]}
client.async_get_movies = AsyncMock(return_value=broken_movies) client.async_get_movies = AsyncMock(return_value=broken_movies)
media = await media_source.async_browse_media( media = await async_browse_media(
hass, hass,
f"{const.URI_SCHEME}{DOMAIN}/{config.entry_id}#{device.id}#movies#/2021-04-25", f"{URI_SCHEME}{DOMAIN}/{config.entry_id}#{device.id}#movies#/2021-04-25",
) )
assert media.as_dict() == { assert media.as_dict() == {
"title": "http://test:8766 Test Camera Movies 2021-04-25", "title": "http://test:8766 Test Camera Movies 2021-04-25",