/*
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.boot;
import org.junit.After;
import org.junit.Test;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Configuration;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Tests to reproduce reported issues.
*
* @author Phillip Webb
* @author Dave Syer
*/
public class ReproTests {
private ConfigurableApplicationContext context;
@After
public void cleanUp() {
if (this.context != null) {
this.context.close();
}
}
@Test
public void enableProfileViaApplicationProperties() throws Exception {
// gh-308
SpringApplication application = new SpringApplication(Config.class);
application.setWebApplicationType(WebApplicationType.NONE);
this.context = application.run(
"--spring.config.name=enableprofileviaapplicationproperties",
"--spring.profiles.active=dev");
assertThat(this.context.getEnvironment().acceptsProfiles("dev")).isTrue();
assertThat(this.context.getEnvironment().acceptsProfiles("a")).isTrue();
}
@Test
public void activeProfilesWithYamlAndCommandLine() throws Exception {
// gh-322, gh-342
SpringApplication application = new SpringApplication(Config.class);
application.setWebApplicationType(WebApplicationType.NONE);
String configName = "--spring.config.name=activeprofilerepro";
this.context = application.run(configName, "--spring.profiles.active=B");
assertVersionProperty(this.context, "B", "B");
}
@Test
public void activeProfilesWithYamlOnly() throws Exception {
// gh-322, gh-342
SpringApplication application = new SpringApplication(Config.class);
application.setWebApplicationType(WebApplicationType.NONE);
String configName = "--spring.config.name=activeprofilerepro";
this.context = application.run(configName);
assertVersionProperty(this.context, "B", "B");
}
@Test
public void orderActiveProfilesWithYamlOnly() throws Exception {
// gh-322, gh-342
SpringApplication application = new SpringApplication(Config.class);
application.setWebApplicationType(WebApplicationType.NONE);
String configName = "--spring.config.name=activeprofilerepro-ordered";
this.context = application.run(configName);
assertVersionProperty(this.context, "B", "A", "B");
}
@Test
public void commandLineBeatsProfilesWithYaml() throws Exception {
// gh-322, gh-342
SpringApplication application = new SpringApplication(Config.class);
application.setWebApplicationType(WebApplicationType.NONE);
String configName = "--spring.config.name=activeprofilerepro";
this.context = application.run(configName, "--spring.profiles.active=C");
assertVersionProperty(this.context, "C", "C");
}
@Test
public void orderProfilesWithYaml() throws Exception {
// gh-322, gh-342
SpringApplication application = new SpringApplication(Config.class);
application.setWebApplicationType(WebApplicationType.NONE);
String configName = "--spring.config.name=activeprofilerepro";
this.context = application.run(configName, "--spring.profiles.active=A,C");
assertVersionProperty(this.context, "C", "A", "C");
}
@Test
public void reverseOrderOfProfilesWithYaml() throws Exception {
// gh-322, gh-342
SpringApplication application = new SpringApplication(Config.class);
application.setWebApplicationType(WebApplicationType.NONE);
String configName = "--spring.config.name=activeprofilerepro";
this.context = application.run(configName, "--spring.profiles.active=C,A");
assertVersionProperty(this.context, "A", "C", "A");
}
@Test
public void activeProfilesWithYamlAndCommandLineAndNoOverride() throws Exception {
// gh-322, gh-342
SpringApplication application = new SpringApplication(Config.class);
application.setWebApplicationType(WebApplicationType.NONE);
String configName = "--spring.config.name=activeprofilerepro-without-override";
this.context = application.run(configName, "--spring.profiles.active=B");
assertVersionProperty(this.context, "B", "B");
}
@Test
public void activeProfilesWithYamlOnlyAndNoOverride() throws Exception {
// gh-322, gh-342
SpringApplication application = new SpringApplication(Config.class);
application.setWebApplicationType(WebApplicationType.NONE);
String configName = "--spring.config.name=activeprofilerepro-without-override";
this.context = application.run(configName);
assertVersionProperty(this.context, null);
}
@Test
public void commandLineBeatsProfilesWithYamlAndNoOverride() throws Exception {
// gh-322, gh-342
SpringApplication application = new SpringApplication(Config.class);
application.setWebApplicationType(WebApplicationType.NONE);
String configName = "--spring.config.name=activeprofilerepro-without-override";
this.context = application.run(configName, "--spring.profiles.active=C");
assertVersionProperty(this.context, "C", "C");
}
@Test
public void orderProfilesWithYamlAndNoOverride() throws Exception {
// gh-322, gh-342
SpringApplication application = new SpringApplication(Config.class);
application.setWebApplicationType(WebApplicationType.NONE);
String configName = "--spring.config.name=activeprofilerepro-without-override";
this.context = application.run(configName, "--spring.profiles.active=A,C");
assertVersionProperty(this.context, "C", "A", "C");
}
@Test
public void reverseOrderOfProfilesWithYamlAndNoOverride() throws Exception {
// gh-322, gh-342
SpringApplication application = new SpringApplication(Config.class);
application.setWebApplicationType(WebApplicationType.NONE);
String configName = "--spring.config.name=activeprofilerepro-without-override";
this.context = application.run(configName, "--spring.profiles.active=C,A");
assertVersionProperty(this.context, "A", "C", "A");
}
private void assertVersionProperty(ConfigurableApplicationContext context,
String expectedVersion, String... expectedActiveProfiles) {
assertThat(context.getEnvironment().getActiveProfiles())
.isEqualTo(expectedActiveProfiles);
assertThat(context.getEnvironment().getProperty("version")).as("version mismatch")
.isEqualTo(expectedVersion);
context.close();
}
@Configuration
public static class Config {
}
}