#!/usr/bin/env bash # Mail-Rauchtest (quick-261009-p0m, Aufgabe 4): beweist, dass die API nach dem Austausch von # nodemailer und dem Entfernen des Mailer-Pakets weiterhin Mails an den lokalen Mailhog zustellt. # Nur Testwerte (lokaler Stack, admin/admin123), liest keine .env-Dateien. set -euo pipefail LIB=".planning/quick/261008-mzu-modul-nextcloud-dateien-eigenstaendiger-/e2e/e2e-lib.sh" cd "$(git rev-parse --show-toplevel)" # shellcheck source=/dev/null source "$LIB" MAILHOG=${MAILHOG:-http://localhost:8025} JAR="$E2E_TMP/mail-admin.jar" mail_total() { curl -sf "$MAILHOG/api/v2/messages?limit=1" \ | python3 -I -c 'import json,sys; print(json.load(sys.stdin)["total"])' } e2e_login "$JAR" # /auth/me liefert keine E-Mail-Adresse; die Adresse des angemeldeten Admins steht in /users. code=$(e2e_status "$JAR" GET "$API/users" "" "$E2E_TMP/users.out") e2e_expect 200 "$code" "users" email=$(python3 -I -c 'import json,sys d=json.load(open(sys.argv[1])) d=d if isinstance(d,list) else d.get("items",[]) print(next((u.get("email") or "" for u in d if u.get("username")=="admin"),""))' "$E2E_TMP/users.out") [ -n "$email" ] || e2e_fail "Admin hat keine E-Mail-Adresse" before=$(mail_total) code=$(e2e_status "$JAR" POST "$API/auth/request-reset" "{\"email\":\"$email\"}") e2e_expect 200 "$code" "request-reset" for _ in $(seq 1 20); do now=$(mail_total) if [ "$now" -gt "$before" ]; then echo "mail ok" exit 0 fi sleep 1 done e2e_fail "keine neue Mail in Mailhog nach 20 Sekunden (vorher $before)"