# Auth/SSO Smoke-Test

Letzte Aktualisierung: 2026-02-22

Dieser Runbook prüft die 5 kritischen Flows nach Auth/SSO-Änderungen:
- Login (Passwort)
- Microsoft Start
- Microsoft Callback
- Tenant-SSO speichern
- Logout

## Voraussetzungen

- Test-User ist aktiv und hat mindestens einen aktiven Tenant.
- Es gibt einen Tenant mit Microsoft-SSO-Konfiguration.
- Für Microsoft-Flow: gültige Tenant-SSO-Credentials vorhanden (Shared oder Override).
- Testumgebung läuft und du bist als Admin eingeloggt.

## 1) Login (Passwort)

1. `login` aufrufen (optional `login?tenant=<slug>`).
2. Gültige E-Mail + Passwort eingeben.
3. Erwartung:
   - Login erfolgreich, Redirect auf `admin`.
   - Session enthält `user`, `available_tenants`, `current_tenant`.
   - Kein Fehler-Flash.

Negativtest:
- Falsches Passwort -> generischer Fehler (kein Account-Leak), kein Login.

## 2) Microsoft Start (`auth/microsoft/start`)

1. `auth/microsoft/start?tenant=<slug>` aufrufen.
2. Erwartung:
   - Bei gültigem Tenant + SSO-Config: Redirect zur Microsoft-Authorize-URL.
   - URL enthält `state`, `nonce`, PKCE (`code_challenge`).
3. Negativtest:
   - Ungültiger Tenant-Slug -> Redirect auf `login` mit passendem Flash.
   - SSO deaktiviert/inkomplett -> Redirect zurück auf Tenant-Login mit passendem Flash.

## 3) Microsoft Callback (`auth/microsoft/callback`)

1. Erfolgreichen Callback durchlaufen lassen.
2. Erwartung:
   - `state` wird einmalig konsumiert (kein Replay).
   - ID-Token-Prüfungen greifen (`aud`, `iss`, `tid`, `exp/nbf`, `nonce`, Signatur).
   - User wird verknüpft/provisioniert und auf `admin` weitergeleitet.

Negativtests:
- Callback mit altem/wiederverwendetem `state` -> Login schlägt sauber fehl.
- Callback ohne `code`/mit Fehler -> Redirect `login` mit Fehler-Flash.

## 4) Tenant-SSO speichern (Admin)

1. `admin/tenants/edit/<uuid>` öffnen, Tab `SSO`.
2. Pflichtwerte setzen:
   - `Microsoft login` aktiv
   - `Entra tenant ID`
   - Shared App oder Override-Credentials vollständig
3. Speichern.
4. Erwartung:
   - Save erfolgreich.
   - UI-Status „Konfiguration vollständig“.
   - Bei `enforce_microsoft_login=1` und unvollständiger Config: Save wird blockiert.

## 5) Logout

1. Als eingeloggter User `logout` aufrufen.
2. Erwartung:
   - Session beendet.
   - Remember-Me Token wird vergessen.
   - Redirect auf `login`.

## Schnellcheck (optional)

- In Browser A einloggen, dann in Browser B denselben User ändern (z. B. deaktivieren).
- In Browser A nächste Anfrage auslösen.
- Erwartung: bestehende Session-Refresh-Logik greift (ggf. Logout bei inaktiv/ohne Tenant).
