Use ApplicationContextRunner in auto-config tests.
Closes gh-261. Related ticket: gh-254.
This commit is contained in:
@@ -24,10 +24,10 @@ import lombok.Data;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
import org.springframework.boot.test.util.TestPropertyValues;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.cloud.client.ServiceInstance;
|
||||
import org.springframework.cloud.client.discovery.DiscoveryClient;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.vault.client.VaultEndpoint;
|
||||
@@ -44,55 +44,60 @@ import static org.mockito.Mockito.*;
|
||||
*/
|
||||
public class DiscoveryClientVaultBootstrapConfigurationTests {
|
||||
|
||||
private AnnotationConfigApplicationContext context;
|
||||
private ApplicationContextRunner contextRunner = new ApplicationContextRunner()
|
||||
.withConfiguration(AutoConfigurations.of(
|
||||
DiscoveryClientVaultBootstrapConfiguration.class,
|
||||
VaultBootstrapConfiguration.class));
|
||||
|
||||
@Test
|
||||
public void shouldRegisterDefaultBeans() {
|
||||
|
||||
load(DiscoveryConfiguration.class, "spring.cloud.vault.token=foo",
|
||||
"spring.cloud.vault.discovery.enabled=true");
|
||||
contextRunner
|
||||
.withUserConfiguration(DiscoveryConfiguration.class)
|
||||
.withPropertyValues("spring.cloud.vault.token=foo",
|
||||
"spring.cloud.vault.discovery.enabled=true")
|
||||
.run(context -> {
|
||||
|
||||
assertThat(context.getBean(VaultServiceInstanceProvider.class)).isInstanceOf(
|
||||
DiscoveryClientVaultServiceInstanceProvider.class);
|
||||
assertThat(context.getBean(VaultServiceInstanceProvider.class))
|
||||
.isInstanceOf(
|
||||
DiscoveryClientVaultServiceInstanceProvider.class);
|
||||
|
||||
VaultEndpointProvider endpointProvider = context
|
||||
.getBean(VaultEndpointProvider.class);
|
||||
VaultEndpoint vaultEndpoint = endpointProvider.getVaultEndpoint();
|
||||
assertThat(vaultEndpoint.getPort()).isEqualTo(1234);
|
||||
VaultEndpointProvider endpointProvider = context
|
||||
.getBean(VaultEndpointProvider.class);
|
||||
VaultEndpoint vaultEndpoint = endpointProvider.getVaultEndpoint();
|
||||
assertThat(vaultEndpoint.getPort()).isEqualTo(1234);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldNotRegisterBeansIfDiscoveryDisabled() {
|
||||
|
||||
load(DiscoveryConfiguration.class, "spring.cloud.vault.token=foo",
|
||||
"spring.cloud.vault.discovery.enabled=false");
|
||||
contextRunner
|
||||
.withUserConfiguration(DiscoveryConfiguration.class)
|
||||
.withPropertyValues("spring.cloud.vault.token=foo",
|
||||
"spring.cloud.vault.discovery.enabled=false")
|
||||
.run(context -> {
|
||||
|
||||
assertThat(context.getBeanNamesForType(VaultServiceInstanceProvider.class))
|
||||
.isEmpty();
|
||||
assertThat(
|
||||
context.getBeanNamesForType(VaultServiceInstanceProvider.class))
|
||||
.isEmpty();
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldNotRegisterBeansIfVaultDisabled() {
|
||||
|
||||
load(DiscoveryConfiguration.class, "spring.cloud.vault.token=foo",
|
||||
"spring.cloud.vault.enabled=false");
|
||||
contextRunner
|
||||
.withUserConfiguration(DiscoveryConfiguration.class)
|
||||
.withPropertyValues("spring.cloud.vault.token=foo",
|
||||
"spring.cloud.vault.enabled=false")
|
||||
.run(context -> {
|
||||
|
||||
assertThat(context.getBeanNamesForType(VaultServiceInstanceProvider.class))
|
||||
.isEmpty();
|
||||
}
|
||||
assertThat(
|
||||
context.getBeanNamesForType(VaultServiceInstanceProvider.class))
|
||||
.isEmpty();
|
||||
});
|
||||
|
||||
private void load(Class<?> config, String... environment) {
|
||||
|
||||
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
|
||||
|
||||
TestPropertyValues.of(environment).applyTo(ctx);
|
||||
|
||||
ctx.register(config);
|
||||
ctx.register(DiscoveryClientVaultBootstrapConfiguration.class);
|
||||
ctx.register(VaultBootstrapConfiguration.class);
|
||||
ctx.refresh();
|
||||
|
||||
this.context = ctx;
|
||||
}
|
||||
|
||||
@Configuration
|
||||
|
||||
@@ -18,8 +18,9 @@ package org.springframework.cloud.vault.config;
|
||||
import org.junit.Test;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import org.springframework.boot.test.util.TestPropertyValues;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.test.context.FilteredClassLoader;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.vault.authentication.AuthenticationSteps;
|
||||
@@ -41,58 +42,74 @@ import static org.assertj.core.api.Assertions.*;
|
||||
*/
|
||||
public class VaultReactiveBootstrapConfigurationTests {
|
||||
|
||||
private AnnotationConfigApplicationContext context;
|
||||
private ApplicationContextRunner contextRunner = new ApplicationContextRunner()
|
||||
.withConfiguration(AutoConfigurations
|
||||
.of(VaultReactiveBootstrapConfiguration.class));
|
||||
|
||||
@Test
|
||||
public void shouldConfigureTemplate() {
|
||||
|
||||
load(AuthenticationFactoryConfiguration.class,
|
||||
"spring.cloud.vault.config.lifecycle.enabled=false");
|
||||
contextRunner
|
||||
.withUserConfiguration(AuthenticationFactoryConfiguration.class)
|
||||
.withPropertyValues("spring.cloud.vault.config.lifecycle.enabled=false")
|
||||
.run(context -> {
|
||||
|
||||
assertThat(context.getBean(ReactiveVaultOperations.class)).isNotNull();
|
||||
assertThat(context.getBean(AuthenticationStepsFactory.class)).isNotNull();
|
||||
assertThat(context.getBean(SessionManager.class)).isNotNull()
|
||||
.isNotInstanceOf(LifecycleAwareSessionManager.class)
|
||||
.isNotInstanceOf(SimpleSessionManager.class);
|
||||
assertThat(context.getBeanNamesForType(WebClient.class)).isEmpty();
|
||||
assertThat(context.getBean(ReactiveVaultOperations.class))
|
||||
.isNotNull();
|
||||
assertThat(context.getBean(AuthenticationStepsFactory.class))
|
||||
.isNotNull();
|
||||
assertThat(context.getBean(SessionManager.class)).isNotNull()
|
||||
.isNotInstanceOf(LifecycleAwareSessionManager.class)
|
||||
.isNotInstanceOf(SimpleSessionManager.class);
|
||||
assertThat(context.getBeanNamesForType(WebClient.class)).isEmpty();
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldNotConfigureIfHttpClientIsMissing() {
|
||||
|
||||
contextRunner
|
||||
.withUserConfiguration(AuthenticationFactoryConfiguration.class)
|
||||
.withClassLoader(
|
||||
new FilteredClassLoader("reactor.netty.http.client.HttpClient"))
|
||||
.run(context -> {
|
||||
|
||||
assertThat(context.getBeanNamesForType(ReactiveVaultOperations.class))
|
||||
.isEmpty();
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldConfigureTemplateWithTokenSupplier() {
|
||||
|
||||
load(TokenSupplierConfiguration.class,
|
||||
"spring.cloud.vault.config.lifecycle.enabled=false");
|
||||
contextRunner
|
||||
.withUserConfiguration(TokenSupplierConfiguration.class)
|
||||
.withPropertyValues("spring.cloud.vault.config.lifecycle.enabled=false")
|
||||
.run(context -> {
|
||||
|
||||
assertThat(context.getBean(ReactiveVaultOperations.class)).isNotNull();
|
||||
assertThat(context.getBean(SessionManager.class)).isNotNull()
|
||||
.isNotInstanceOf(LifecycleAwareSessionManager.class)
|
||||
.isNotInstanceOf(SimpleSessionManager.class);
|
||||
assertThat(context.getBeanNamesForType(WebClient.class)).isEmpty();
|
||||
assertThat(context.getBean(ReactiveVaultOperations.class))
|
||||
.isNotNull();
|
||||
assertThat(context.getBean(SessionManager.class)).isNotNull()
|
||||
.isNotInstanceOf(LifecycleAwareSessionManager.class)
|
||||
.isNotInstanceOf(SimpleSessionManager.class);
|
||||
assertThat(context.getBeanNamesForType(WebClient.class)).isEmpty();
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldNotConfigureReactiveSupport() {
|
||||
|
||||
load(VaultBootstrapConfiguration.class,
|
||||
"spring.cloud.vault.reactive.enabled=false",
|
||||
"spring.cloud.vault.token=foo");
|
||||
contextRunner
|
||||
.withUserConfiguration(VaultBootstrapConfiguration.class)
|
||||
.withPropertyValues("spring.cloud.vault.reactive.enabled=false",
|
||||
"spring.cloud.vault.token=foo")
|
||||
.run(context -> {
|
||||
|
||||
assertThat(context.getBeanNamesForType(ReactiveVaultOperations.class)).isEmpty();
|
||||
assertThat(context.getBean(SessionManager.class)).isInstanceOf(
|
||||
LifecycleAwareSessionManager.class);
|
||||
}
|
||||
|
||||
private void load(Class<?> config, String... environment) {
|
||||
|
||||
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
|
||||
|
||||
TestPropertyValues.of(environment).applyTo(ctx);
|
||||
|
||||
ctx.register(config);
|
||||
ctx.register(VaultReactiveBootstrapConfiguration.class);
|
||||
ctx.refresh();
|
||||
|
||||
this.context = ctx;
|
||||
assertThat(context.getBeanNamesForType(ReactiveVaultOperations.class))
|
||||
.isEmpty();
|
||||
assertThat(context.getBean(SessionManager.class)).isInstanceOf(
|
||||
LifecycleAwareSessionManager.class);
|
||||
});
|
||||
}
|
||||
|
||||
@Configuration
|
||||
|
||||
Reference in New Issue
Block a user