Add tests for send_media() exception handling in DeepgramSTTService

This commit is contained in:
Mark Backman
2026-03-26 09:20:40 -04:00
parent 259f5e124c
commit c331c75d66

View File

@@ -5,11 +5,12 @@
# #
import io import io
from unittest.mock import AsyncMock, MagicMock
import pytest import pytest
from loguru import logger from loguru import logger
from pipecat.services.deepgram.stt import _derive_deepgram_urls from pipecat.services.deepgram.stt import DeepgramSTTService, _derive_deepgram_urls
@pytest.mark.parametrize( @pytest.mark.parametrize(
@@ -49,3 +50,38 @@ def test_derive_deepgram_urls_unknown_scheme_warns():
assert "Unrecognized scheme" in sink.getvalue() assert "Unrecognized scheme" in sink.getvalue()
finally: finally:
logger.remove(handler_id) logger.remove(handler_id)
@pytest.mark.asyncio
async def test_run_stt_send_media_exception_clears_connection():
"""send_media() failure should log a warning and clear self._connection."""
service = DeepgramSTTService.__new__(DeepgramSTTService)
service._name = "DeepgramSTTService"
mock_connection = MagicMock()
mock_connection.send_media = AsyncMock(side_effect=Exception("websocket closed"))
service._connection = mock_connection
sink = io.StringIO()
handler_id = logger.add(sink, format="{message}")
try:
async for _ in service.run_stt(b"\x00" * 160):
pass
assert service._connection is None
assert "send_media failed" in sink.getvalue()
finally:
logger.remove(handler_id)
@pytest.mark.asyncio
async def test_run_stt_skips_send_when_connection_is_none():
"""When self._connection is None, run_stt should silently skip."""
service = DeepgramSTTService.__new__(DeepgramSTTService)
service._connection = None
# Should not raise
async for _ in service.run_stt(b"\x00" * 160):
pass
assert service._connection is None