From d27db0adf76b6189a95f097ac387d4e1e8e447ca Mon Sep 17 00:00:00 2001 From: Steven Hawkins Date: Tue, 6 Jan 2026 11:27:09 -0500 Subject: [PATCH] fix: ensuring that Keycloak test launch doesn't capture runtime defaults (#45154) closes: #41630 Signed-off-by: Steve Hawkins --- .../main/java/org/keycloak/quarkus/runtime/Environment.java | 1 + .../runtime/configuration/mappers/PropertyMappers.java | 4 ++-- quarkus/tests/junit5/src/main/java/org/keycloak/Keycloak.java | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/Environment.java b/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/Environment.java index 2472e8c527a..a547ae3ae2d 100644 --- a/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/Environment.java +++ b/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/Environment.java @@ -39,6 +39,7 @@ public final class Environment { public static final String KC_CONFIG_REBUILD_CHECK = "kc.config.rebuild-check"; public static final String KC_CONFIG_BUILT = "kc.config.built"; + public static final String KC_TEST_REBUILD = "kc.test.rebuild"; private static final String KC_HOME_DIR = "kc.home.dir"; public static final String NON_SERVER_MODE = "nonserver"; public static final String PROFILE ="kc.profile"; diff --git a/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/configuration/mappers/PropertyMappers.java b/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/configuration/mappers/PropertyMappers.java index 49e6c225c5c..42adea621df 100644 --- a/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/configuration/mappers/PropertyMappers.java +++ b/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/configuration/mappers/PropertyMappers.java @@ -75,13 +75,13 @@ public final class PropertyMappers { public static ConfigValue getValue(ConfigSourceInterceptorContext context, String name) { PropertyMapper mapper = getMapper(name); - // During re-aug do not resolve server runtime properties and avoid they included by quarkus in the default value config source. + // During re-aug do not resolve server runtime properties and avoid including in the quarkus default value config source. // // The special handling of log properties is because some logging runtime properties are requested during build time // and we need to resolve them. That should be fine as they are generally not considered security sensitive. // If however expressions are not enabled that means quarkus is specifically looking for runtime defaults, and we should not provide a value // See https://github.com/quarkusio/quarkus/pull/42157 - if (isRebuild() && isKeycloakRuntime(name, mapper) + if ((isRebuild() || Boolean.getBoolean(Environment.KC_TEST_REBUILD)) && isKeycloakRuntime(name, mapper) && (NestedPropertyMappingInterceptor.getResolvingRoot().or(() -> Optional.of(name)) .filter(n -> n.startsWith("quarkus.log.") || n.startsWith("quarkus.console.")).isEmpty() || !Expressions.isEnabled())) { diff --git a/quarkus/tests/junit5/src/main/java/org/keycloak/Keycloak.java b/quarkus/tests/junit5/src/main/java/org/keycloak/Keycloak.java index f782483f734..607fe31b0c0 100644 --- a/quarkus/tests/junit5/src/main/java/org/keycloak/Keycloak.java +++ b/quarkus/tests/junit5/src/main/java/org/keycloak/Keycloak.java @@ -205,7 +205,9 @@ public class Keycloak { AugmentAction action = curated.createAugmentor(); Environment.setHomeDir(homeDir); ConfigArgsConfigSource.setCliArgs(args.toArray(new String[0])); + System.setProperty(Environment.KC_TEST_REBUILD, "true"); StartupAction startupAction = action.createInitialRuntimeApplication(); + System.getProperties().remove(Environment.KC_TEST_REBUILD); application = startupAction.runMainClass(args.toArray(new String[0]));