test: SSH-Testziele und Mock-OIDC fuer Integrationstests (#011)

Bootstrap, Host-Key-Pruefung und spaeteres Ausrollen brauchen echte
sshd-Gegenstellen. Zwei Debian-13-Container (ziel-a, ziel-b) in einem
gemeinsamen Netz bilden frische Hosts vor dem Bootstrap nach: root- und
Passwort-Login sind absichtlich offen, Host-Keys entstehen erst beim
Start, und `hostkeys-tauschen` erlaubt den Test "geaenderter Host-Key
wird abgelehnt" ohne Neuerstellen des Containers.

Die Testhilfen lesen dieselben Adress-Variablen wie die Compose-Datei
und lassen Tests mit Hinweis auf den Startbefehl fehlschlagen, statt
sie still zu ueberspringen - ein uebersprungener Integrationstest sieht
sonst wie ein bestandener aus.

Der Mock-OIDC-Anbieter ersetzt authentik in der Entwicklung (PLAN.md,
Entscheidung 7). Bei interaktivem Login uebernimmt er nur Claims aus dem
Formular, daher belegt eine eigene Login-Seite email, name und groups
vor und laesst die Gruppen frei waehlen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-12 09:13:56 +02:00
co-authored by Claude Opus 5.5
parent 224386106b
commit e89112a761
11 changed files with 614 additions and 6 deletions
+20
View File
@@ -27,6 +27,15 @@ SSHKV_OIDC_GROUP_ADMIN=sshkv-admins
SSHKV_OIDC_GROUP_OPERATOR=sshkv-operators
SSHKV_OIDC_GROUP_READER=sshkv-readers
# Entwicklung ohne authentik: Mock-OIDC aus docker-compose.test.yml (pnpm test:ziele:up).
# Der Issuer haengt am Host-Header – genau 127.0.0.1 verwenden, nicht localhost.
# Client-ID und -Secret prueft der Mock nicht; beliebige Werte funktionieren.
# Im Login-Formular sind Claims (email, name, groups …) vorbelegt und frei aenderbar.
# SSHKV_OIDC_ISSUER=http://127.0.0.1:8090/sshkv
# SSHKV_OIDC_CLIENT_ID=sshkv-dev
# SSHKV_OIDC_CLIENT_SECRET=sshkv-dev-geheim
# SSHKV_OIDC_NAME=Mock-OIDC
# --- Notfall-Admin -------------------------------------------------------------
# Wird beim ersten Seed angelegt. TOTP wird bei der ersten Anmeldung eingerichtet.
SSHKV_BREAKGLASS_USER=notfall
@@ -35,3 +44,14 @@ SSHKV_BREAKGLASS_PASSWORD=
# --- Worker --------------------------------------------------------------------
# Zeitplan fuer den Abgleich aller Hosts (cron)
SSHKV_SYNC_CRON=30 2 * * *
# --- Integrationstests (#011) ---------------------------------------------------
# SSH-Testziele aus docker-compose.test.yml. Die Compose-Datei liest dieselben Variablen
# fuer die Port-Bindung (host:port, nur 127.0.0.1).
SSHKV_TEST_ZIEL_A=127.0.0.1:2221
SSHKV_TEST_ZIEL_B=127.0.0.1:2222
# Passwoerter der Testziele fuer root und den Benutzer "test"
SSHKV_TEST_ROOT_PASSWORT=sshkv-test
SSHKV_TEST_TEST_PASSWORT=sshkv-test
# Mock-OIDC (Port-Bindung)
SSHKV_TEST_OIDC=127.0.0.1:8090