#!/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" # Das Skript ist wiederholbar: ein unveraenderter Wert antwortet bewusst ohne Pruefung, deshalb # erst auf eine andere Adresse stellen (laesst bestehende Verbindungen ablaufen), dann auf die echte. code=$(e2e_status "$JAR" PUT "$S/settings" '{"baseUrl":"http://172.17.0.1:18081","confirmReconnect":true}') e2e_expect 200 "$code" "PUT settings (andere Adresse)" # 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" # Kennung der Nextcloud fuer den Anmeldebildschirm: Name, Rechnername, Farbe, Logo (Aufgabe 6) code=$(e2e_status "$JAR" GET "$S/server") e2e_expect 200 "$code" "GET server" e2e_contains "$E2E_TMP/body.out" '"host":"172.17.0.1:18080"' "server host" e2e_contains "$E2E_TMP/body.out" '"name":"' "server name" e2e_contains "$E2E_TMP/body.out" '"version":"34\.' "server version" if grep -q '"hasLogo":true' "$E2E_TMP/body.out"; then curl -s -D "$E2E_TMP/logo.head" -o "$E2E_TMP/logo.bin" -b "$JAR" "$S/server/logo" grep -qi '^HTTP/[0-9.]* 200' "$E2E_TMP/logo.head" || e2e_fail "server/logo: kein 200" grep -qi "^content-security-policy: default-src 'none'" "$E2E_TMP/logo.head" || e2e_fail "server/logo: CSP fehlt" grep -qi '^x-content-type-options: nosniff' "$E2E_TMP/logo.head" || e2e_fail "server/logo: nosniff fehlt" grep -qiE '^content-type: image/(png|jpeg|gif|webp|svg\+xml)' "$E2E_TMP/logo.head" || e2e_fail "server/logo: Bildtyp" fi # 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"