from unittest.mock import AsyncMock import respx from httpx import Response from app.services.downloader import Downloader from app.services.validator import MediaValidator @respx.mock async def test_url_download_streams_to_disk(settings, tmp_path) -> None: url = "https://media.example.test/sample.mp3" respx.get(url).mock( return_value=Response(200, content=b"ID3data", headers={"content-type": "audio/mpeg"}) ) downloader = Downloader(settings, MediaValidator(settings)) downloader.validate_url = AsyncMock() # type: ignore[method-assign] path, mime_type = await downloader.download(url, tmp_path) assert path.read_bytes() == b"ID3data" assert mime_type == "audio/mpeg"