fix(quick-261005-d5d): Kalender-Test bricht bei unerreichbarem Exchange nach 15 s ab

EWS-Aufrufe ueber httpntlm bekommen eine eigene 15-s-Zeitgrenze;
httpreqs timeout greift waehrend des Verbindungsaufbaus nicht
(gemessen 134 s). Netzfehler liefern im Test den Schluessel
'unreachable', das Formular meldet 'nicht erreichbar' statt
'Zugangsdaten pruefen'.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-10-05 09:29:25 +02:00
parent 94bd2a4a04
commit e49d4c7c9d
13 changed files with 305 additions and 13 deletions
+3 -2
View File
@@ -31,7 +31,7 @@ See: .planning/PROJECT.md (updated 2026-07-17)
Phase: 18 (desktop-client-fertigstellen) — COMPLETE (2026-09-17, Verifikation passed, Windows-Bedienprobe bestanden)
Plan: 6 of 6
Status: Alle 18 Phasen abgeschlossen; Version 1.2.0 freigegeben. Kein laufender Meilenstein. Nach 1.2.0 auf main (Beta): Bildmarke in Akzentfarbe, CI-Desktop-Skip, Favoriten-Symbol/-Sortierung, Desktop-Server-Adresse, Update in der App (signiert), Versionszeile auf der Setup-Seite — alles verifiziert und auf VM/CI nachgewiesen
Last activity: 2026-10-05 - Quick 261005-bt1 Proxmox Autostart-Warnung
Last activity: 2026-10-05 - Quick 261005-d5d Kalender-Test Zeitgrenze
Progress: [██████████] 99%
@@ -493,7 +493,8 @@ Gerettet aus `.continue-here.md`. Relevant fuer die noch offenen Live-Tests.
| 261002-kxc | Nextcloud-Status: Benachrichtigung bei Rot je Benutzer (Mail + Desktop-Hinweis), Klartext-Fehler | 2026-10-02 | faed0d7..6c4bff6 | [261002-kxc-nextcloud-status-benachrichtigung-bei-ro](.planning/quick/261002-kxc-nextcloud-status-benachrichtigung-bei-ro/) |
| 261003-387 | Kategorien durch Admins bearbeitbar (anlegen, umbenennen, sortieren, loeschen mit Verschieben, Module zuordnen) | 2026-10-03 | 8ec116c..f2c0a89 | [261003-387-kategorien-durch-admins-bearbeitbar-umbe](.planning/quick/261003-387-kategorien-durch-admins-bearbeitbar-umbe/) |
| 261005-blw | Links in Notiz-Kacheln oeffnen in neuem Tab | 2026-10-05 | 781bc9f | [261005-blw-notiz-links-in-neuem-tab](.planning/quick/261005-blw-notiz-links-in-neuem-tab/) |
| 261005-bt1 | Proxmox: Warnung je gestopptem Gast mit aktivem Autostart (Karte, Kachel) | 2026-10-05 | (dieser Commit) | [261005-bt1-proxmox-autostart-warnung](.planning/quick/261005-bt1-proxmox-autostart-warnung/) |
| 261005-bt1 | Proxmox: Warnung je gestopptem Gast mit aktivem Autostart (Karte, Kachel) | 2026-10-05 | 873d15d | [261005-bt1-proxmox-autostart-warnung](.planning/quick/261005-bt1-proxmox-autostart-warnung/) |
| 261005-d5d | Kalender-Test: 15-s-Zeitgrenze fuer Exchange (EWS), Meldung „nicht erreichbar“ | 2026-10-05 | (dieser Commit) | [261005-d5d-kalender-test-zeitgrenze](.planning/quick/261005-d5d-kalender-test-zeitgrenze/) |
## Deferred Items
@@ -0,0 +1,16 @@
---
quick_id: 261005-d5d
slug: kalender-test-zeitgrenze
date: 2026-10-05
---
# Kalender-Test: Zeitgrenze + Meldung „nicht erreichbar“
Anlass 05.10.: Exchange auf alpha/live nicht erreichbar (interner DNS -> 172.16.0.3), „Verbindung testen“ hing ~2 min auf „wird geprueft“, danach „Adresse und Zugangsdaten pruefen“.
## Task 1 — API
- EWS-Aufrufe (httpntlm) mit 15 s Zeitgrenze.
- Netzfehler (TIMEOUT, ETIMEDOUT, ECONNREFUSED, ...) im Test als `CalendarSourceUnreachableError`; Service liefert Schluessel `unreachable`.
## Task 2 — Web
- Formular zeigt bei `unreachable` eigene Meldung (de/en).
@@ -0,0 +1,13 @@
---
quick_id: 261005-d5d
status: complete
date: 2026-10-05
---
# 261005-d5d: Kalender-Test Zeitgrenze — SUMMARY
- `ntlmPost` (exchange.provider.ts): eigene 15-s-Zeitgrenze per Timer, zusaetzlich `timeout` an httpntlm. httpreqs `timeout` allein greift NICHT waehrend des Verbindungsaufbaus ueber den Keep-alive-Agenten — echter Lauf gegen 172.16.0.3 dauerte damit noch 134,5 s; erst der eigene Timer brachte 15,0 s. Unit-Test haette das nicht gefunden (Stub), deshalb echter Lauf im lokalen Container.
- `CalendarSourceUnreachableError` + `isNetworkUnreachableError` (calendar.service.ts); `testConnection`/`testConnectionFromConfig` liefern `error: 'unreachable'`, lastSyncError „Server not reachable“.
- Formular: `formTestUnreachable` statt `formTestFailed`.
- Nachweis (lokaler Container, kompilierter Provider): 172.16.0.3 -> nicht erreichbar nach 15,0 s; owa.ctl.de mit falschem Passwort -> erreichbar/abgelehnt 0,0 s. Tests api 2219+, web 1372 gruen.
- Gleiches Muster steckt in `inbox/exchange-inbox.provider.ts` (eigenes httpntlm ohne Zeitgrenze) — nicht angefasst.