Phase 2: Docker and OIDC auth
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
"""Unit tests for the Jellyseerr client."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
from media_library_viewer_api.clients.jellyseerr import JellyseerrClient
|
||||
|
||||
|
||||
class JellyseerrClientTests(unittest.TestCase):
|
||||
def setUp(self) -> None:
|
||||
self.client = JellyseerrClient("https://requests.example.com/api/v1", "api-key")
|
||||
self.session = MagicMock()
|
||||
self.client.session = self.session
|
||||
|
||||
def test_jellyfin_users_accepts_wrapped_payload(self) -> None:
|
||||
response = MagicMock()
|
||||
response.raise_for_status.return_value = None
|
||||
response.json.return_value = {
|
||||
"users": [
|
||||
{"id": "jf1", "username": "alex", "email": "alex@example.com", "thumb": "/avatar"},
|
||||
{"id": "jf2", "username": "sam", "email": "sam@example.com", "thumb": "/avatar2"},
|
||||
]
|
||||
}
|
||||
self.session.get.return_value = response
|
||||
|
||||
users = self.client.jellyfin_users()
|
||||
|
||||
self.assertEqual(len(users), 2)
|
||||
self.assertEqual(users[0]["email"], "alex@example.com")
|
||||
self.assertEqual(users[1]["username"], "sam")
|
||||
self.session.get.assert_called_once()
|
||||
|
||||
def test_jellyfin_users_accepts_list_payload(self) -> None:
|
||||
response = MagicMock()
|
||||
response.raise_for_status.return_value = None
|
||||
response.json.return_value = [
|
||||
{"id": "jf1", "username": "alex"},
|
||||
{"id": "jf2", "username": "sam"},
|
||||
]
|
||||
self.session.get.return_value = response
|
||||
|
||||
users = self.client.jellyfin_users()
|
||||
|
||||
self.assertEqual([u["username"] for u in users], ["alex", "sam"])
|
||||
|
||||
def test_users_uses_take_and_skip(self) -> None:
|
||||
first = MagicMock()
|
||||
first.raise_for_status.return_value = None
|
||||
first.json.return_value = {
|
||||
"pageInfo": {"results": 3, "pages": 2, "pageSize": 2, "page": 1},
|
||||
"results": [
|
||||
{"id": 1, "username": "alex", "email": "alex@example.com"},
|
||||
{"id": 2, "username": "sam", "email": "sam@example.com"},
|
||||
],
|
||||
}
|
||||
second = MagicMock()
|
||||
second.raise_for_status.return_value = None
|
||||
second.json.return_value = {
|
||||
"pageInfo": {"results": 3, "pages": 2, "pageSize": 2, "page": 2},
|
||||
"results": [
|
||||
{"id": 3, "username": "max", "email": "max@example.com"},
|
||||
],
|
||||
}
|
||||
self.session.get.side_effect = [first, second]
|
||||
|
||||
users = self.client.users(page_size=2)
|
||||
|
||||
self.assertEqual([u["username"] for u in users], ["alex", "sam", "max"])
|
||||
self.assertEqual(self.session.get.call_args_list[0].kwargs["params"], {"take": 2, "skip": 0})
|
||||
self.assertEqual(self.session.get.call_args_list[1].kwargs["params"], {"take": 2, "skip": 2})
|
||||
|
||||
def test_absolute_url_normalizes_relative_paths(self) -> None:
|
||||
self.assertEqual(self.client.absolute_url("/avatar.png"), "https://requests.example.com/avatar.png")
|
||||
self.assertEqual(self.client.absolute_url("avatar.png"), "https://requests.example.com/avatar.png")
|
||||
self.assertEqual(self.client.absolute_url("https://cdn.example.com/x.png"), "https://cdn.example.com/x.png")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user