feat(nextcloud-files): Modul Dateien mit Nextcloud-Adresse, Verbindungsprüfung und gesicherter Verbindungsschicht
- Migration 20261008180000: NextcloudFilesConfig (Organisation) und NextcloudFilesAccount (Mandant UND Benutzer per Zeilenschutz, nur verschlüsseltes App-Passwort) - Transportschicht ncRequest: feste Pfadanfänge, Segmentcodierung, keine Weiterleitungen, keine Cookies, Zeitgrenzen; Aufrufsperre pausiert den Ursprung nach jedem 429 und sperrt Zugangsschlüssel nach dem ersten 401 - Einstellungen: Adresse speichern/prüfen, Adresswechsel läuft alle Konten ab (mit Bestätigung) - Controller mit Verwalten nur auf Einstellungen, Seed, Modul, Registrierung in Web (Ladefunktion, Symbol folder, Navigation, Layout) und Reiter Einstellungen - RLS-Inventar fortgeschrieben, Testaufbau (tessera-nc-test) und E2E-Skripte Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
+50
@@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env bash
|
||||
# End-zu-Ende-Pruefung Aufgabe 1 (quick-261008-mzu): Modul aktivieren, Nextcloud-Adresse
|
||||
# speichern und pruefen. Voraussetzung: lokaler Stack laeuft, nc-test-setup.sh ist gelaufen.
|
||||
set -euo pipefail
|
||||
# shellcheck source=e2e-lib.sh
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/e2e-lib.sh"
|
||||
|
||||
JAR="$E2E_TMP/admin.jar"
|
||||
S="$API/modules/nextcloud-files"
|
||||
|
||||
e2e_login "$JAR"
|
||||
e2e_activate "$JAR"
|
||||
|
||||
# Speichern mit Pruefung
|
||||
code=$(e2e_status "$JAR" PUT "$S/settings" "{\"baseUrl\":\"$NC_BASE\",\"confirmReconnect\":true}")
|
||||
e2e_expect 200 "$code" "PUT settings"
|
||||
e2e_contains "$E2E_TMP/body.out" '"ok":true' "PUT settings: check.ok"
|
||||
|
||||
# Verbindungspruefung der Test-Nextcloud: Version 34.x
|
||||
code=$(e2e_status "$JAR" POST "$S/settings/test" "{\"baseUrl\":\"$NC_BASE\"}")
|
||||
e2e_expect 200 "$code" "POST settings/test"
|
||||
e2e_contains "$E2E_TMP/body.out" '"ok":true' "settings/test ok"
|
||||
e2e_contains "$E2E_TMP/body.out" '"version":"34\.' "settings/test Version 34"
|
||||
|
||||
# Nicht erreichbare Adresse: 200 mit ok:false
|
||||
code=$(e2e_status "$JAR" POST "$S/settings/test" '{"baseUrl":"http://172.17.0.1:1"}')
|
||||
e2e_expect 200 "$code" "settings/test unerreichbar"
|
||||
e2e_contains "$E2E_TMP/body.out" '"ok":false' "settings/test unerreichbar ok:false"
|
||||
|
||||
# Ungueltige Adresse: 400 invalidUrl
|
||||
code=$(e2e_status "$JAR" PUT "$S/settings" '{"baseUrl":"ftp://x"}')
|
||||
e2e_expect 400 "$code" "PUT ftp"
|
||||
e2e_contains "$E2E_TMP/body.out" 'invalidUrl' "PUT ftp invalidUrl"
|
||||
|
||||
# Stand und Einstellungen
|
||||
code=$(e2e_status "$JAR" GET "$S/status")
|
||||
e2e_expect 200 "$code" "GET status"
|
||||
e2e_contains "$E2E_TMP/body.out" '"configured":true' "status configured"
|
||||
e2e_contains "$E2E_TMP/body.out" '"host":"172.17.0.1:18080"' "status host"
|
||||
code=$(e2e_status "$JAR" GET "$S/settings")
|
||||
e2e_expect 200 "$code" "GET settings"
|
||||
e2e_contains "$E2E_TMP/body.out" '"baseUrl":"http://172.17.0.1:18080"' "settings baseUrl"
|
||||
|
||||
# Benutzen-Rechte: ein Benutzer ohne Verwalten bekommt 403 auf die Einstellungen, aber 200 auf status
|
||||
UJAR="$E2E_TMP/user.jar"
|
||||
e2e_second_user e2euser "$UJAR"
|
||||
code=$(e2e_status "$UJAR" GET "$S/settings")
|
||||
case "$code" in 403|404) ;; *) e2e_fail "Benutzer ohne Freigabe: GET settings erwartet 403/404, war $code" ;; esac
|
||||
|
||||
echo "e2e settings ok"
|
||||
Reference in New Issue
Block a user