Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import org.springframework.boot.context.properties.source.ConfigurationPropertySource;
import org.springframework.boot.context.properties.source.MapConfigurationPropertySource;
import org.springframework.boot.test.mock.web.SpringBootMockServletContext;
import org.springframework.boot.test.util.TestPropertyValues;
import org.springframework.boot.web.reactive.context.GenericReactiveWebApplicationContext;
import org.springframework.boot.web.servlet.support.ServletContextApplicationContextInitializer;
import org.springframework.context.ApplicationContext;
Expand Down Expand Up @@ -73,6 +72,7 @@
* @author Andy Wilkinson
* @author Stephane Nicoll
* @author Madhura Bhave
* @author Scott Frederick
* @since 1.4.0
* @see SpringBootTest
*/
Expand All @@ -92,7 +92,7 @@ public ApplicationContext loadContext(MergedContextConfiguration config) throws
application.getSources().addAll(Arrays.asList(configLocations));
ConfigurableEnvironment environment = getEnvironment();
if (!ObjectUtils.isEmpty(config.getActiveProfiles())) {
setActiveProfiles(environment, config.getActiveProfiles());
environment.setActiveProfiles(config.getActiveProfiles());
}
ResourceLoader resourceLoader = (application.getResourceLoader() != null) ? application.getResourceLoader()
: new DefaultResourceLoader(getClass().getClassLoader());
Expand Down Expand Up @@ -138,11 +138,6 @@ protected ConfigurableEnvironment getEnvironment() {
return new StandardEnvironment();
}

private void setActiveProfiles(ConfigurableEnvironment environment, String[] profiles) {
TestPropertyValues.of("spring.profiles.active=" + StringUtils.arrayToCommaDelimitedString(profiles))
.applyTo(environment);
}

protected String[] getInlinedProperties(MergedContextConfiguration config) {
ArrayList<String> properties = new ArrayList<>();
// JMX bean names will clash if the same bean is used in multiple contexts
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
import org.junit.Test;

import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.MergedContextConfiguration;
import org.springframework.test.context.TestContext;
Expand All @@ -35,6 +37,7 @@
* Tests for {@link SpringBootContextLoader}
*
* @author Stephane Nicoll
* @author Scott Frederick
*/
public class SpringBootContextLoaderTests {

Expand Down Expand Up @@ -88,13 +91,40 @@ public void environmentPropertiesNewLineInValue() {
assertKey(config, "variables", "foo=FOO\n bar=BAR");
}

@Test
public void noActiveProfiles() {
Environment environment = getApplicationEnvironment(SimpleConfig.class);
assertThat(environment.getActiveProfiles()).isEmpty();
}

@Test
public void multipleActiveProfiles() {
Environment environment = getApplicationEnvironment(MultipleActiveProfiles.class);
assertThat(environment.getActiveProfiles()).containsExactly("profile1", "profile2");
}

@Test
public void activeProfileWithComma() {
Environment environment = getApplicationEnvironment(ActiveProfileWithComma.class);
assertThat(environment.getActiveProfiles()).containsExactly("profile1,2");
}

private Map<String, Object> getEnvironmentProperties(Class<?> testClass) {
TestContext context = new ExposedTestContextManager(testClass).getExposedTestContext();
TestContext context = getTestContext(testClass);
MergedContextConfiguration config = (MergedContextConfiguration) ReflectionTestUtils.getField(context,
"mergedContextConfiguration");
return TestPropertySourceUtils.convertInlinedPropertiesToMap(config.getPropertySourceProperties());
}

private Environment getApplicationEnvironment(Class<?> testClass) {
TestContext context = getTestContext(testClass);
return context.getApplicationContext().getEnvironment();
}

private TestContext getTestContext(Class<?> testClass) {
return new ExposedTestContextManager(testClass).getExposedTestContext();
}

private void assertKey(Map<String, Object> actual, String key, Object value) {
assertThat(actual.containsKey(key)).as("Key '" + key + "' not found").isTrue();
assertThat(actual.get(key)).isEqualTo(value);
Expand Down Expand Up @@ -142,6 +172,20 @@ static class NewLineInValue {

}

@SpringBootTest
@ActiveProfiles({ "profile1", "profile2" })
@ContextConfiguration(classes = Config.class)
static class MultipleActiveProfiles {

}

@SpringBootTest
@ActiveProfiles({ "profile1,2" })
@ContextConfiguration(classes = Config.class)
static class ActiveProfileWithComma {

}

@Configuration
static class Config {

Expand Down