mirror of
https://github.com/spring-projects/spring-boot.git
synced 2026-09-17 12:09:16 +00:00
Apply RabbitMQ credential fallbacks for null values
Docker records an environment variable that is declared without a value as a bare name, which DockerEnv maps to a null value rather than omitting the key. Map.getOrDefault only falls back when the key is absent, so both the fallback key and the guest default were skipped. See gh-51546 Signed-off-by: JaeHyunAn <98042706+yyuneu@users.noreply.github.com>
This commit is contained in:
+8
-2
@@ -35,8 +35,14 @@ class RabbitEnvironment {
|
||||
private final @Nullable String password;
|
||||
|
||||
RabbitEnvironment(Map<String, @Nullable String> env) {
|
||||
this.username = env.getOrDefault("RABBITMQ_DEFAULT_USER", env.getOrDefault("RABBITMQ_USERNAME", "guest"));
|
||||
this.password = env.getOrDefault("RABBITMQ_DEFAULT_PASS", env.getOrDefault("RABBITMQ_PASSWORD", "guest"));
|
||||
this.username = extract(env, "RABBITMQ_DEFAULT_USER", "RABBITMQ_USERNAME");
|
||||
this.password = extract(env, "RABBITMQ_DEFAULT_PASS", "RABBITMQ_PASSWORD");
|
||||
}
|
||||
|
||||
private static String extract(Map<String, @Nullable String> env, String key, String fallbackKey) {
|
||||
String value = env.get(key);
|
||||
value = (value != null) ? value : env.get(fallbackKey);
|
||||
return (value != null) ? value : "guest";
|
||||
}
|
||||
|
||||
@Nullable String getUsername() {
|
||||
|
||||
+27
@@ -17,8 +17,10 @@
|
||||
package org.springframework.boot.amqp.docker.compose;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.jspecify.annotations.Nullable;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -69,4 +71,29 @@ class RabbitEnvironmentTests {
|
||||
assertThat(environment.getPassword()).isEqualTo("secret");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getUsernameWhenRabbitmqDefaultUserHasNoValue() {
|
||||
Map<String, @Nullable String> env = new HashMap<>();
|
||||
env.put("RABBITMQ_DEFAULT_USER", null);
|
||||
RabbitEnvironment environment = new RabbitEnvironment(env);
|
||||
assertThat(environment.getUsername()).isEqualTo("guest");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getPasswordWhenRabbitmqDefaultPassHasNoValue() {
|
||||
Map<String, @Nullable String> env = new HashMap<>();
|
||||
env.put("RABBITMQ_DEFAULT_PASS", null);
|
||||
RabbitEnvironment environment = new RabbitEnvironment(env);
|
||||
assertThat(environment.getPassword()).isEqualTo("guest");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getUsernameWhenRabbitmqDefaultUserHasNoValueAndHasRabbitmqUsername() {
|
||||
Map<String, @Nullable String> env = new HashMap<>();
|
||||
env.put("RABBITMQ_DEFAULT_USER", null);
|
||||
env.put("RABBITMQ_USERNAME", "me");
|
||||
RabbitEnvironment environment = new RabbitEnvironment(env);
|
||||
assertThat(environment.getUsername()).isEqualTo("me");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user