package io.dropwizard.configuration;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.core.IsNull.nullValue;
import static org.junit.Assume.assumeThat;
public class EnvironmentVariableSubstitutorTest {
@Test
public void defaultConstructorDisablesSubstitutionInVariables() {
EnvironmentVariableSubstitutor substitutor = new EnvironmentVariableSubstitutor();
assertThat(substitutor.isEnableSubstitutionInVariables()).isFalse();
}
@Test(expected = UndefinedEnvironmentVariableException.class)
public void defaultConstructorEnablesStrict() {
assumeThat(System.getenv("DOES_NOT_EXIST"), nullValue());
EnvironmentVariableSubstitutor substitutor = new EnvironmentVariableSubstitutor();
substitutor.replace("${DOES_NOT_EXIST}");
}
@Test
public void constructorEnablesSubstitutionInVariables() {
EnvironmentVariableSubstitutor substitutor = new EnvironmentVariableSubstitutor(true, true);
assertThat(substitutor.isEnableSubstitutionInVariables()).isTrue();
}
@Test
public void substitutorUsesEnvironmentVariableLookup() {
EnvironmentVariableSubstitutor substitutor = new EnvironmentVariableSubstitutor();
assertThat(substitutor.getVariableResolver()).isInstanceOf(EnvironmentVariableLookup.class);
}
@Test
public void substitutorReplacesWithEnvironmentVariables() {
EnvironmentVariableSubstitutor substitutor = new EnvironmentVariableSubstitutor(false);
assertThat(substitutor.replace("${TEST}")).isEqualTo(System.getenv("TEST"));
assertThat(substitutor.replace("no replacement")).isEqualTo("no replacement");
assertThat(substitutor.replace("${DOES_NOT_EXIST}")).isEqualTo("${DOES_NOT_EXIST}");
assertThat(substitutor.replace("${DOES_NOT_EXIST:-default}")).isEqualTo("default");
}
@Test(expected = UndefinedEnvironmentVariableException.class)
public void substitutorThrowsExceptionInStrictMode() {
assumeThat(System.getenv("DOES_NOT_EXIST"), nullValue());
EnvironmentVariableSubstitutor substitutor = new EnvironmentVariableSubstitutor(true);
substitutor.replace("${DOES_NOT_EXIST}");
}
@Test
public void substitutorReplacesRecursively() {
EnvironmentVariableSubstitutor substitutor = new EnvironmentVariableSubstitutor(false, true);
assertThat(substitutor.replace("$${${TEST}}")).isEqualTo("${test_value}");
assertThat(substitutor.replace("${TEST${TEST_SUFFIX}}")).isEqualTo(System.getenv("TEST2"));
}
}