- Fixed schema isolation handling in Exposed by switching table creation to JDBC and explicitly setting `search_path` in PostgreSQL. - Removed redundant `runBlocking` calls, unused variables, and IDE warnings in the test. - Added `JwtDecoder` mock in `@TestConfiguration` to prevent application context loading errors. - Verified that writes in one tenant schema are no longer visible in another. chore(config): add `application-test.yaml` for better test environment setup - Configured H2 as an in-memory database for tests. - Disabled Flyway and Consul to avoid unnecessary dependencies during testing.
2.1 KiB
2.1 KiB
| type | status | owner | last_update |
|---|---|---|---|
| Journal | ACTIVE | DevOps Engineer | 2026-04-14 |
Session Log: Finalize and Enable Entries Isolation Integration Test
Problem
Der Test EntriesIsolationIntegrationTest im Modul :backend:services:entries:entries-service war deaktiviert (@Disabled). Er hatte Probleme mit der Daten-Isolierung zwischen verschiedenen Tenants, wenn Exposed mit mehreren Schemas und PostgreSQL-Containern verwendet wurde.
Zusätzlich gab es IDE-Warnungen bezüglich nicht auflösbarer Symbole in SQL-Strings, redundantem runBlocking und ungenutzten Variablen.
Lösung
-
Test-Bereinigung:
- Entfernung der
@DisabledAnnotation. - Behebung der
runBlockingRedundanz durch Verwendung vonrunBlockingauf Test-Methoden-Ebene. - Entfernung ungenutzter Variablen (
saved). - Bereitstellung einer
@TestConfigurationmit einem MockJwtDecoder, um ApplicationContext-Ladefehler durch Security-Abhängigkeiten zu vermeiden.
- Entfernung der
-
Schema-Isolierung fixiert:
- Umstellung der Tabellen-Erstellung im
setupauf JDBC, um zu verhindern, dass Exposed'sTable-Singletons frühzeitig an ein falsches Schema gebunden werden. - Sicherstellung, dass
tenantTransactiondensearch_pathin PostgreSQL korrekt setzt. - Explizite Verwendung von
SET search_pathinnerhalb der Transaktionen im Isolationstest, um Leaks zu vermeiden. - Verifizierung der Isolation: Schreibzugriffe in
event_alanden nun nachweislich nicht mehr inevent_b.
- Umstellung der Tabellen-Erstellung im
-
Verifizierung:
- Alle 10 Tests im Modul (inkl. der neu aktivierten Isolation-Tests) laufen erfolgreich durch.
- Die IDE-Warnungen wurden durch Verwendung von Double-Quotes (
"control"."tenants") und saubere Kotlin-Strukturen minimiert.
Betroffene Dateien
backend/services/entries/entries-service/src/test/kotlin/at/mocode/entries/service/tenant/EntriesIsolationIntegrationTest.kt: Reaktiviert und repariert.
Handover
- Der
EntriesIsolationIntegrationTestdient nun als Referenz für Multi-Tenancy Tests mit echten PostgreSQL-Containern. Bei weiteren Tests dieser Art sollte auf das Exposed-Schema-Caching geachtet werden.