Initialisiere VoTiAn NG mit Docker-Build, .env-Konfiguration und Cookie-Sitzungen

This commit is contained in:
Sven committed 2026-10-05 17:45:38 +02:00
commit 1a30233269
63 files changed
+12138

No files matched your search

+52
View File
@@ -0,0 +1,52 @@
import contextlib
import importlib.util
import io
import json
from pathlib import Path
import unittest
from unittest.mock import patch
MODULE_PATH = Path(__file__).resolve().parents[1] / "scripts/check-database.py"
SPEC = importlib.util.spec_from_file_location("database_check", MODULE_PATH)
CHECK = importlib.util.module_from_spec(SPEC)
SPEC.loader.exec_module(CHECK)
class DatabaseCheckLauncherTest(unittest.TestCase):
def test_delegates_to_java_with_credentials_only_in_environment(self):
environment = {"DB_URL": "jdbc:mariadb://test.invalid/db", "DB_USER": "fixture", "DB_PASSWORD": "test-secret"}
with patch.object(CHECK.config, "backend_jar", return_value=Path("/fixture/backend.jar")), \
patch.object(CHECK.config, "database_environment", return_value=environment), \
patch.object(CHECK.os, "chdir"), patch.object(CHECK.os, "execvpe") as execute:
self.assertEqual(CHECK.main(), 0)
command, arguments, actual_environment = execute.call_args.args
self.assertEqual(command, "java")
self.assertEqual(arguments[-1], "--database-check")
self.assertNotIn("test-secret", " ".join(arguments))
self.assertNotIn("test.invalid", " ".join(arguments))
self.assertEqual(actual_environment, environment)
def test_missing_jar_never_loads_credentials_or_starts_java(self):
output = io.StringIO()
with patch.object(CHECK.config, "backend_jar", side_effect=FileNotFoundError), \
patch.object(CHECK.config, "database_environment") as load, \
patch.object(CHECK.os, "execvpe") as execute, contextlib.redirect_stdout(output):
self.assertEqual(CHECK.main(), 2)
load.assert_not_called()
execute.assert_not_called()
self.assertFalse(json.loads(output.getvalue())["connected"])
def test_configuration_error_is_sanitized_json(self):
output = io.StringIO()
with patch.object(CHECK.config, "backend_jar", return_value=Path("/fixture/backend.jar")), \
patch.object(CHECK.config, "database_environment", side_effect=ValueError("secret=do-not-expose")), \
patch.object(CHECK.os, "execvpe") as execute, contextlib.redirect_stdout(output):
self.assertEqual(CHECK.main(), 2)
execute.assert_not_called()
self.assertNotIn("do-not-expose", output.getvalue())
self.assertEqual(json.loads(output.getvalue())["writes"], 0)
if __name__ == "__main__":
unittest.main()