core/tests/components/media_player/test_init.py

80 lines
2.3 KiB
Python

"""Test the base functions of the media player."""
import base64
from unittest.mock import patch
from homeassistant.components.websocket_api.const import TYPE_RESULT
from homeassistant.setup import async_setup_component
from tests.common import mock_coro
async def test_get_image(hass, hass_ws_client):
"""Test get image via WS command."""
await async_setup_component(
hass, "media_player", {"media_player": {"platform": "demo"}}
)
client = await hass_ws_client(hass)
with patch(
"homeassistant.components.media_player.MediaPlayerDevice."
"async_get_media_image",
return_value=mock_coro((b"image", "image/jpeg")),
):
await client.send_json(
{
"id": 5,
"type": "media_player_thumbnail",
"entity_id": "media_player.bedroom",
}
)
msg = await client.receive_json()
assert msg["id"] == 5
assert msg["type"] == TYPE_RESULT
assert msg["success"]
assert msg["result"]["content_type"] == "image/jpeg"
assert msg["result"]["content"] == base64.b64encode(b"image").decode("utf-8")
async def test_get_image_http(hass, hass_client):
"""Test get image via http command."""
await async_setup_component(
hass, "media_player", {"media_player": {"platform": "demo"}}
)
client = await hass_client()
with patch(
"homeassistant.components.media_player.MediaPlayerDevice."
"async_get_media_image",
return_value=mock_coro((b"image", "image/jpeg")),
):
resp = await client.get("/api/media_player_proxy/media_player.bedroom")
content = await resp.read()
assert content == b"image"
async def test_get_image_http_url(hass, hass_client):
"""Test get image url via http command."""
await async_setup_component(
hass, "media_player", {"media_player": {"platform": "demo"}}
)
client = await hass_client()
with patch(
"homeassistant.components.media_player.MediaPlayerDevice."
"media_image_remotely_accessible",
return_value=True,
):
resp = await client.get(
"/api/media_player_proxy/media_player.bedroom", allow_redirects=False
)
assert (
resp.headers["Location"]
== "https://img.youtube.com/vi/kxopViU98Xo/hqdefault.jpg"
)