From d90f22f8e588e5415d825387205c19fcdfbde89a Mon Sep 17 00:00:00 2001 From: Sebastian Mohr Date: Sat, 16 May 2026 16:14:37 +0200 Subject: [PATCH] Moved to requests_mock fixtures: - Renamed image_response_mocker to image_request_mock - Use requests_mock.mocker.Mocker instead of responses.RequestsMock - Renamed function add to get --- beets/test/helper.py | 42 ++++--- test/plugins/test_art.py | 222 ++++++++++++++++++---------------- test/plugins/test_embedart.py | 18 +-- 3 files changed, 153 insertions(+), 129 deletions(-) diff --git a/beets/test/helper.py b/beets/test/helper.py index f159e08fa..781b8845d 100644 --- a/beets/test/helper.py +++ b/beets/test/helper.py @@ -37,11 +37,10 @@ from enum import Enum from functools import cached_property from pathlib import Path from tempfile import gettempdir, mkdtemp, mkstemp -from typing import Any, ClassVar +from typing import TYPE_CHECKING, Any, ClassVar from unittest.mock import Mock, patch import pytest -import responses from mediafile import Image, MediaFile import beets @@ -59,6 +58,9 @@ from beets.util import ( syspath, ) +if TYPE_CHECKING: + from requests_mock.mocker import Mocker + class LogCapture(logging.Handler): def __init__(self): @@ -404,6 +406,8 @@ class BeetsTestCase(unittest.TestCase, TestHelper): modifications that will then be automatically removed when the test completes. Also provides some additional assertion methods, a temporary directory, and a DummyIO. + + DEPRECATED: Use pytest + PytestTestHelper instead. """ def setUp(self): @@ -831,9 +835,10 @@ class AutotagImportTestCase(ImportTestCase): @dataclass(slots=True) -class ImageResponseMocker: - responses_mock: responses.RequestsMock +class ImageRequestMocker: + mocker: Mocker + # Image types and their file headers IMAGE_HEADERS: ClassVar[dict[str, bytes]] = { "image/jpeg": b"\xff\xd8\xff\x00\x00\x00JFIF", "image/png": b"\211PNG\r\n\032\n", @@ -846,19 +851,21 @@ class ImageResponseMocker: ), } - def add( + def get( self, url: str, *, content_type: str = "image/jpeg", file_type: str | None = None, - body: str | bytes | None = None, + content: str | bytes | None = None, ) -> None: actual_file_type = file_type or content_type - if body is None: + if content is None: try: - body = self.IMAGE_HEADERS[actual_file_type].ljust(32, b"\x00") + content = self.IMAGE_HEADERS[actual_file_type].ljust( + 32, b"\x00" + ) except KeyError as exc: # If we can't return a file that looks like real file of the requested # type, better fail the test than returning something else, which might @@ -867,11 +874,15 @@ class ImageResponseMocker: f"Mocking {actual_file_type!r} responses not supported" ) from exc - self.responses_mock.add( - responses.GET, + if isinstance(content, str): + content = content.encode() + + self.mocker.get( url, - content_type=content_type, - body=body, + headers={ + "Content-Type": content_type, + }, + content=content, ) @@ -879,11 +890,8 @@ class FetchImageHelper: """Pytest mixin providing image response mocking utilities.""" @pytest.fixture - def image_response_mocker(self): - with responses.RequestsMock( - assert_all_requests_are_fired=False - ) as rsps: - yield ImageResponseMocker(rsps) + def image_request_mock(self, requests_mock): + return ImageRequestMocker(requests_mock) class CleanupModulesMixin: diff --git a/test/plugins/test_art.py b/test/plugins/test_art.py index a9196700c..68c3c4823 100644 --- a/test/plugins/test_art.py +++ b/test/plugins/test_art.py @@ -24,7 +24,8 @@ from unittest.mock import patch import confuse import pytest -import responses +from requests_mock import ANY as ANYREEQUEST +from requests_mock.exceptions import NoMockAddress from beets import config, importer, logging, util from beets.autotag.distance import Distance @@ -43,7 +44,9 @@ if TYPE_CHECKING: from collections.abc import Iterator, Sequence from unittest.mock import MagicMock - from beets.test.helper import ImageResponseMocker + from requests_mock.mocker import Mocker + + from beets.test.helper import ImageRequestMocker class Settings(fetchart.FetchArtPlugin): @@ -76,6 +79,22 @@ class UseThePlugin(PytestTestHelper): def setup_plugin(self, setup): self.plugin = fetchart.FetchArtPlugin() + @pytest.fixture(autouse=True) + def requests_mock_all(self, requests_mock): + """Will disable all outgoing requests and raise an error! + + Tests need to mock all requests! + """ + # Register some “safe” mocks you actually want to allow, if any: + # requests_mock.get("https://example.com/health", json={"status": "ok"}) + + # Optional: disable any URL not explicitly mocked + requests_mock.register_uri( + ANYREEQUEST, + ANYREEQUEST, + exc=NoMockAddress, + ) + @pytest.fixture(autouse=True, scope="class") def cleanup(self): try: @@ -205,7 +224,7 @@ class CAAData: class TestFetchImage(UseThePlugin, FetchImageHelper): - URL: str = "http://example.com/test.jpg" + URL = "http://example.com/test.jpg" @pytest.fixture def settings(self) -> Settings: @@ -224,9 +243,9 @@ class TestFetchImage(UseThePlugin, FetchImageHelper): source: DummyRemoteArtSource, candidate: fetchart.Candidate, settings: Settings, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ) -> None: - image_response_mocker.add(self.URL, content_type="image/watercolour") + image_request_mock.get(self.URL, content_type="image/watercolour") source.fetch_image(candidate, settings) assert candidate.path is None @@ -235,9 +254,12 @@ class TestFetchImage(UseThePlugin, FetchImageHelper): source: DummyRemoteArtSource, candidate: fetchart.Candidate, settings: Settings, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ) -> None: - image_response_mocker.add(self.URL, content_type="image/jpeg") + image_request_mock.get( + self.URL, + content_type="image/jpeg", + ) source.fetch_image(candidate, settings) assert candidate.path is not None @@ -246,9 +268,9 @@ class TestFetchImage(UseThePlugin, FetchImageHelper): source: DummyRemoteArtSource, candidate: fetchart.Candidate, settings: Settings, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ) -> None: - image_response_mocker.add(self.URL, content_type="image/png") + image_request_mock.get(self.URL, content_type="image/png") source.fetch_image(candidate, settings) assert candidate.path is not None assert os.path.splitext(candidate.path)[1] == b".png" @@ -259,9 +281,9 @@ class TestFetchImage(UseThePlugin, FetchImageHelper): source: DummyRemoteArtSource, candidate: fetchart.Candidate, settings: Settings, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ) -> None: - image_response_mocker.add( + image_request_mock.get( self.URL, content_type="image/jpeg", file_type="image/png" ) source.fetch_image(candidate, settings) @@ -394,9 +416,9 @@ class TestCombined(UseThePlugin, FetchImageHelper, CAAData): def test_main_interface_returns_amazon_art( self, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): - image_response_mocker.add(self.AMAZON_URL) + image_request_mock.get(self.AMAZON_URL) album = Album(asin=self.ASIN) candidate = self.plugin.art_for_album(album, None) assert candidate is not None @@ -409,10 +431,10 @@ class TestCombined(UseThePlugin, FetchImageHelper, CAAData): def test_main_interface_gives_precedence_to_fs_art( self, dpath: bytes, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): _common.touch(os.path.join(dpath, b"art.jpg")) - image_response_mocker.add(self.AMAZON_URL) + image_request_mock.get(self.AMAZON_URL) album = Album(asin=self.ASIN) candidate = self.plugin.art_for_album(album, [dpath]) assert candidate is not None @@ -421,9 +443,9 @@ class TestCombined(UseThePlugin, FetchImageHelper, CAAData): def test_main_interface_falls_back_to_amazon( self, dpath: bytes, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): - image_response_mocker.add(self.AMAZON_URL) + image_request_mock.get(self.AMAZON_URL) album = Album(asin=self.ASIN) candidate = self.plugin.art_for_album(album, [dpath]) assert candidate is not None @@ -432,41 +454,38 @@ class TestCombined(UseThePlugin, FetchImageHelper, CAAData): def test_main_interface_tries_amazon_before_aao( self, dpath: bytes, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): - image_response_mocker.add(self.AMAZON_URL) + image_request_mock.get(self.AMAZON_URL) album = Album(asin=self.ASIN) self.plugin.art_for_album(album, [dpath]) - assert len(image_response_mocker.responses_mock.calls) == 1 + assert image_request_mock.mocker.called_once assert ( - image_response_mocker.responses_mock.calls[0].request.url - == self.AMAZON_URL + image_request_mock.mocker.request_history[0].url == self.AMAZON_URL ) def test_main_interface_falls_back_to_aao( self, dpath: bytes, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): - image_response_mocker.add(self.AMAZON_URL, content_type="text/html") + image_request_mock.get(self.AMAZON_URL, content_type="text/html") + image_request_mock.get(self.AAO_URL, content_type="image/jpeg") album = Album(asin=self.ASIN) self.plugin.art_for_album(album, [dpath]) - assert ( - image_response_mocker.responses_mock.calls[-1].request.url - == self.AAO_URL - ) + assert image_request_mock.mocker.request_history[-1].url == self.AAO_URL def test_main_interface_uses_caa_when_mbid_available( self, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): - image_response_mocker.add(self.RELEASE_URL, body=self.RESPONSE_RELEASE) - image_response_mocker.add(self.GROUP_URL, body=self.RESPONSE_GROUP) - image_response_mocker.add( + image_request_mock.get(self.RELEASE_URL, content=self.RESPONSE_RELEASE) + image_request_mock.get(self.GROUP_URL, content=self.RESPONSE_GROUP) + image_request_mock.get( "http://coverartarchive.org/release/rid/12345.gif", content_type="image/gif", ) - image_response_mocker.add( + image_request_mock.get( "http://coverartarchive.org/release/rid/12345.jpg", content_type="image/jpeg", ) @@ -477,31 +496,30 @@ class TestCombined(UseThePlugin, FetchImageHelper, CAAData): ) candidate = self.plugin.art_for_album(album, None) assert candidate is not None - assert len(image_response_mocker.responses_mock.calls) == 3 + assert image_request_mock.mocker.call_count == 3 assert ( - image_response_mocker.responses_mock.calls[0].request.url - == self.RELEASE_URL + image_request_mock.mocker.request_history[0].url == self.RELEASE_URL ) def test_local_only_does_not_access_network( self, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): album = Album(mb_albumid=self.MBID, asin=self.ASIN) self.plugin.art_for_album(album, None, local_only=True) - assert len(image_response_mocker.responses_mock.calls) == 0 + assert not image_request_mock.mocker.called def test_local_only_gets_fs_image( self, dpath: bytes, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): _common.touch(os.path.join(dpath, b"art.jpg")) album = Album(mb_albumid=self.MBID, asin=self.ASIN) candidate = self.plugin.art_for_album(album, [dpath], local_only=True) assert candidate is not None assert candidate.path == os.path.join(dpath, b"art.jpg") - assert len(image_response_mocker.responses_mock.calls) == 0 + assert not image_request_mock.mocker.called class TestAAO(UseThePlugin, FetchImageHelper): @@ -520,7 +538,7 @@ class TestAAO(UseThePlugin, FetchImageHelper): self, source: fetchart.AlbumArtOrg, settings: Settings, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ) -> None: body = """
@@ -529,8 +547,8 @@ class TestAAO(UseThePlugin, FetchImageHelper): View larger image """ - image_response_mocker.add( - self.AAO_URL, body=body, content_type="text/html" + image_request_mock.get( + self.AAO_URL, content=body, content_type="text/html" ) album = Album(asin=self.ASIN) candidate = next(source.get(album, settings, [])) @@ -540,10 +558,10 @@ class TestAAO(UseThePlugin, FetchImageHelper): self, source: fetchart.AlbumArtOrg, settings: Settings, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ) -> None: - image_response_mocker.add( - self.AAO_URL, body="blah blah", content_type="text/html" + image_request_mock.get( + self.AAO_URL, content="blah blah", content_type="text/html" ) album = Album(asin=self.ASIN) with pytest.raises(StopIteration): @@ -568,7 +586,7 @@ class TestITunesStore(UseThePlugin, FetchImageHelper): source: fetchart.ITunesStore, settings: Settings, album, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): json = """{ "results": @@ -580,9 +598,9 @@ class TestITunesStore(UseThePlugin, FetchImageHelper): } ] }""" - image_response_mocker.add( + image_request_mock.get( fetchart.ITunesStore.API_URL, - body=json, + content=json, content_type="application/json", ) candidate = next(source.get(album, settings, [])) @@ -594,13 +612,13 @@ class TestITunesStore(UseThePlugin, FetchImageHelper): source: fetchart.ITunesStore, settings: Settings, album: Album, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, caplog: pytest.LogCaptureFixture, ): json = '{"results": []}' - image_response_mocker.add( + image_request_mock.get( fetchart.ITunesStore.API_URL, - body=json, + content=json, content_type="application/json", ) expected = "got no results" @@ -615,14 +633,13 @@ class TestITunesStore(UseThePlugin, FetchImageHelper): source: fetchart.ITunesStore, settings: Settings, album: Album, - image_response_mocker: ImageResponseMocker, + requests_mock: Mocker, caplog: pytest.LogCaptureFixture, ): - image_response_mocker.responses_mock.add( - responses.GET, + requests_mock.get( fetchart.ITunesStore.API_URL, json={"error": "not found"}, - status=404, + status_code=404, ) expected = "iTunes search failed: 404 Client Error" @@ -636,7 +653,7 @@ class TestITunesStore(UseThePlugin, FetchImageHelper): source: fetchart.ITunesStore, settings: Settings, album: Album, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): json = """{ "results": @@ -647,9 +664,9 @@ class TestITunesStore(UseThePlugin, FetchImageHelper): } ] }""" - image_response_mocker.add( + image_request_mock.get( fetchart.ITunesStore.API_URL, - body=json, + content=json, content_type="application/json", ) candidate = next(source.get(album, settings, [])) @@ -661,7 +678,7 @@ class TestITunesStore(UseThePlugin, FetchImageHelper): source: fetchart.ITunesStore, settings: Settings, album: Album, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, caplog: pytest.LogCaptureFixture, ): json = """{ @@ -673,9 +690,9 @@ class TestITunesStore(UseThePlugin, FetchImageHelper): } ] }""" - image_response_mocker.add( + image_request_mock.get( fetchart.ITunesStore.API_URL, - body=json, + content=json, content_type="application/json", ) expected = "Malformed itunes candidate" @@ -690,13 +707,13 @@ class TestITunesStore(UseThePlugin, FetchImageHelper): source: fetchart.ITunesStore, settings: Settings, album: Album, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, caplog: pytest.LogCaptureFixture, ): json = '{"error": {"errors": [{"reason": "some reason"}]}}' - image_response_mocker.add( + image_request_mock.get( fetchart.ITunesStore.API_URL, - body=json, + content=json, content_type="application/json", ) expected = "not found in json. Fields are" @@ -711,13 +728,13 @@ class TestITunesStore(UseThePlugin, FetchImageHelper): source: fetchart.ITunesStore, settings: Settings, album: Album, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, caplog: pytest.LogCaptureFixture, ): json = """bla blup""" - image_response_mocker.add( + image_request_mock.get( fetchart.ITunesStore.API_URL, - body=json, + content=json, content_type="application/json", ) expected = "Could not decode json response:" @@ -741,13 +758,13 @@ class TestGoogleImage(UseThePlugin, FetchImageHelper): self, source: fetchart.GoogleImages, settings: Settings, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): album = Album(albumartist="some artist", album="some album") json = '{"items": [{"link": "url_to_the_image"}]}' - image_response_mocker.add( + image_request_mock.get( fetchart.GoogleImages.URL, - body=json, + content=json, content_type="application/json", ) candidate = next(source.get(album, settings, [])) @@ -757,13 +774,13 @@ class TestGoogleImage(UseThePlugin, FetchImageHelper): self, source: fetchart.GoogleImages, settings: Settings, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): album = Album(albumartist="some artist", album="some album") json = '{"error": {"errors": [{"reason": "some reason"}]}}' - image_response_mocker.add( + image_request_mock.get( fetchart.GoogleImages.URL, - body=json, + content=json, content_type="application/json", ) with pytest.raises(StopIteration): @@ -773,13 +790,13 @@ class TestGoogleImage(UseThePlugin, FetchImageHelper): self, source: fetchart.GoogleImages, settings: Settings, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): album = Album(albumartist="some artist", album="some album") json = """bla blup""" - image_response_mocker.add( + image_request_mock.get( fetchart.GoogleImages.URL, - body=json, + content=json, content_type="application/json", ) with pytest.raises(StopIteration): @@ -799,25 +816,24 @@ class TestCoverArtArchive(UseThePlugin, FetchImageHelper, CAAData): self, source: fetchart.CoverArtArchive, settings: Settings, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): album = Album( mb_albumid=self.MBID_RELASE, mb_releasegroupid=self.MBID_GROUP ) - image_response_mocker.add(self.RELEASE_URL, body=self.RESPONSE_RELEASE) - image_response_mocker.add(self.GROUP_URL, body=self.RESPONSE_GROUP) + image_request_mock.get(self.RELEASE_URL, content=self.RESPONSE_RELEASE) + image_request_mock.get(self.GROUP_URL, content=self.RESPONSE_GROUP) candidates = list(source.get(album, settings, [])) assert len(candidates) == 3 - assert len(image_response_mocker.responses_mock.calls) == 2 + assert image_request_mock.mocker.call_count == 2 assert ( - image_response_mocker.responses_mock.calls[0].request.url - == self.RELEASE_URL + image_request_mock.mocker.request_history[0].url == self.RELEASE_URL ) def test_fetchart_uses_caa_pre_sized_maxwidth_thumbs( self, source: fetchart.CoverArtArchive, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): # CAA provides pre-sized thumbnails of width 250px, 500px, and 1200px # We only test with one of them here @@ -827,8 +843,8 @@ class TestCoverArtArchive(UseThePlugin, FetchImageHelper, CAAData): album = Album( mb_albumid=self.MBID_RELASE, mb_releasegroupid=self.MBID_GROUP ) - image_response_mocker.add(self.RELEASE_URL, body=self.RESPONSE_RELEASE) - image_response_mocker.add(self.GROUP_URL, body=self.RESPONSE_GROUP) + image_request_mock.get(self.RELEASE_URL, content=self.RESPONSE_RELEASE) + image_request_mock.get(self.GROUP_URL, content=self.RESPONSE_GROUP) candidates = list(source.get(album, settings, [])) assert len(candidates) == 3 for candidate in candidates: @@ -838,7 +854,7 @@ class TestCoverArtArchive(UseThePlugin, FetchImageHelper, CAAData): def test_caa_finds_image_if_maxwidth_is_set_and_thumbnails_is_empty( self, source: fetchart.CoverArtArchive, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): # CAA provides pre-sized thumbnails of width 250px, 500px, and 1200px # We only test with one of them here @@ -848,11 +864,11 @@ class TestCoverArtArchive(UseThePlugin, FetchImageHelper, CAAData): album = Album( mb_albumid=self.MBID_RELASE, mb_releasegroupid=self.MBID_GROUP ) - image_response_mocker.add( - self.RELEASE_URL, body=self.RESPONSE_RELEASE_WITHOUT_THUMBNAILS + image_request_mock.get( + self.RELEASE_URL, content=self.RESPONSE_RELEASE_WITHOUT_THUMBNAILS ) - image_response_mocker.add( - self.GROUP_URL, body=self.RESPONSE_GROUP_WITHOUT_THUMBNAILS + image_request_mock.get( + self.GROUP_URL, content=self.RESPONSE_GROUP_WITHOUT_THUMBNAILS ) candidates = list(source.get(album, settings, [])) assert len(candidates) == 3 @@ -931,12 +947,12 @@ class TestFanartTV(UseThePlugin, FetchImageHelper): self, source: fetchart.FanartTV, settings: Settings, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): album: Album = Album(mb_releasegroupid="thereleasegroupid") - image_response_mocker.add( + image_request_mock.get( f"{fetchart.FanartTV.API_ALBUMS}thereleasegroupid", - body=self.RESPONSE_MULTIPLE, + content=self.RESPONSE_MULTIPLE, content_type="application/json", ) candidate = next(source.get(album, settings, [])) @@ -946,12 +962,12 @@ class TestFanartTV(UseThePlugin, FetchImageHelper): self, source: fetchart.FanartTV, settings: Settings, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): album = Album(mb_releasegroupid="thereleasegroupid") - image_response_mocker.add( + image_request_mock.get( f"{fetchart.FanartTV.API_ALBUMS}thereleasegroupid", - body=self.RESPONSE_ERROR, + content=self.RESPONSE_ERROR, content_type="application/json", ) with pytest.raises(StopIteration): @@ -961,12 +977,12 @@ class TestFanartTV(UseThePlugin, FetchImageHelper): self, source: fetchart.FanartTV, settings: Settings, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): album = Album(mb_releasegroupid="thereleasegroupid") - image_response_mocker.add( + image_request_mock.get( f"{fetchart.FanartTV.API_ALBUMS}thereleasegroupid", - body=self.RESPONSE_MALFORMED, + content=self.RESPONSE_MALFORMED, content_type="application/json", ) with pytest.raises(StopIteration): @@ -976,13 +992,13 @@ class TestFanartTV(UseThePlugin, FetchImageHelper): self, source: fetchart.FanartTV, settings: Settings, - image_response_mocker: ImageResponseMocker, + image_request_mock: ImageRequestMocker, ): # The source used to fail when there were images present, but no cover album = Album(mb_releasegroupid="thereleasegroupid") - image_response_mocker.add( + image_request_mock.get( f"{fetchart.FanartTV.API_ALBUMS}thereleasegroupid", - body=self.RESPONSE_NO_ART, + content=self.RESPONSE_NO_ART, content_type="application/json", ) with pytest.raises(StopIteration): diff --git a/test/plugins/test_embedart.py b/test/plugins/test_embedart.py index eb41c04c5..4473ae335 100644 --- a/test/plugins/test_embedart.py +++ b/test/plugins/test_embedart.py @@ -41,7 +41,7 @@ from beetsplug._utils import art from test.test_art_resize import DummyIMBackend if TYPE_CHECKING: - from beets.test.helper import ImageResponseMocker + from beets.test.helper import ImageRequestMocker def require_artresizer_compare(test): @@ -278,43 +278,43 @@ class TestEmbedartCli(PytestImportHelper, IOMixin, FetchImageHelper): assert mediafile.images[0].data == self.image_data def test_embed_art_from_url_with_yes_input( - self, image_response_mocker: ImageResponseMocker + self, image_request_mock: ImageRequestMocker ): self._setup_data() album = self.add_album_fixture() item = album.items()[0] - image_response_mocker.add( + image_request_mock.get( "http://example.com/test.jpg", content_type="image/jpeg" ) self.io.addinput("y") self.run_command("embedart", "-u", "http://example.com/test.jpg") mediafile = MediaFile(syspath(item.path)) - assert mediafile.images[0].data == image_response_mocker.IMAGE_HEADERS[ + assert mediafile.images[0].data == image_request_mock.IMAGE_HEADERS[ "image/jpeg" ].ljust(32, b"\x00") def test_embed_art_from_url_png( - self, image_response_mocker: ImageResponseMocker + self, image_request_mock: ImageRequestMocker ): self._setup_data() album = self.add_album_fixture() item = album.items()[0] - image_response_mocker.add( + image_request_mock.get( "http://example.com/test.png", content_type="image/png" ) self.run_command("embedart", "-y", "-u", "http://example.com/test.png") mediafile = MediaFile(syspath(item.path)) - assert mediafile.images[0].data == image_response_mocker.IMAGE_HEADERS[ + assert mediafile.images[0].data == image_request_mock.IMAGE_HEADERS[ "image/png" ].ljust(32, b"\x00") def test_embed_art_from_url_not_image( - self, image_response_mocker: ImageResponseMocker + self, image_request_mock: ImageRequestMocker ): self._setup_data() album = self.add_album_fixture() item = album.items()[0] - image_response_mocker.add( + image_request_mock.get( "http://example.com/test.html", content_type="text/html" ) self.run_command("embedart", "-y", "-u", "http://example.com/test.html")