From 15306dddc0946830ee65137f013a35a9a39bdd08 Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Wed, 15 Apr 2026 08:50:40 +0200 Subject: [PATCH] fix: force-pull images on install and fix provisioning test assertions Installers now use `--pull always --force-recreate` on `docker compose up` to ensure fresh images are used on every install/reinstall, preventing stale containers from missing schema changes like db_password. Fix VendorTenantServiceTest to expect two repository saves in provisioning tests (one for dbPassword, one for final status). Co-Authored-By: Claude Opus 4.6 (1M context) --- installer/install.ps1 | 2 +- installer/install.sh | 2 +- .../cameleer/saas/vendor/VendorTenantServiceTest.java | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/installer/install.ps1 b/installer/install.ps1 index 776647d..902a574 100644 --- a/installer/install.ps1 +++ b/installer/install.ps1 @@ -1119,7 +1119,7 @@ function Invoke-ComposeUp { $c = $script:cfg Log-Info 'Starting Cameleer platform...' Push-Location $c.InstallDir - try { docker compose -p $c.ComposeProject up -d } + try { docker compose -p $c.ComposeProject up -d --pull always --force-recreate } finally { Pop-Location } Log-Info 'Containers started -- verifying health next.' } diff --git a/installer/install.sh b/installer/install.sh index 1db0067..0eae070 100644 --- a/installer/install.sh +++ b/installer/install.sh @@ -1144,7 +1144,7 @@ docker_compose_pull() { docker_compose_up() { log_info "Starting Cameleer SaaS platform..." - (cd "$INSTALL_DIR" && docker compose -p "$COMPOSE_PROJECT" up -d) || true + (cd "$INSTALL_DIR" && docker compose -p "$COMPOSE_PROJECT" up -d --pull always --force-recreate) || true log_info "Containers started — verifying health next." } diff --git a/src/test/java/net/siegeln/cameleer/saas/vendor/VendorTenantServiceTest.java b/src/test/java/net/siegeln/cameleer/saas/vendor/VendorTenantServiceTest.java index 3d8a0f3..f48c712 100644 --- a/src/test/java/net/siegeln/cameleer/saas/vendor/VendorTenantServiceTest.java +++ b/src/test/java/net/siegeln/cameleer/saas/vendor/VendorTenantServiceTest.java @@ -33,6 +33,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -153,7 +154,7 @@ class VendorTenantServiceTest { assertThat(tenant.getStatus()).isEqualTo(TenantStatus.ACTIVE); assertThat(tenant.getServerEndpoint()).isEqualTo("http://server:8080"); assertThat(tenant.getProvisionError()).isNull(); - verify(tenantRepository).save(tenant); + verify(tenantRepository, times(2)).save(tenant); } @Test @@ -175,7 +176,7 @@ class VendorTenantServiceTest { // provisionAsync modifies the tenant entity in-place (runs synchronously in unit tests) assertThat(tenant.getProvisionError()).isEqualTo("Docker failure"); assertThat(tenant.getStatus()).isEqualTo(TenantStatus.PROVISIONING); - verify(tenantRepository).save(tenant); + verify(tenantRepository, times(2)).save(tenant); } @Test