mirror of
https://github.com/anten-ka/gotelegram_pro.git
synced 2026-05-19 13:26:02 +00:00
v2.5.0: add QR import and backup scheduling
This commit is contained in:
62
tests/test_admin_features.py
Normal file
62
tests/test_admin_features.py
Normal file
@@ -0,0 +1,62 @@
|
||||
import importlib.util
|
||||
import os
|
||||
import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
SERVER_PATH = ROOT / "admin-web" / "server.py"
|
||||
|
||||
|
||||
def load_server(tmpdir: Path):
|
||||
os.environ["GOTELEGRAM_BACKUP_DIR"] = str(tmpdir / "backups")
|
||||
os.environ["GOTELEGRAM_DIR"] = str(tmpdir / "gotelegram")
|
||||
module_name = "gotelegram_admin_server_test"
|
||||
sys.modules.pop(module_name, None)
|
||||
spec = importlib.util.spec_from_file_location(module_name, SERVER_PATH)
|
||||
module = importlib.util.module_from_spec(spec)
|
||||
assert spec.loader is not None
|
||||
spec.loader.exec_module(module)
|
||||
return module
|
||||
|
||||
|
||||
class AdminFeatureTests(unittest.TestCase):
|
||||
def test_backup_path_accepts_only_local_archives(self):
|
||||
with tempfile.TemporaryDirectory() as raw:
|
||||
tmpdir = Path(raw)
|
||||
server = load_server(tmpdir)
|
||||
server.BACKUP_DIR.mkdir(parents=True)
|
||||
good = server.BACKUP_DIR / "gotelegram_backup_20260425_120000.tar.gz"
|
||||
good.write_text("backup", encoding="utf-8")
|
||||
encrypted = server.BACKUP_DIR / "gotelegram_backup_20260425_120001.tar.gz.enc"
|
||||
encrypted.write_text("backup", encoding="utf-8")
|
||||
legacy = server.BACKUP_DIR / "backup_20260425_120002.tar.gz"
|
||||
legacy.write_text("backup", encoding="utf-8")
|
||||
|
||||
self.assertEqual(server.safe_backup_path(good.name), good.resolve())
|
||||
self.assertEqual(server.safe_backup_path(encrypted.name), encrypted.resolve())
|
||||
self.assertEqual(server.safe_backup_path(legacy.name), legacy.resolve())
|
||||
|
||||
with self.assertRaises(ValueError):
|
||||
server.safe_backup_path("../outside.tar.gz")
|
||||
with self.assertRaises(ValueError):
|
||||
server.safe_backup_path("gotelegram_backup_20260425_120000.tar.gz.sha256")
|
||||
with self.assertRaises(FileNotFoundError):
|
||||
server.safe_backup_path("missing.tar.gz")
|
||||
|
||||
def test_backup_schedule_calendar_rejects_unknown_values(self):
|
||||
with tempfile.TemporaryDirectory() as raw:
|
||||
server = load_server(Path(raw))
|
||||
self.assertEqual(server.backup_schedule_calendar("daily"), "*-*-* 03:20:00")
|
||||
self.assertEqual(server.backup_schedule_calendar("weekly"), "Sun 03:20:00")
|
||||
self.assertEqual(server.backup_schedule_calendar("monthly"), "*-*-01 03:20:00")
|
||||
self.assertIsNone(server.backup_schedule_calendar("off"))
|
||||
|
||||
with self.assertRaises(ValueError):
|
||||
server.backup_schedule_calendar("hourly")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user