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):
"""
- 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")