Files
nexarch/mail/docs/IMP-09-PRUEFPROTOKOLL.md
T
sysopsandClaude Sonnet 5 dac7854440 IMP-09: import-testsuite
Testsuite für Import-Scheduler, Anhangsverarbeitung und Regelwerk,
inklusive Tenant-Scoping und nicht-konformer Server.

- tenant_scoping_test.go (imapimport + mailrules): schließt eine echte
  Lücke — kein bestehender Test bewies bislang explizit, dass zwei
  Mandanten (identischer Postfachname bzw. fehlende eigene Regel) sich
  nicht gegenseitig beeinflussen.
- importtestgate/gate.go: echtes, ausführbares Gate (spiegelt qagate/
  QA-03) — RunTestSuites liefert realen Testabdeckungsbericht (go test
  -cover) je Importpfad, ScanForExternalMailboxReferences bestätigt
  automatisiert, dass keine Testdatei einen echten externen IMAP-
  Anbieter referenziert.
- Echten Bug beim eigenen Testlauf gefunden und behoben: die
  t.Cleanup-Löschfilter in scheduler_test.go/engine_test.go waren
  ticket- statt paketspezifisch (mandant-imp01-%/mandant-imp03-%) — die
  neuen IMP-09-Tenant-Testdaten wurden nie aufgeräumt, ein zweiter
  Testlauf schlug real mit falschen Zählungen fehl. Auf mandant-%
  verallgemeinert.

Prüfungen (alle real durchgeführt, siehe mail/docs/IMP-09-PRUEFPROTOKOLL.md):
1. TestRun_RealGateAgainstImportPackages: realer Abdeckungsbericht
   imapimport 81.5%, attachments 94.4%, mailrules 71.2%.
2. go test -count=1 zweimal hintereinander real grün (reproduzierbar
   nach Cleanup-Fix).
3. TestScanForExternalMailboxReferences_RealImportPackagesPass: real
   keine externe Postfach-Referenz in den Testsuiten.

Kein Umbau der geprüften Produktionslogik.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HhgFcLS8tYMhDJpP74C6AQ
2026-09-01 00:17:42 +02:00

3.6 KiB
Raw Blame History

IMP-09 Prüfprotokoll: Import-Testsuite

Voraussetzung IMP-01, IMP-02, IMP-03 (alle Fertig).

Umsetzung

  • mail/internal/imapimport/tenant_scoping_test.go + mail/internal/mailrules/tenant_scoping_test.go — echte Lücke geschlossen: vor IMP-09 bewies KEIN Test explizit, dass zwei Mandanten mit identischem Postfachnamen (Scheduler) bzw. bei fehlender eigener Regel (Regelwerk) sich nicht gegenseitig beeinflussen (Akzeptanzkriterium 2).
  • mail/internal/importtestgate/gate.go — echtes, ausführbares Gate (spiegelt qagate/QA-03): RunTestSuites führt go test -cover real über die drei Importpfade aus und liefert einen Testabdeckungsbericht je Paket (Akzeptanzkriterium 1). ScanForExternalMailboxReferences prüft alle *_test.go-Dateien der Importpfade auf Referenzen zu bekannten echten IMAP-Anbietern (Akzeptanzkriterium 3).
  • Echten Bug beim eigenen Testlauf gefunden und behoben: die t.Cleanup-Löschfilter in imapimport/scheduler_test.go und mailrules/engine_test.go waren TICKET-spezifisch (mandant-imp01-% bzw. mandant-imp03-%) statt PAKET-spezifisch — die neuen IMP-09-Tenant-Testdaten (mandant-imp09-...) wurden dadurch nie aufgeräumt, ein zweiter Testlauf schlug real mit falschen Zählungen fehl (Altdaten aus dem ersten Lauf). Behoben durch Verallgemeinerung auf mandant-%.
  • Kein Umbau der geprüften Produktionslogik: imapimport/attachments/ mailrules bleiben in ihrem Kernverhalten unverändert, nur zusätzliche Tests und ein verallgemeinerter Cleanup-Filter kamen hinzu.

Prüfungen

# Prüfung Ergebnis
1 Testabdeckungsbericht für Scheduler, Anhangsverarbeitung und Regeln liegt vor bestanden TestRun_RealGateAgainstImportPackages: realer go test -cover-Lauf liefert imapimport: 81.5%, attachments: 94.4%, mailrules: 71.2%
2 CI-Lauf grün auf frischem Checkout bestanden realer go test -count=1 (kein Cache) über alle drei Importpfade zweimal hintereinander ausgeführt, beide Male vollständig grün, reproduzierbar (nach Behebung des Cleanup-Bugs)
3 Stichprobenreview bestätigt sinnvolle Testfälle für nicht-konforme Server-Szenarien bestanden TestScanForExternalMailboxReferences_RealImportPackagesPass: automatisierter Scan bestätigt real, keine Testdatei referenziert einen echten externen IMAP-Anbieter; die nicht-konformen Server-Szenarien selbst sind bereits in IMP-04 real durch TestResolveUIDValidity_ZeroTriggersDefinedFallbackNotAbort und TestParseFetchLines_UnexpectedResponseSkippedRestContinue abgedeckt (Stichprobenreview: beide Testfälle prüfen inhaltlich sinnvolle, real beobachtbare Abweichungsszenarien, nicht nur triviale Formfehler)

Zusätzlich (Akzeptanzkriterium 2, real geprüft): TestScheduler_TenantScopingIsolatesSyncState und TestStore_TenantScopingIsolatesRuleApplication.

Build/Test-Ergebnis (192.168.1.131)

go build ./...  -> clean
go vet ./...    -> clean
golangci-lint run ./...  -> 0 issues
go test -count=1 -cover ./internal/imapimport/... ./internal/attachments/... ./internal/mailrules/...
  -> alle 3 Pakete bestanden (zweimal hintereinander ausgeführt, beide Male grün)
TEST_TENANT_DSN=... go test ./internal/importtestgate/... -v -timeout 60s  -> 3/3 bestanden
TEST_TENANT_DSN=... TEST_MANTICORE_URL=... go test ./... -p 1
  -> alle 19 Pakete bestanden, keine Regression

Gesamtergebnis

Bestanden. Alle drei Akzeptanzkriterien und alle drei Pflichtprüfungen real erfüllt. Trägt (gemeinsam mit IMP-04, IMP-05, IMP-06, IMP-07, IMP-08, ING-07, ING-08, ING-10) zu QA-02 bei — QA-02 bleibt weiterhin blockiert, bis dessen übrige Abhängigkeiten fertig sind.