mirror of
https://gitee.com/dcren/initializr.git
synced 2025-09-20 18:48:13 +08:00
Improve auto-configuration tests
Closes gh-484
This commit is contained in:
@@ -35,7 +35,7 @@ import org.springframework.context.annotation.Configuration;
|
|||||||
@Configuration
|
@Configuration
|
||||||
@ConditionalOnClass(MeterRegistry.class)
|
@ConditionalOnClass(MeterRegistry.class)
|
||||||
@AutoConfigureAfter(CompositeMeterRegistryAutoConfiguration.class)
|
@AutoConfigureAfter(CompositeMeterRegistryAutoConfiguration.class)
|
||||||
public class InitializrMetricsConfiguration {
|
public class InitializrMetricsAutoConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnSingleCandidate(MeterRegistry.class)
|
@ConditionalOnSingleCandidate(MeterRegistry.class)
|
@@ -24,6 +24,7 @@ import io.spring.initializr.actuate.stat.StatsProperties;
|
|||||||
import io.spring.initializr.metadata.InitializrMetadataProvider;
|
import io.spring.initializr.metadata.InitializrMetadataProvider;
|
||||||
|
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
|
||||||
@@ -44,7 +45,7 @@ import org.springframework.retry.support.RetryTemplate;
|
|||||||
@Configuration
|
@Configuration
|
||||||
@EnableConfigurationProperties(StatsProperties.class)
|
@EnableConfigurationProperties(StatsProperties.class)
|
||||||
@ConditionalOnProperty("initializr.stats.elastic.uri")
|
@ConditionalOnProperty("initializr.stats.elastic.uri")
|
||||||
@AutoConfigureAfter(RestTemplateAutoConfiguration.class)
|
@AutoConfigureAfter(value = RestTemplateAutoConfiguration.class, name = "io.spring.initializr.web.autoconfigure.InitializrAutoConfiguration")
|
||||||
class InitializrStatsAutoConfiguration {
|
class InitializrStatsAutoConfiguration {
|
||||||
|
|
||||||
private final StatsProperties statsProperties;
|
private final StatsProperties statsProperties;
|
||||||
@@ -54,6 +55,7 @@ class InitializrStatsAutoConfiguration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
|
@ConditionalOnBean(InitializrMetadataProvider.class)
|
||||||
public ProjectGenerationStatPublisher projectRequestStatHandler(
|
public ProjectGenerationStatPublisher projectRequestStatHandler(
|
||||||
InitializrMetadataProvider provider,
|
InitializrMetadataProvider provider,
|
||||||
RestTemplateBuilder restTemplateBuilder) {
|
RestTemplateBuilder restTemplateBuilder) {
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
||||||
io.spring.initializr.actuate.autoconfigure.InitializrActuatorEndpointsAutoConfiguration,\
|
io.spring.initializr.actuate.autoconfigure.InitializrActuatorEndpointsAutoConfiguration,\
|
||||||
io.spring.initializr.actuate.autoconfigure.InitializrStatsAutoConfiguration,\
|
io.spring.initializr.actuate.autoconfigure.InitializrStatsAutoConfiguration,\
|
||||||
io.spring.initializr.actuate.autoconfigure.InitializrMetricsConfiguration
|
io.spring.initializr.actuate.autoconfigure.InitializrMetricsAutoConfiguration
|
@@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2018 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 io.spring.initializr.actuate.autoconfigure;
|
||||||
|
|
||||||
|
import io.spring.initializr.actuate.info.BomRangesInfoContributor;
|
||||||
|
import io.spring.initializr.actuate.info.DependencyRangesInfoContributor;
|
||||||
|
import io.spring.initializr.web.autoconfigure.InitializrAutoConfiguration;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
|
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
|
||||||
|
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for {@link InitializrActuatorEndpointsAutoConfiguration}.
|
||||||
|
*
|
||||||
|
* @author Madhura Bhave
|
||||||
|
*/
|
||||||
|
public class InitializrActuatorEndpointsAutoConfigurationTests {
|
||||||
|
|
||||||
|
private ApplicationContextRunner contextRunner = new ApplicationContextRunner()
|
||||||
|
.withConfiguration(AutoConfigurations.of(JacksonAutoConfiguration.class,
|
||||||
|
InitializrAutoConfiguration.class,
|
||||||
|
RestTemplateAutoConfiguration.class,
|
||||||
|
InitializrActuatorEndpointsAutoConfiguration.class));
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoConfigRegistersBomRangesInfoContributor() {
|
||||||
|
this.contextRunner.run((context) -> assertThat(context)
|
||||||
|
.hasSingleBean(BomRangesInfoContributor.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoConfigRegistersDependencyRangesInfoContributor() {
|
||||||
|
this.contextRunner.run((context) -> assertThat(context)
|
||||||
|
.hasSingleBean(DependencyRangesInfoContributor.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2018 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 io.spring.initializr.actuate.autoconfigure;
|
||||||
|
|
||||||
|
import io.micrometer.core.instrument.MeterRegistry;
|
||||||
|
import io.spring.initializr.actuate.metric.ProjectGenerationMetricsListener;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration;
|
||||||
|
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
|
import org.springframework.boot.test.context.FilteredClassLoader;
|
||||||
|
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for {@link InitializrMetricsAutoConfiguration}.
|
||||||
|
*
|
||||||
|
* @author Madhura Bhave
|
||||||
|
*/
|
||||||
|
public class InitializrMetricsAutoConfigurationTests {
|
||||||
|
|
||||||
|
private ApplicationContextRunner contextRunner = new ApplicationContextRunner()
|
||||||
|
.withConfiguration(AutoConfigurations.of(MetricsAutoConfiguration.class,
|
||||||
|
CompositeMeterRegistryAutoConfiguration.class,
|
||||||
|
InitializrMetricsAutoConfiguration.class));
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoConfigRegistersProjectGenerationMetricsListenerBean() {
|
||||||
|
this.contextRunner.run((context) -> assertThat(context)
|
||||||
|
.hasSingleBean(ProjectGenerationMetricsListener.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoConfigConditionalOnMeterRegistryClass() {
|
||||||
|
this.contextRunner.withClassLoader(new FilteredClassLoader(MeterRegistry.class))
|
||||||
|
.run((context) -> assertThat(context)
|
||||||
|
.doesNotHaveBean(ProjectGenerationMetricsListener.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -18,16 +18,21 @@ package io.spring.initializr.actuate.autoconfigure;
|
|||||||
|
|
||||||
import io.spring.initializr.actuate.stat.ProjectGenerationStatPublisher;
|
import io.spring.initializr.actuate.stat.ProjectGenerationStatPublisher;
|
||||||
import io.spring.initializr.metadata.InitializrMetadataProvider;
|
import io.spring.initializr.metadata.InitializrMetadataProvider;
|
||||||
|
import io.spring.initializr.web.autoconfigure.InitializrAutoConfiguration;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import org.springframework.beans.DirectFieldAccessor;
|
import org.springframework.beans.DirectFieldAccessor;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
|
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
|
||||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||||
import org.springframework.boot.web.client.RestTemplateCustomizer;
|
import org.springframework.boot.web.client.RestTemplateCustomizer;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.context.annotation.Import;
|
import org.springframework.context.annotation.Import;
|
||||||
|
import org.springframework.retry.backoff.ExponentialBackOffPolicy;
|
||||||
|
import org.springframework.retry.support.RetryTemplate;
|
||||||
|
import org.springframework.test.util.ReflectionTestUtils;
|
||||||
import org.springframework.web.client.ResponseErrorHandler;
|
import org.springframework.web.client.ResponseErrorHandler;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
@@ -38,13 +43,45 @@ import static org.mockito.Mockito.mock;
|
|||||||
* Tests for {@link InitializrStatsAutoConfiguration}.
|
* Tests for {@link InitializrStatsAutoConfiguration}.
|
||||||
*
|
*
|
||||||
* @author Stephane Nicoll
|
* @author Stephane Nicoll
|
||||||
|
* @author Madhura Bhave
|
||||||
*/
|
*/
|
||||||
public class InitializrStatsAutoConfigurationTests {
|
public class InitializrStatsAutoConfigurationTests {
|
||||||
|
|
||||||
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
|
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
|
||||||
.withConfiguration(AutoConfigurations.of(RestTemplateAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(JacksonAutoConfiguration.class,
|
||||||
|
InitializrAutoConfiguration.class,
|
||||||
|
RestTemplateAutoConfiguration.class,
|
||||||
InitializrStatsAutoConfiguration.class));
|
InitializrStatsAutoConfiguration.class));
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoConfigRegistersProjectGenerationStatPublisher() {
|
||||||
|
this.contextRunner
|
||||||
|
.withPropertyValues("initializr.stats.elastic.uri=http://localhost:9200")
|
||||||
|
.run((context) -> assertThat(context)
|
||||||
|
.hasSingleBean(ProjectGenerationStatPublisher.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoConfigRegistersRetryTemplate() {
|
||||||
|
this.contextRunner
|
||||||
|
.withPropertyValues("initializr.stats.elastic.uri=http://localhost:9200")
|
||||||
|
.run((context) -> assertThat(context).hasSingleBean(RetryTemplate.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void statsRetryTemplateConditionalOnMissingBean() {
|
||||||
|
this.contextRunner
|
||||||
|
.withUserConfiguration(CustomStatsRetryTemplateConfiguration.class)
|
||||||
|
.withPropertyValues("initializr.stats.elastic.uri=http://localhost:9200")
|
||||||
|
.run((context) -> {
|
||||||
|
assertThat(context).hasSingleBean(RetryTemplate.class);
|
||||||
|
RetryTemplate retryTemplate = context.getBean(RetryTemplate.class);
|
||||||
|
ExponentialBackOffPolicy backOffPolicy = (ExponentialBackOffPolicy) ReflectionTestUtils
|
||||||
|
.getField(retryTemplate, "backOffPolicy");
|
||||||
|
assertThat(backOffPolicy.getMultiplier()).isEqualTo(10);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void customRestTemplateBuilderIsUsed() {
|
public void customRestTemplateBuilderIsUsed() {
|
||||||
this.contextRunner.withUserConfiguration(CustomRestTemplateConfiguration.class)
|
this.contextRunner.withUserConfiguration(CustomRestTemplateConfiguration.class)
|
||||||
@@ -60,6 +97,20 @@ public class InitializrStatsAutoConfigurationTests {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
static class CustomStatsRetryTemplateConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public RetryTemplate statsRetryTemplate() {
|
||||||
|
RetryTemplate retryTemplate = new RetryTemplate();
|
||||||
|
ExponentialBackOffPolicy backOffPolicy = new ExponentialBackOffPolicy();
|
||||||
|
backOffPolicy.setMultiplier(10);
|
||||||
|
retryTemplate.setBackOffPolicy(backOffPolicy);
|
||||||
|
return retryTemplate;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
static class InfrastructureConfiguration {
|
static class InfrastructureConfiguration {
|
||||||
|
|
||||||
|
@@ -41,7 +41,6 @@ import io.spring.initializr.web.ui.UiController;
|
|||||||
|
|
||||||
import org.springframework.beans.factory.ObjectProvider;
|
import org.springframework.beans.factory.ObjectProvider;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||||
import org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration;
|
|
||||||
import org.springframework.boot.autoconfigure.cache.JCacheManagerCustomizer;
|
import org.springframework.boot.autoconfigure.cache.JCacheManagerCustomizer;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
@@ -68,7 +67,7 @@ import org.springframework.web.servlet.resource.ResourceUrlProvider;
|
|||||||
*/
|
*/
|
||||||
@Configuration
|
@Configuration
|
||||||
@EnableConfigurationProperties(InitializrProperties.class)
|
@EnableConfigurationProperties(InitializrProperties.class)
|
||||||
@AutoConfigureAfter({ CacheAutoConfiguration.class, JacksonAutoConfiguration.class,
|
@AutoConfigureAfter({ JacksonAutoConfiguration.class,
|
||||||
RestTemplateAutoConfiguration.class })
|
RestTemplateAutoConfiguration.class })
|
||||||
public class InitializrAutoConfiguration {
|
public class InitializrAutoConfiguration {
|
||||||
|
|
||||||
@@ -103,6 +102,7 @@ public class InitializrAutoConfiguration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
|
@ConditionalOnMissingBean
|
||||||
public ProjectResourceLocator projectResourceLocator() {
|
public ProjectResourceLocator projectResourceLocator() {
|
||||||
return new ProjectResourceLocator();
|
return new ProjectResourceLocator();
|
||||||
}
|
}
|
||||||
|
@@ -16,14 +16,27 @@
|
|||||||
|
|
||||||
package io.spring.initializr.web.autoconfigure;
|
package io.spring.initializr.web.autoconfigure;
|
||||||
|
|
||||||
|
import io.spring.initializr.generator.ProjectGenerator;
|
||||||
|
import io.spring.initializr.generator.ProjectRequestResolver;
|
||||||
|
import io.spring.initializr.generator.ProjectResourceLocator;
|
||||||
|
import io.spring.initializr.metadata.DependencyMetadataProvider;
|
||||||
import io.spring.initializr.metadata.InitializrMetadataProvider;
|
import io.spring.initializr.metadata.InitializrMetadataProvider;
|
||||||
|
import io.spring.initializr.util.TemplateRenderer;
|
||||||
|
import io.spring.initializr.web.project.MainController;
|
||||||
|
import io.spring.initializr.web.ui.UiController;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
|
||||||
import org.springframework.beans.DirectFieldAccessor;
|
import org.springframework.beans.DirectFieldAccessor;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||||
|
import org.springframework.boot.autoconfigure.cache.JCacheManagerCustomizer;
|
||||||
|
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
||||||
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
|
||||||
|
import org.springframework.boot.test.context.FilteredClassLoader;
|
||||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||||
|
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
|
||||||
import org.springframework.boot.web.client.RestTemplateCustomizer;
|
import org.springframework.boot.web.client.RestTemplateCustomizer;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
@@ -37,6 +50,7 @@ import static org.mockito.Mockito.mock;
|
|||||||
* Tests for {@link InitializrAutoConfiguration}.
|
* Tests for {@link InitializrAutoConfiguration}.
|
||||||
*
|
*
|
||||||
* @author Stephane Nicoll
|
* @author Stephane Nicoll
|
||||||
|
* @author Madhura Bhave
|
||||||
*/
|
*/
|
||||||
public class InitializrAutoConfigurationTests {
|
public class InitializrAutoConfigurationTests {
|
||||||
|
|
||||||
@@ -44,6 +58,104 @@ public class InitializrAutoConfigurationTests {
|
|||||||
.withConfiguration(AutoConfigurations.of(RestTemplateAutoConfiguration.class,
|
.withConfiguration(AutoConfigurations.of(RestTemplateAutoConfiguration.class,
|
||||||
JacksonAutoConfiguration.class, InitializrAutoConfiguration.class));
|
JacksonAutoConfiguration.class, InitializrAutoConfiguration.class));
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoConfigRegistersProjectGenerator() {
|
||||||
|
this.contextRunner.run(
|
||||||
|
(context) -> assertThat(context).hasSingleBean(ProjectGenerator.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoConfigWhenProjectGeneratorBeanPresentDoesNotRegisterProjectGenerator() {
|
||||||
|
this.contextRunner
|
||||||
|
.withUserConfiguration(CustomProjectGeneratorConfiguration.class)
|
||||||
|
.run((context) -> {
|
||||||
|
assertThat(context).hasSingleBean(ProjectGenerator.class);
|
||||||
|
assertThat(context).hasBean("testProjectGenerator");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoConfigRegistersTemplateRenderer() {
|
||||||
|
this.contextRunner.run(
|
||||||
|
(context) -> assertThat(context).hasSingleBean(TemplateRenderer.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoConfigWhenTemplateRendererBeanPresentDoesNotRegisterTemplateRenderer() {
|
||||||
|
this.contextRunner
|
||||||
|
.withUserConfiguration(CustomTemplateRendererConfiguration.class)
|
||||||
|
.run((context) -> {
|
||||||
|
assertThat(context).hasSingleBean(TemplateRenderer.class);
|
||||||
|
assertThat(context).hasBean("testTemplateRenderer");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoConfigRegistersProjectRequestResolver() {
|
||||||
|
this.contextRunner.run((context) -> assertThat(context)
|
||||||
|
.hasSingleBean(ProjectRequestResolver.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoConfigWhenProjectRequestResolverBeanPresentDoesNotRegisterProjectRequestResolver() {
|
||||||
|
this.contextRunner
|
||||||
|
.withUserConfiguration(CustomProjectRequestResolverConfiguration.class)
|
||||||
|
.run((context) -> {
|
||||||
|
assertThat(context).hasSingleBean(ProjectRequestResolver.class);
|
||||||
|
assertThat(context).hasBean("testProjectRequestResolver");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoConfigRegistersProjectResourceLocator() {
|
||||||
|
this.contextRunner.run((context) -> assertThat(context)
|
||||||
|
.hasSingleBean(ProjectResourceLocator.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoConfigWhenProjectResourceLocatorBeanPresentDoesNotRegisterProjectResourceLocator() {
|
||||||
|
this.contextRunner
|
||||||
|
.withUserConfiguration(CustomProjectResourceLocatorConfiguration.class)
|
||||||
|
.run((context) -> {
|
||||||
|
assertThat(context).hasSingleBean(ProjectResourceLocator.class);
|
||||||
|
assertThat(context).hasBean("testProjectResourceLocator");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoConfigRegistersInitializrMetadataProvider() {
|
||||||
|
this.contextRunner.run((context) -> assertThat(context)
|
||||||
|
.hasSingleBean(InitializrMetadataProvider.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoConfigWhenInitializrMetadataProviderBeanPresentDoesNotRegisterInitializrMetadataProvider() {
|
||||||
|
this.contextRunner
|
||||||
|
.withUserConfiguration(
|
||||||
|
CustomInitializrMetadataProviderConfiguration.class)
|
||||||
|
.run((context) -> {
|
||||||
|
assertThat(context).hasSingleBean(InitializrMetadataProvider.class);
|
||||||
|
assertThat(context).hasBean("testInitializrMetadataProvider");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoConfigRegistersDependencyMetadataProvider() {
|
||||||
|
this.contextRunner.run((context) -> assertThat(context)
|
||||||
|
.hasSingleBean(DependencyMetadataProvider.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void autoConfigWhenDependencyMetadataProviderBeanPresentDoesNotRegisterDependencyMetadataProvider() {
|
||||||
|
this.contextRunner
|
||||||
|
.withUserConfiguration(
|
||||||
|
CustomDependencyMetadataProviderConfiguration.class)
|
||||||
|
.run((context) -> {
|
||||||
|
assertThat(context).hasSingleBean(DependencyMetadataProvider.class);
|
||||||
|
assertThat(context).hasBean("testDependencyMetadataProvider");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void customRestTemplateBuilderIsUsed() {
|
public void customRestTemplateBuilderIsUsed() {
|
||||||
this.contextRunner.withUserConfiguration(CustomRestTemplateConfiguration.class)
|
this.contextRunner.withUserConfiguration(CustomRestTemplateConfiguration.class)
|
||||||
@@ -57,6 +169,45 @@ public class InitializrAutoConfigurationTests {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void webConfiguration() {
|
||||||
|
WebApplicationContextRunner webContextRunner = new WebApplicationContextRunner()
|
||||||
|
.withConfiguration(
|
||||||
|
AutoConfigurations.of(RestTemplateAutoConfiguration.class,
|
||||||
|
JacksonAutoConfiguration.class,
|
||||||
|
HttpMessageConvertersAutoConfiguration.class,
|
||||||
|
WebMvcAutoConfiguration.class,
|
||||||
|
InitializrAutoConfiguration.class));
|
||||||
|
webContextRunner.run((context) -> {
|
||||||
|
assertThat(context).hasSingleBean(InitializrWebConfig.class);
|
||||||
|
assertThat(context).hasSingleBean(MainController.class);
|
||||||
|
assertThat(context).hasSingleBean(UiController.class);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void webConfigurationConditionalOnWebApplication() {
|
||||||
|
this.contextRunner.run((context) -> {
|
||||||
|
assertThat(context).doesNotHaveBean(InitializrWebConfig.class);
|
||||||
|
assertThat(context).doesNotHaveBean(MainController.class);
|
||||||
|
assertThat(context).doesNotHaveBean(UiController.class);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void cacheConfiguration() {
|
||||||
|
this.contextRunner.run((context) -> assertThat(context)
|
||||||
|
.hasSingleBean(JCacheManagerCustomizer.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void cacheConfigurationConditionalOnClass() {
|
||||||
|
this.contextRunner
|
||||||
|
.withClassLoader(new FilteredClassLoader("javax.cache.CacheManager"))
|
||||||
|
.run((context) -> assertThat(context)
|
||||||
|
.doesNotHaveBean(JCacheManagerCustomizer.class));
|
||||||
|
}
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
static class CustomRestTemplateConfiguration {
|
static class CustomRestTemplateConfiguration {
|
||||||
|
|
||||||
@@ -70,4 +221,64 @@ public class InitializrAutoConfigurationTests {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
static class CustomProjectGeneratorConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public ProjectGenerator testProjectGenerator() {
|
||||||
|
return Mockito.mock(ProjectGenerator.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
static class CustomTemplateRendererConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public TemplateRenderer testTemplateRenderer() {
|
||||||
|
return Mockito.mock(TemplateRenderer.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
static class CustomProjectRequestResolverConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public ProjectRequestResolver testProjectRequestResolver() {
|
||||||
|
return Mockito.mock(ProjectRequestResolver.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
static class CustomProjectResourceLocatorConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public ProjectResourceLocator testProjectResourceLocator() {
|
||||||
|
return Mockito.mock(ProjectResourceLocator.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
static class CustomInitializrMetadataProviderConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public InitializrMetadataProvider testInitializrMetadataProvider() {
|
||||||
|
return Mockito.mock(InitializrMetadataProvider.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
static class CustomDependencyMetadataProviderConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public DependencyMetadataProvider testDependencyMetadataProvider() {
|
||||||
|
return Mockito.mock(DependencyMetadataProvider.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user