feat: download - download dwnload limieten in settings

This commit is contained in:
kodi
2026-03-14 13:38:44 +01:00
parent ea337338e3
commit 8ea2bd1498
12 changed files with 228 additions and 26 deletions
@@ -49,6 +49,16 @@ class SettingsApiGoldenTest(unittest.TestCase):
return asyncio.run(_run())
@staticmethod
def _default_zip_download_limits() -> dict:
return {
"max_items": 1000,
"max_total_input_bytes": 2147483648,
"max_individual_file_bytes": 524288000,
"scan_timeout_seconds": 10.0,
"symlink_policy": "not_allowed",
}
def test_settings_default_response(self) -> None:
response = self._request("GET", "/api/settings")
@@ -61,6 +71,7 @@ class SettingsApiGoldenTest(unittest.TestCase):
"preferred_startup_path_right": None,
"selected_theme": "default",
"selected_color_mode": "dark",
"zip_download_limits": self._default_zip_download_limits(),
},
)
@@ -79,6 +90,7 @@ class SettingsApiGoldenTest(unittest.TestCase):
"preferred_startup_path_right": None,
"selected_theme": "default",
"selected_color_mode": "dark",
"zip_download_limits": self._default_zip_download_limits(),
},
)
@@ -102,6 +114,7 @@ class SettingsApiGoldenTest(unittest.TestCase):
"preferred_startup_path_right": "storage1/docs",
"selected_theme": "default",
"selected_color_mode": "dark",
"zip_download_limits": self._default_zip_download_limits(),
},
)
self.assertEqual(
@@ -112,6 +125,7 @@ class SettingsApiGoldenTest(unittest.TestCase):
"preferred_startup_path_right": "storage1/docs",
"selected_theme": "default",
"selected_color_mode": "dark",
"zip_download_limits": self._default_zip_download_limits(),
},
)
@@ -123,6 +137,7 @@ class SettingsApiGoldenTest(unittest.TestCase):
self.assertEqual(response.json()["preferred_startup_path_right"], None)
self.assertEqual(response.json()["selected_theme"], "default")
self.assertEqual(response.json()["selected_color_mode"], "dark")
self.assertEqual(response.json()["zip_download_limits"], self._default_zip_download_limits())
def test_settings_preferred_startup_path_right_persistence(self) -> None:
response = self._request("POST", "/api/settings", {"preferred_startup_path_right": "storage1/docs"})
@@ -132,6 +147,7 @@ class SettingsApiGoldenTest(unittest.TestCase):
self.assertEqual(response.json()["preferred_startup_path_right"], "storage1/docs")
self.assertEqual(response.json()["selected_theme"], "default")
self.assertEqual(response.json()["selected_color_mode"], "dark")
self.assertEqual(response.json()["zip_download_limits"], self._default_zip_download_limits())
def test_settings_preferred_startup_path_empty_string_resets_only_left_to_null(self) -> None:
self._request(
@@ -149,6 +165,7 @@ class SettingsApiGoldenTest(unittest.TestCase):
self.assertEqual(response.json()["preferred_startup_path_right"], "storage1/docs")
self.assertEqual(response.json()["selected_theme"], "default")
self.assertEqual(response.json()["selected_color_mode"], "dark")
self.assertEqual(response.json()["zip_download_limits"], self._default_zip_download_limits())
def test_settings_selected_theme_persistence(self) -> None:
response = self._request("POST", "/api/settings", {"selected_theme": "midnight"})
@@ -156,6 +173,7 @@ class SettingsApiGoldenTest(unittest.TestCase):
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json()["selected_theme"], "midnight")
self.assertEqual(response.json()["selected_color_mode"], "dark")
self.assertEqual(response.json()["zip_download_limits"], self._default_zip_download_limits())
def test_settings_selected_theme_accepts_new_built_in_family(self) -> None:
response = self._request("POST", "/api/settings", {"selected_theme": "commander-electric"})
@@ -163,6 +181,7 @@ class SettingsApiGoldenTest(unittest.TestCase):
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json()["selected_theme"], "commander-electric")
self.assertEqual(response.json()["selected_color_mode"], "dark")
self.assertEqual(response.json()["zip_download_limits"], self._default_zip_download_limits())
def test_settings_selected_color_mode_persistence(self) -> None:
response = self._request("POST", "/api/settings", {"selected_color_mode": "light"})
@@ -170,6 +189,13 @@ class SettingsApiGoldenTest(unittest.TestCase):
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json()["selected_theme"], "default")
self.assertEqual(response.json()["selected_color_mode"], "light")
self.assertEqual(response.json()["zip_download_limits"], self._default_zip_download_limits())
def test_settings_includes_read_only_zip_download_limits(self) -> None:
response = self._request("GET", "/api/settings")
self.assertEqual(response.status_code, 200)
self.assertEqual(response.json()["zip_download_limits"], self._default_zip_download_limits())
def test_settings_rejects_invalid_selected_theme(self) -> None:
response = self._request("POST", "/api/settings", {"selected_theme": "unknown"})