server-up/tests/test_catalogus_nuttige_apps.py
Ramon 9008e39fe4
All checks were successful
Deploy server-up (dev) / deploy (push) Successful in 8m14s
feat(apps): voeg elf ARM64-geschikte apps toe
2026-08-06 00:34:42 +02:00

91 lines
3.2 KiB
Python

"""Regressietests voor de infrastructuur- en beheerapps uit v0.8.17."""
import json
from pathlib import Path
import pytest
WORTEL = Path(__file__).resolve().parent.parent
APPS = WORTEL / "apps"
NIEUWE_APPS = {
"activepieces",
"consul",
"guacamole",
"lldap",
"meshcentral",
"nomad-server",
"openobserve",
"pairdrop",
"rustdesk-server",
"victoriametrics",
"windmill",
}
def _template(app: str) -> dict:
return json.loads((APPS / app / "template.json").read_text(encoding="utf-8"))
def test_alle_geselecteerde_apps_staan_in_de_catalogus():
aanwezig = {pad.name for pad in APPS.iterdir() if pad.is_dir()}
assert NIEUWE_APPS <= aanwezig
@pytest.mark.parametrize("app", sorted(NIEUWE_APPS))
def test_nieuwe_apps_ondersteunen_pi_en_x86(app):
architecturen = set(_template(app)["metadata"]["architectures"])
assert {"amd64", "arm64"} <= architecturen
def test_nomad_container_is_alleen_control_plane():
compose = (APPS / "nomad-server" / "files" / "compose.yaml").read_text()
config = (APPS / "nomad-server" / "files" / "server.hcl").read_text()
assert "-config=/nomad/config/server.hcl" in compose
assert "enabled = false" in config
assert "enabled = true" in config
regels = {" ".join(regel.split()) for regel in config.splitlines()}
for adres in ("http", "rpc", "serf"):
assert any(regel.startswith(f'{adres} = "<< advertise_ip >>:') for regel in regels)
assert "/var/run/docker.sock" not in compose
assert "privileged:" not in compose
def test_clusterapps_adverteren_het_bereikbare_hostadres():
for app in ("nomad-server", "consul"):
velden = {
item["name"]: item
for groep in _template(app)["variables"]
for item in groep["items"]
}
assert velden["advertise_ip"]["required"] is True
assert velden["advertise_ip"]["default"] == ""
if app == "nomad-server":
bron = (APPS / app / "files" / "server.hcl").read_text()
else:
bron = (APPS / app / "files" / "compose.yaml").read_text()
assert "<< advertise_ip >>" in bron
def test_interne_databasewachtwoorden_worden_automatisch_gemaakt():
for app in ("guacamole", "windmill"):
velden = [item for groep in _template(app)["variables"] for item in groep["items"]]
assert next(item for item in velden if item["name"] == "db_password")["generate"] == "auto"
def test_guacamole_initialiseert_database_voor_de_webapp_start():
compose = (APPS / "guacamole" / "files" / "compose.yaml").read_text()
assert "initdb.sh --postgresql" in compose
assert "condition: service_completed_successfully" in compose
assert "condition: service_healthy" in compose
def test_meshcentral_krijgt_een_bereikbare_https_configuratie():
config = (APPS / "meshcentral" / "files" / "config.json").read_text()
config = json.loads(config.replace("<< hostname >>", "mesh.example.nl"))
assert config["settings"]["cert"] == "mesh.example.nl"
assert config["settings"]["port"] == 443
assert config["domains"][""]["newAccounts"] is True
compose = (APPS / "meshcentral" / "files" / "compose.yaml").read_text()
assert '"<< port >>:443"' in compose