From df1454b1fefcf8cdad91a7693b762d9d848b0b30 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 2 Mar 2025 14:06:54 -0500 Subject: [PATCH] Fix some tests --- homeassistant/components/tts/__init__.py | 2 +- .../assist_pipeline/snapshots/test_init.ambr | 8 ++--- .../snapshots/test_websocket.ambr | 8 ++--- tests/components/tts/test_media_source.py | 32 ++++++++++++++++--- 4 files changed, 37 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/tts/__init__.py b/homeassistant/components/tts/__init__.py index 23bdfb5cdda..2160f16dbcf 100644 --- a/homeassistant/components/tts/__init__.py +++ b/homeassistant/components/tts/__init__.py @@ -199,7 +199,7 @@ async def async_get_media_source_audio( ) return await manager.async_get_tts_audio(cache_key) - token = media_source_id.partition("/")[2] + token = media_source_id.split("/")[-1] if (stream := manager.token_to_stream.get(token)) is None: raise Unresolvable("Token from media source not found") diff --git a/tests/components/assist_pipeline/snapshots/test_init.ambr b/tests/components/assist_pipeline/snapshots/test_init.ambr index 2375d48fcf9..7780b28dbdb 100644 --- a/tests/components/assist_pipeline/snapshots/test_init.ambr +++ b/tests/components/assist_pipeline/snapshots/test_init.ambr @@ -83,7 +83,7 @@ dict({ 'data': dict({ 'tts_output': dict({ - 'media_id': "media-source://tts/test?message=Sorry,+I+couldn't+understand+that&language=en-US&tts_options=%7B%22voice%22:%22james_earl_jones%22%7D", + 'media_id': 'media-source://tts/temporary/test_token.mp3', 'mime_type': 'audio/mpeg', 'url': '/api/tts_proxy/test_token.mp3', }), @@ -180,7 +180,7 @@ dict({ 'data': dict({ 'tts_output': dict({ - 'media_id': "media-source://tts/test?message=Sorry,+I+couldn't+understand+that&language=en-US&tts_options=%7B%22voice%22:%22Arnold+Schwarzenegger%22%7D", + 'media_id': 'media-source://tts/temporary/test_token.mp3', 'mime_type': 'audio/mpeg', 'url': '/api/tts_proxy/test_token.mp3', }), @@ -277,7 +277,7 @@ dict({ 'data': dict({ 'tts_output': dict({ - 'media_id': "media-source://tts/test?message=Sorry,+I+couldn't+understand+that&language=en-US&tts_options=%7B%22voice%22:%22Arnold+Schwarzenegger%22%7D", + 'media_id': 'media-source://tts/temporary/test_token.mp3', 'mime_type': 'audio/mpeg', 'url': '/api/tts_proxy/test_token.mp3', }), @@ -398,7 +398,7 @@ dict({ 'data': dict({ 'tts_output': dict({ - 'media_id': "media-source://tts/test?message=Sorry,+I+couldn't+understand+that&language=en-US&tts_options=%7B%22voice%22:%22james_earl_jones%22%7D", + 'media_id': 'media-source://tts/temporary/test_token.mp3', 'mime_type': 'audio/mpeg', 'url': '/api/tts_proxy/test_token.mp3', }), diff --git a/tests/components/assist_pipeline/snapshots/test_websocket.ambr b/tests/components/assist_pipeline/snapshots/test_websocket.ambr index d937b5396d1..ad937b89e11 100644 --- a/tests/components/assist_pipeline/snapshots/test_websocket.ambr +++ b/tests/components/assist_pipeline/snapshots/test_websocket.ambr @@ -79,7 +79,7 @@ # name: test_audio_pipeline.6 dict({ 'tts_output': dict({ - 'media_id': "media-source://tts/test?message=Sorry,+I+couldn't+understand+that&language=en-US&tts_options=%7B%22voice%22:%22james_earl_jones%22%7D", + 'media_id': 'media-source://tts/temporary/test_token.mp3', 'mime_type': 'audio/mpeg', 'url': '/api/tts_proxy/test_token.mp3', }), @@ -168,7 +168,7 @@ # name: test_audio_pipeline_debug.6 dict({ 'tts_output': dict({ - 'media_id': "media-source://tts/test?message=Sorry,+I+couldn't+understand+that&language=en-US&tts_options=%7B%22voice%22:%22james_earl_jones%22%7D", + 'media_id': 'media-source://tts/temporary/test_token.mp3', 'mime_type': 'audio/mpeg', 'url': '/api/tts_proxy/test_token.mp3', }), @@ -269,7 +269,7 @@ # name: test_audio_pipeline_with_enhancements.6 dict({ 'tts_output': dict({ - 'media_id': "media-source://tts/test?message=Sorry,+I+couldn't+understand+that&language=en-US&tts_options=%7B%22voice%22:%22james_earl_jones%22%7D", + 'media_id': 'media-source://tts/temporary/test_token.mp3', 'mime_type': 'audio/mpeg', 'url': '/api/tts_proxy/test_token.mp3', }), @@ -380,7 +380,7 @@ # name: test_audio_pipeline_with_wake_word_no_timeout.8 dict({ 'tts_output': dict({ - 'media_id': "media-source://tts/test?message=Sorry,+I+couldn't+understand+that&language=en-US&tts_options=%7B%22voice%22:%22james_earl_jones%22%7D", + 'media_id': 'media-source://tts/temporary/test_token.mp3', 'mime_type': 'audio/mpeg', 'url': '/api/tts_proxy/test_token.mp3', }), diff --git a/tests/components/tts/test_media_source.py b/tests/components/tts/test_media_source.py index a5c727541d2..2148291e3b1 100644 --- a/tests/components/tts/test_media_source.py +++ b/tests/components/tts/test_media_source.py @@ -2,11 +2,11 @@ from http import HTTPStatus import re -from unittest.mock import MagicMock +from unittest.mock import MagicMock, patch import pytest -from homeassistant.components import media_source +from homeassistant.components import media_source, tts from homeassistant.components.media_player import BrowseError from homeassistant.components.tts.media_source import ( MediaSourceOptions, @@ -304,7 +304,31 @@ async def test_generate_media_source_id_and_media_source_id_to_kwargs( } -async def test_stream_media_sources(hass: HomeAssistant) -> None: +async def test_stream_media_sources(hass: HomeAssistant, setup_media_source) -> None: """Test ResultStream as media sources.""" + assert await async_setup_component(hass, "tts", {}) + stream = tts.ResultStream( + token="mock-token.flac", + extension="flac", + content_type="audio/flac", + engine="test", + use_file_cache=True, + language="en", + options={}, + _manager=None, + ) + hass.data[tts.DATA_TTS_MANAGER].token_to_stream[stream.token] = stream + assert stream.media_source_id == "media-source://tts/temporary/mock-token.flac" - # media-source://tts/temporary/AT1BH2ZsWHipW0pCy0cm7w.mp3 + assert await media_source.async_resolve_media( + hass, stream.media_source_id, None + ) == media_source.PlayMedia(url=stream.url, mime_type=stream.content_type) + + async def async_stream_result(): + yield b"test" + + with patch.object(stream, "async_stream_result", async_stream_result): + assert await tts.async_get_media_source_audio(hass, stream.media_source_id) == ( + stream.extension, + b"test", + )