my_voice_assistant_v2/tests
Dieter Schlüter 881a5ac2de feat(auth): Forward-Auth via JWT-Cookie (YunoHost yunohost.portal)
Discovery zeigte: YunoHost reicht den Usernamen nicht als Header durch, sondern im
signierten Cookie "yunohost.portal" (JWT, Claim "user"). Die Forward-Auth liest jetzt
die Identitaet aus Header ODER Cookie - nur von der Proxy-Quell-IP akzeptiert.
HS256-Signaturpruefung optional via TRUSTED_AUTH_JWT_SECRET (stdlib hmac, kein Dep).

- config: trusted_auth_cookie / _cookie_claim / _jwt_secret
- nginx-Vorlage + deploy/README: keine Identitaets-Header-Zeile mehr noetig; SSO-Schutz
  der Subdomain ist Pflicht (sonst Spoofing)
- Tests: Cookie-Extraktion, Signaturpruefung, Proxy-IP-Trust

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 08:44:33 +02:00
..
conftest.py feat: Audio-Streaming als Default (Admin abschaltbar via AUDIO_STREAM_DEFAULT) 2026-06-17 18:07:36 +02:00
test_audio_router.py Initial commit: Voice Assistant Gateway mit Konfig-/Routing-Fundament 2026-06-17 01:48:56 +02:00
test_auth.py feat(tts): echtes lokales TTS via piper (kein Stub mehr) 2026-06-17 22:11:20 +02:00
test_basic_layout.py Initial commit: Voice Assistant Gateway mit Konfig-/Routing-Fundament 2026-06-17 01:48:56 +02:00
test_config_profiles.py Initial commit: Voice Assistant Gateway mit Konfig-/Routing-Fundament 2026-06-17 01:48:56 +02:00
test_cookie_auth.py feat(auth): Forward-Auth via JWT-Cookie (YunoHost yunohost.portal) 2026-06-18 08:44:33 +02:00
test_emergency_llm.py feat(safety): zweistufige Notfall-Erkennung mit LLM-Klassifikation 2026-06-18 03:24:25 +02:00
test_endpoints_e2e.py feat(tts): echtes lokales TTS via piper (kein Stub mehr) 2026-06-17 22:11:20 +02:00
test_forward_auth.py feat(web): Remote-Web-UI mit Mikrofon + Forward-Auth (YunoHost-SSO) 2026-06-18 04:37:16 +02:00
test_local_llm_messages.py fix(llm): System-Nachrichten zu einer fuehrenden zusammenfuehren (Qwen3-Template) 2026-06-18 04:45:21 +02:00
test_memory.py feat: Langzeit-Erinnerungen (#3b) und WebSocket-Streaming-Chat (#4, erster Increment) 2026-06-17 04:26:55 +02:00
test_memory_extraction.py feat(memory): automatische Erinnerungs-Extraktion aus Gespraechen 2026-06-18 03:15:08 +02:00
test_openrouter_tts.py fix(tts): OpenRouter-TTS bei transient leerer/5xx-Antwort wiederholen 2026-06-18 00:06:47 +02:00
test_piper_tts.py perf(tts): piper in-process mit gecachtem Modell statt Subprozess pro Satz 2026-06-18 08:22:04 +02:00
test_quota_safety.py feat: Tageskontingent und Notfall-Eskalation (#6) 2026-06-17 05:29:30 +02:00
test_realtime.py feat: Barge-in/Turn-Manager und VAD-Aeusserungserkennung (#4 Ausbau) 2026-06-17 05:06:58 +02:00
test_resilience.py feat: Resilienz (Fallback-Ketten) und Metriken (#5) 2026-06-17 05:19:07 +02:00
test_routing.py feat: Cloud-Fundament - Auth, Persistenz und Mandanten-Trennung 2026-06-17 02:14:25 +02:00
test_streaming.py feat(tts): Aussprache-Normalisierung vor Piper (Ordinalia/Einheiten/Abk./Lexikon) 2026-06-17 23:01:41 +02:00
test_tts_normalizer.py feat(tts): Aussprache-Lexikon befüllt (verifizierte Vokallängen-Fixes) + case-insensitiv 2026-06-17 23:19:17 +02:00
test_warmup.py perf(startup): lokale Modelle beim Start vorladen (Warm-up) 2026-06-18 08:27:37 +02:00
test_ws.py feat: Audio-Streaming als Default (Admin abschaltbar via AUDIO_STREAM_DEFAULT) 2026-06-17 18:07:36 +02:00