diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/DiscoveryClientVaultBootstrapConfigurationTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/DiscoveryClientVaultBootstrapConfigurationTests.java index acf3c9b1..150a4671 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/DiscoveryClientVaultBootstrapConfigurationTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/DiscoveryClientVaultBootstrapConfigurationTests.java @@ -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 diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultReactiveBootstrapConfigurationTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultReactiveBootstrapConfigurationTests.java index 0ab4c3cb..50748b4c 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultReactiveBootstrapConfigurationTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultReactiveBootstrapConfigurationTests.java @@ -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