"""Test the base functions of the media player.""" import base64 from unittest.mock import patch from homeassistant.setup import async_setup_component from homeassistant.components.websocket_api.const import TYPE_RESULT 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'