test: AuthLog-Regressionstests (wirft nie, 500-Zeilen-Kappung)

AuthLog.write ist der einzige Aufruf im catch-Pfad des Soft-Logout-Guards;
ein Throw dort würde im SDK zu logout()+clear() eskalieren. 4 neue Tests
sichern genau das ab (kaputte Plattform, leeres Log, Zeitstempel, Kappung).
path_provider_platform_interface als dev_dependency (war schon transitiv).
Alle 14 Tests grün auf dem Pi, flutter analyze unverändert.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Bernd Steckmeister
2026-07-03 22:51:35 +02:00
parent eebf8ae7dd
commit e0ac5cb9fd
5 changed files with 137 additions and 7 deletions
+40
View File
@@ -13,6 +13,46 @@ Schritt (und beim Abbruch mitten im Schritt den Zwischenstand). Format:
---
## 2026-07-03 Review-Nachzügler abgeschlossen + AuthLog-Regressionstests
**Erledigt:**
- **Fable-5-Review vervollständigt (eebf8ae):** Die drei seit Review-Abschluss
dazugekommenen erledigten Arbeiten kritisch geprüft und als Punkte (e)(g) im
Review-Abschnitt abgehakt: Unit-Tests 99cde9a (korrekt, Fake-Clients schlagen
bei jedem Fremd-Aufruf laut fehl), Doku-Commits 16561bb/566938f (alle
Behauptungen gegen Code/pubspec/matrix-6.2.0 verifiziert Factory-Stellen,
Tabellenname `box_inbound_group_session`), Autopilot-Konto-Wechsel bfe5876
(kein App-Code, Logik in Ordnung; harmloser False-Positive der
Limit-Erkennung dokumentiert). **Kein Befund, keine Code-Änderung nötig.**
Damit sind ALLE als erledigt markierten Punkte reviewt.
- **`test/auth_log_test.dart` (4 Tests):** `AuthLog` ist die einzige weitere
öffentliche Schnittstelle auf dem heiligen Pfad, die headless testbar ist
(der Soft-Logout-Guard ruft `AuthLog.write` im catch-Pfad auf würde es
werfen, eskalierte das SDK zu `logout()`+`clear()`). Getestet: write/read
werfen NIE, auch wenn die Plattform fehlt (kaputter PathProvider);
Platzhalter statt Fehler bei leerem Log; ISO-Zeitstempel pro Zeile;
500-Zeilen-Kappung (älteste Einträge fliegen raus, neueste überleben).
Dafür `path_provider_platform_interface ^2.1.2` als dev_dependency ergänzt
offizieller Mock-Weg, war schon transitiv im Lockfile, kein neues externes
Paket. `flutter test`: **alle 14 Tests grün auf dem Pi**, `flutter analyze`
unverändert (1 bekannter Hinweis `chat_provider.dart:42`).
**Offen/Nächster Schritt:** Unverändert blockiert: Alle offenen ROADMAP-Punkte
(M0 SQLCipher, M1 Härtetest, M2 Call-Schicht/State-Management) brauchen PC/GUI
oder Bernds Antworten (Call-Pilot, SQLCipher-Priorität) siehe
`docs/PC_TESTPLAN.md` und die Fragen an Bernd weiter unten. Weitere sichere
Pi-Testkandidaten sind erschöpft (Rest ist bibliotheksprivat oder braucht
Widget-Tests mit gemocktem Matrix-Client lohnt erst nach dem M2-Modulschnitt
mit echten öffentlichen Schnittstellen).
**Stolperfallen:** `AuthLog` cached sein File-Handle statisch der Test für
„Plattform kaputt" muss deshalb VOR den Tests mit funktionierender Plattform
laufen (im Testfile kommentiert). Bei künftigen Tests an Singletons mit
statischem Zustand auf Testreihenfolge/Isolate-Grenzen achten (flutter test
isoliert pro Datei, nicht pro Test).
---
## 2026-07-03 Erste Unit-Tests: Regressionsnetz für die zwei heiligsten Codepfade
**Erledigt:** Eine Vorsession hatte (unprotokolliert, Abbruch vor dem Testlauf