# 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.