mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-09-29 18:16:43 +00:00
49 lines
2.0 KiB
Python
49 lines
2.0 KiB
Python
"""Regression coverage for PocketBase's native OCI data mount."""
|
|
from pathlib import Path
|
|
import sys
|
|
import unittest
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
sys.path.insert(0, str(ROOT / "src"))
|
|
INSTALLER = ROOT / "remote" / "install_oci.sh"
|
|
|
|
from proxmenux_oci.catalog import Catalog
|
|
|
|
|
|
class PocketBasePersistenceTests(unittest.TestCase):
|
|
def test_data_volume_uses_the_image_working_directory(self):
|
|
template = Catalog(ROOT).compose("pocketbase")
|
|
volumes = template["container_contract"]["volumes"]
|
|
|
|
self.assertEqual(len(volumes), 1)
|
|
self.assertEqual(volumes[0]["container_path"], "/pocketbase/pb_data")
|
|
self.assertTrue(volumes[0]["required"])
|
|
self.assertTrue(volumes[0]["managed_volume"]["backup"])
|
|
|
|
def test_first_install_seeds_only_the_new_managed_data_volume(self):
|
|
template = Catalog(ROOT).compose("pocketbase")
|
|
seeds = template["proxmox"]["installer_profile"]["volume_seeds"]
|
|
|
|
self.assertEqual(seeds, [{
|
|
"container_path": "/pocketbase/pb_data",
|
|
"source_path": "/pocketbase/pb_data",
|
|
"mount_types": ["managed-volume", "host-bind"],
|
|
}])
|
|
|
|
def test_seed_mechanism_is_opt_in_and_never_overwrites_existing_data(self):
|
|
installer = INSTALLER.read_text(encoding="utf-8")
|
|
|
|
self.assertIn('and all(.[]; . == "managed-volume" or . == "host-bind")', installer)
|
|
self.assertIn('[[ $selected_mount_type == managed-volume ]] && is_reused_managed_mount "$target";', installer)
|
|
self.assertIn('Refusing to seed a persistent volume that already contains data:', installer)
|
|
self.assertIn('Keeping existing host data without seeding it:', installer)
|
|
self.assertIn('mktemp -d "/var/tmp/proxmenux-oci-seed-${VMID}.XXXXXX"', installer)
|
|
self.assertIn('cleanup_volume_seed_staging || true', installer)
|
|
self.assertLess(installer.index('capture_volume_seeds\nMOUNT_INDEX=0'),
|
|
installer.index('while IFS=$\'\\t\' read -r TYPE TARGET'))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|