Files
pobsync/src/pobsync_backend/tests/test_django_config_source.py

49 lines
1.9 KiB
Python
Raw Normal View History

from __future__ import annotations
from django.test import TestCase
from pobsync_backend.config_source import DjangoConfigSource
from pobsync_backend.models import GlobalConfig, HostConfig
class DjangoConfigSourceTests(TestCase):
def test_returns_effective_config_from_database(self) -> None:
GlobalConfig.objects.create(
name="default",
backup_root="/backups",
pobsync_home="/opt/pobsync",
data={
"backup_root": "/ignored",
"pobsync_home": "/ignored",
"ssh": {"user": "root", "port": 22, "options": []},
"rsync": {
"binary": "rsync",
"args": ["--archive"],
"timeout_seconds": 0,
"bwlimit_kbps": 0,
"extra_args": ["--numeric-ids"],
},
"defaults": {"source_root": "/", "destination_subdir": ""},
"excludes_default": ["/proc/***"],
"retention_defaults": {"daily": 7, "weekly": 4, "monthly": 3, "yearly": 1},
},
)
HostConfig.objects.create(
host="web-01",
address="web-01.example.test",
config={
"retention": {"daily": 7, "weekly": 4, "monthly": 3, "yearly": 1},
"excludes_add": ["/tmp/***"],
"includes": [],
"rsync": {"extra_args": ["--delete"]},
},
)
cfg = DjangoConfigSource().effective_config_for_host("web-01")
self.assertEqual(cfg["backup_root"], "/backups")
self.assertEqual(cfg["host"], "web-01")
self.assertEqual(cfg["address"], "web-01.example.test")
self.assertEqual(cfg["excludes_effective"], ["/proc/***", "/tmp/***"])
self.assertEqual(cfg["rsync"]["args_effective"], ["--archive", "--numeric-ids", "--delete"])