server-up/tests/conftest.py
Ramon c658418b10
All checks were successful
Deploy server-up (dev) / deploy (push) Successful in 6m16s
fix(netwerk): koppel niet langer de database aan het gedeelde netwerk
add_shared_network hing elke service van een stack aan het gedeelde netwerk.
Eén druk op 'koppelen' maakte daarmee de database van die app bereikbaar voor
elke andere gekoppelde app — en niet elk sjabloon zet daar een wachtwoord op.

- Standaard gaan alleen services mee die geen database, cache of zoekindex
  zijn; brokers als mosquitto en rabbitmq blijven wel deelbaar.
- Per onderdeel te kiezen in de stap 'Verbinden'; de keuze staat in
  .serverup.json en geldt ook bij een volgende wijziging.
- mongodump/mongorestore sturen geen inloggegevens meer mee bij een database
  zonder authenticatie; die dump mislukte altijd.
- Joblogs worden bewaard in SU_JOBS (standaard /data/jobs) en teruggelezen na
  een herstart; een afgekapte taak meldt dat in plaats van 'unknown'.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H9Vcwu7owJZ3nj5dCf4VFT
2026-08-06 23:14:24 +02:00

62 lines
2.1 KiB
Python

"""Gedeelde fixtures. Elke test krijgt een eigen /data-map, zodat de suite
nooit de echte config.json, audit-db of git-cache van een draaiende instantie
raakt."""
import importlib
import sys
from pathlib import Path
import pytest
APP_DIR = Path(__file__).resolve().parent.parent / "server-up"
if str(APP_DIR) not in sys.path:
sys.path.insert(0, str(APP_DIR))
@pytest.fixture
def env(tmp_path, monkeypatch):
"""Verse omgeving: config, audit-db, git-cache en secret in tmp_path."""
data = tmp_path / "data"
data.mkdir()
lib = tmp_path / "stacks"
lib.mkdir()
monkeypatch.setenv("SU_CONFIG", str(data / "config.json"))
monkeypatch.setenv("SU_AUDIT", str(data / "audit.db"))
monkeypatch.setenv("SU_GIT_CACHE", str(data / "git"))
monkeypatch.setenv("SU_SECRET", str(data / "secret.key"))
monkeypatch.setenv("SU_JOBS", str(data / "jobs"))
monkeypatch.setenv("LIBRARY_DIR", str(lib))
monkeypatch.setenv("DATA_DIR", str(tmp_path / "appdata"))
monkeypatch.setenv("BACKUP_DIR", str(tmp_path / "backups"))
# Modules opnieuw importeren zodat ze de nieuwe paden oppikken.
for name in list(sys.modules):
if name == "core" or name.startswith("core.") or name == "app":
del sys.modules[name]
core = importlib.import_module("core")
core._path = Path(data / "config.json")
return {"data": data, "lib": lib, "tmp": tmp_path, "core": core}
@pytest.fixture
def client(env, monkeypatch):
"""Flask-testclient met een aangemaakt account en geldige sessie."""
import app as app_module
app_module.app.config["TESTING"] = True
c = app_module.app.test_client()
return c
@pytest.fixture
def anon_client(env):
"""Testclient zonder sessie."""
import app as app_module
app_module.app.config["TESTING"] = True
return app_module.app.test_client()
def login(client, username="tester", password="hunter2hunter2"):
"""Maak het eerste account aan en retourneer het CSRF-token."""
r = client.post("/api/auth/setup",
json={"username": username, "password": password})
assert r.status_code == 200, r.get_json()
return r.get_json()["csrf_token"]