Make ConsulConfigProperties bean conditional (#422)

Fixes GH-377
This commit is contained in:
Edvin Erikson
2018-12-13 19:29:56 +01:00
committed by Spencer Gibb
parent c65573ddb5
commit 7367b24a53
2 changed files with 58 additions and 0 deletions

View File

@@ -20,6 +20,7 @@ import com.ecwid.consul.v1.ConsulClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.consul.ConditionalOnConsulEnabled;
import org.springframework.cloud.consul.ConsulAutoConfiguration;
@@ -29,6 +30,7 @@ import org.springframework.context.annotation.Import;
/**
* @author Spencer Gibb
* @author Edvin Eriksson
*/
@Configuration
@ConditionalOnConsulEnabled
@@ -43,6 +45,7 @@ public class ConsulConfigBootstrapConfiguration {
private ConsulClient consul;
@Bean
@ConditionalOnMissingBean
public ConsulConfigProperties consulConfigProperties() {
return new ConsulConfigProperties();
}

View File

@@ -0,0 +1,55 @@
package org.springframework.cloud.consul.config;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.Bean;
/**
* @author Edvin Eriksson
*/
public class ConsulConfigBootstrapConfigurationTests {
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner();
/**
* Tests that the auto-config bean backs off if a user provided their own
*/
@Test
public void testConfigPropsBeanBacksOff() {
contextRunner
.withUserConfiguration(TestConfig.class)
.withUserConfiguration(ConsulConfigBootstrapConfiguration.class)
.run(context -> {
ConsulConfigProperties config = context.getBean(ConsulConfigProperties.class);
Assert.assertEquals("Prefix did not match", "platform-config", config.getPrefix());
Assert.assertEquals("Default context did not match", "defaults", config.getDefaultContext());
});
}
/**
* Tests that the auto-config bean kicks in if the user did not provide any custom bean.
*/
@Test
public void testConfigPropsBeanKicksIn() {
contextRunner
.withUserConfiguration(ConsulConfigBootstrapConfiguration.class)
.run(context -> {
ConsulConfigProperties config = context.getBean(ConsulConfigProperties.class);
Assert.assertEquals("Prefix did not match", "config", config.getPrefix());
Assert.assertEquals("Default context did not match", "application", config.getDefaultContext());
});
}
}
/**
* Test config that simulates a "user provided bean"
*/
class TestConfig {
@Bean
public ConsulConfigProperties consulConfigProperties() {
ConsulConfigProperties config = new ConsulConfigProperties();
config.setPrefix("platform-config");
config.setDefaultContext("defaults");
return config;
}
}