meldestelle/docs/99_Journal/2026-04-14_DevOps_Entries-Isolation-Test-Finalized.md
Stefan Mogeritsch 2a1508c6a5 chore(tests): standardize schema usage with constants and resolve IDE warnings
- Replaced hardcoded schema names with constants (`TEST_SCHEMA`, `CONTROL_SCHEMA`) across multiple tests.
- Resolved IDE warnings by removing unused variables (`result`), suppressing `SqlResolve`, and using ASCII-compliant strings.
- Corrected typos in test data (`testdb` -> `test_db`, `Produktions` -> `Production`).
- Improved readability and maintainability in migration and tenant registry tests by introducing companion object constants.
2026-04-14 12:53:33 +02:00

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

  1. Test-Bereinigung:

    • Entfernung der @Disabled Annotation.
    • Behebung der runBlocking Redundanz durch Verwendung von runBlocking auf Test-Methoden-Ebene.
    • Entfernung ungenutzter Variablen (saved).
    • Bereitstellung einer @TestConfiguration mit einem Mock JwtDecoder, um ApplicationContext-Ladefehler durch Security-Abhängigkeiten zu vermeiden.
  2. Schema-Isolierung fixiert:

    • Umstellung der Tabellen-Erstellung im setup auf JDBC, um zu verhindern, dass Exposed's Table-Singletons frühzeitig an ein falsches Schema gebunden werden.
    • Sicherstellung, dass tenantTransaction den search_path in PostgreSQL korrekt setzt.
    • Explizite Verwendung von SET search_path innerhalb der Transaktionen im Isolationstest, um Leaks zu vermeiden.
    • Verifizierung der Isolation: Schreibzugriffe in event_a landen nun nachweislich nicht mehr in event_b.
  3. Verifizierung & Cleanup:

    • Alle 10 Tests im Modul (inkl. der neu aktivierten Isolation-Tests) laufen erfolgreich durch.
    • IDE-Warnungen in EntriesIsolationIntegrationTest und JdbcTenantRegistryTest wurden durch @Suppress("SqlResolve"), Verwendung von String-Konstanten/Interpolation ($CONTROL_SCHEMA) und Entfernung ungenutzter Code-Fragmente (nennungRepository, random(), registerDataSource) behoben.
    • Typos wie "testdb" -> "test_db" und "Produktions" -> "Production" wurden korrigiert.
    • Behebung von IDE-Warnungen in NennungBillingIntegrationTest, BewerbeZeitplanIntegrationTest und DomainHierarchyMigrationTest durch Entfernung ungenutzter Variablen (result), Ersetzen von Umlauten in Funktionsnamen/Strings durch ASCII-Zeichen und Verwendung von Konstanten für Schema-Namen (TEST_SCHEMA).
    • Fehlende Spring-Konfigurations-Metadaten für multitenancy.* wurden in additional-spring-configuration-metadata.json ergänzt.

Betroffene Dateien

  • backend/services/entries/entries-service/src/test/kotlin/at/mocode/entries/service/tenant/EntriesIsolationIntegrationTest.kt: Reaktiviert und repariert.
  • backend/services/entries/entries-service/src/test/kotlin/at/mocode/entries/service/tenant/JdbcTenantRegistryTest.kt: Bereinigt und optimiert.
  • backend/services/entries/entries-service/src/main/resources/META-INF/additional-spring-configuration-metadata.json: Metadaten ergänzt.

Handover

  • Der EntriesIsolationIntegrationTest dient 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.