Files
Unraid-AppOps-Gateway-Public/backend/tests/test_controller_root_procedure_contract.py
T

40 lines
1.8 KiB
Python

from __future__ import annotations
import re
import shlex
from pathlib import Path
ROOT = Path(__file__).resolve().parents[2]
def test_windows_wrapper_archives_every_file_required_by_root_installer():
installer = (ROOT / "scripts/upgrade_deployment_controller.sh").read_text(encoding="utf-8")
wrapper = (ROOT / "scripts/upgrade_deployment_controller.ps1").read_text(encoding="utf-8")
required = re.search(r"source_paths=\(\s*(.*?)\n\)", installer, re.DOTALL)
archived = re.search(r"& git archive --format=tar .*? \$SourceRevision (.*?)\r?\n", wrapper)
assert required is not None and archived is not None
archive_paths = set(shlex.split(archived.group(1)))
assert all(
path in archive_paths
or any(path.startswith(f"{directory}/") for directory in archive_paths)
for path in shlex.split(required.group(1))
)
assert "scripts/prepare_controller_hub_release_volume.py" in archived.group(1)
assert "scripts/upgrade_deployment_controller.sh" in archived.group(1)
def test_windows_wrapper_supplies_private_archive_and_exact_image_identity():
wrapper = (ROOT / "scripts/upgrade_deployment_controller.ps1").read_text(encoding="utf-8")
installer = (ROOT / "scripts/upgrade_deployment_controller.sh").read_text(encoding="utf-8")
assert "mktemp -d -p /tmp 'itworx-controller-artifact-promoter-" in wrapper
assert "^/tmp/itworx-controller-artifact-promoter-" in wrapper
assert '"chmod 600 \'$remoteArchive\' && chmod 700 \'$remoteScript\'' in wrapper
assert "docker inspect --format '{{.Image}}' gitea-deploy-control" in wrapper
assert "-cnotmatch '^sha256:[0-9a-f]{64}$'" in wrapper
assert "--image-id '$imageId'" in wrapper
assert "--image-id) image_id=\"$2\"" in installer
assert '[[ "$archive_parent" =~ ^/tmp/itworx-controller-artifact-promoter-' in installer