Files
tessera-ctl/.planning/quick/261009-p0m-sicherheitsprotokoll-und-ci-sicherheitsp/checks/mail-smoke.sh
T
schalli d62e6c2dbe
Tessera CI/CD / Lint & Type Check (push) Successful in 53s
Tessera CI/CD / Tests (push) Failing after 2m14s
Tessera CI/CD / Desktop-Pakete bauen (push) Has been skipped
Tessera CI/CD / Build & Publish Images (push) Has been skipped
Tessera CI/CD / Sicherheitspruefung (nur Bericht) (push) Has been skipped
docs(quick-261009-p0m): Sicherheitsprotokoll und CI-Pruefungen
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-09 21:07:46 +02:00

43 lines
1.5 KiB
Bash
Executable File

#!/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)"