Align missing-episode searches and permit reviewed profile overrides
This commit is contained in:
@@ -1128,6 +1128,18 @@ class ArrAddPayloadTests(unittest.IsolatedAsyncioTestCase):
|
||||
|
||||
|
||||
class CollectorManualDownloadTests(unittest.IsolatedAsyncioTestCase):
|
||||
def setUp(self):
|
||||
from backend.app.config import settings
|
||||
secret = patch.object(settings, 'jwt_secret', 'manual-release-tests-secret-1234567890123456')
|
||||
secret.start()
|
||||
self.addCleanup(secret.stop)
|
||||
|
||||
def selection(self, payload, request_id, source):
|
||||
payload['selectionToken'] = requests_router.manual_releases.issue_selection(
|
||||
{**payload, 'requiresOverride': False, 'rejections': []}, request_id,
|
||||
{'username': 'viewer'}, source, None)
|
||||
return payload
|
||||
|
||||
@staticmethod
|
||||
def _runtime() -> SimpleNamespace:
|
||||
return SimpleNamespace(
|
||||
@@ -1155,7 +1167,7 @@ class CollectorManualDownloadTests(unittest.IsolatedAsyncioTestCase):
|
||||
{"id": 202, "seasonNumber": 2, "monitored": True, "hasFile": True},
|
||||
]
|
||||
),
|
||||
search_releases=AsyncMock(
|
||||
search_episode_releases=AsyncMock(
|
||||
side_effect=[
|
||||
[
|
||||
{
|
||||
@@ -1194,15 +1206,17 @@ class CollectorManualDownloadTests(unittest.IsolatedAsyncioTestCase):
|
||||
"3909", user={"username": "viewer", "role": "user"}
|
||||
)
|
||||
|
||||
sonarr.search_releases.assert_any_await(42, 1)
|
||||
sonarr.search_releases.assert_any_await(42, 2)
|
||||
sonarr.search_episode_releases.assert_any_await(101)
|
||||
sonarr.search_episode_releases.assert_any_await(201)
|
||||
self.assertEqual(result["collector"], "Sonarr")
|
||||
self.assertEqual(len(result["releases"]), 1)
|
||||
self.assertEqual(len(result["releases"]), 2)
|
||||
self.assertTrue(result["releases"][0]["fullSeason"])
|
||||
self.assertEqual(result["releases"][0]["seasonNumber"], 1)
|
||||
self.assertEqual(result["releases"][0]["quality"], "WEBDL-1080p")
|
||||
self.assertTrue(result["releases"][0]["bestPick"])
|
||||
self.assertTrue(result["qualityFiltered"])
|
||||
self.assertFalse(result["qualityFiltered"])
|
||||
self.assertNotIn("selectionToken", result["releases"][1])
|
||||
self.assertTrue(result["releases"][1]["requiresOverride"])
|
||||
|
||||
async def test_movie_manual_search_uses_radarr(self) -> None:
|
||||
snapshot = Snapshot(
|
||||
@@ -1292,14 +1306,14 @@ class CollectorManualDownloadTests(unittest.IsolatedAsyncioTestCase):
|
||||
requests_router, "save_action"
|
||||
):
|
||||
result = await requests_router.action_grab(
|
||||
"3909", payload, user={"username": "viewer", "role": "user"}
|
||||
"3909", self.selection(payload, "3909", self._runtime().sonarr_base_url), user={"username": "viewer", "role": "user"}
|
||||
)
|
||||
|
||||
sonarr.grab_release.assert_awaited_once_with("season-one", 7)
|
||||
sonarr.push_release.assert_not_awaited()
|
||||
self.assertEqual(result["response"], {"collector": "Sonarr", "queued": True})
|
||||
|
||||
async def test_stale_movie_release_still_routes_through_radarr_push(self) -> None:
|
||||
async def test_stale_movie_release_requires_fresh_search(self) -> None:
|
||||
snapshot = Snapshot(
|
||||
request_id="4000",
|
||||
title="Example Movie",
|
||||
@@ -1335,15 +1349,12 @@ class CollectorManualDownloadTests(unittest.IsolatedAsyncioTestCase):
|
||||
), patch.object(requests_router, "RadarrClient", return_value=radarr), patch.object(
|
||||
requests_router, "save_action"
|
||||
):
|
||||
result = await requests_router.action_grab(
|
||||
"4000", payload, user={"username": "viewer", "role": "user"}
|
||||
)
|
||||
with self.assertRaises(HTTPException) as error:
|
||||
await requests_router.action_grab(
|
||||
"4000", self.selection(payload, "4000", self._runtime().radarr_base_url), user={"username": "viewer", "role": "user"})
|
||||
self.assertEqual(error.exception.status_code, 409)
|
||||
radarr.push_release.assert_not_awaited()
|
||||
|
||||
radarr.push_release.assert_awaited_once()
|
||||
pushed = radarr.push_release.await_args.args[0]
|
||||
self.assertEqual(pushed["downloadUrl"], "http://prowlarr.test/download/1")
|
||||
self.assertEqual(pushed["protocol"], "torrent")
|
||||
self.assertEqual(result["response"], {"collector": "Radarr", "queued": True})
|
||||
|
||||
|
||||
class DatabaseEmailTests(TempDatabaseMixin, unittest.TestCase):
|
||||
|
||||
Reference in New Issue
Block a user