Commit 06572b01 authored by Stephane Nicoll's avatar Stephane Nicoll

Polish

parent f527c4b8
...@@ -20,12 +20,10 @@ import javax.net.SocketFactory; ...@@ -20,12 +20,10 @@ import javax.net.SocketFactory;
import com.mongodb.MongoClient; import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions; import com.mongodb.MongoClientOptions;
import org.junit.After;
import org.junit.Test; import org.junit.Test;
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.util.TestPropertyValues; import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
...@@ -40,58 +38,44 @@ import static org.mockito.Mockito.mock; ...@@ -40,58 +38,44 @@ import static org.mockito.Mockito.mock;
*/ */
public class MongoAutoConfigurationTests { public class MongoAutoConfigurationTests {
private AnnotationConfigApplicationContext context; private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(MongoAutoConfiguration.class));
@After
public void close() {
if (this.context != null) {
this.context.close();
}
}
@Test @Test
public void clientExists() { public void clientExists() {
this.context = new AnnotationConfigApplicationContext( this.contextRunner.run((context) ->
PropertyPlaceholderAutoConfiguration.class, MongoAutoConfiguration.class); assertThat(context).hasSingleBean(MongoClient.class));
assertThat(this.context.getBeanNamesForType(MongoClient.class)).hasSize(1);
} }
@Test @Test
public void optionsAdded() { public void optionsAdded() {
this.context = new AnnotationConfigApplicationContext(); this.contextRunner.withPropertyValues("spring.data.mongodb.host:localhost")
TestPropertyValues.of("spring.data.mongodb.host:localhost").applyTo(this.context); .withUserConfiguration(OptionsConfig.class).run((context) ->
this.context.register(OptionsConfig.class, assertThat(context.getBean(MongoClient.class).getMongoClientOptions()
PropertyPlaceholderAutoConfiguration.class, MongoAutoConfiguration.class); .getSocketTimeout()).isEqualTo(300));
this.context.refresh();
assertThat(this.context.getBean(MongoClient.class).getMongoClientOptions()
.getSocketTimeout()).isEqualTo(300);
} }
@Test @Test
public void optionsAddedButNoHost() { public void optionsAddedButNoHost() {
this.context = new AnnotationConfigApplicationContext(); this.contextRunner
TestPropertyValues.of("spring.data.mongodb.uri:mongodb://localhost/test") .withPropertyValues("spring.data.mongodb.uri:mongodb://localhost/test")
.applyTo(this.context); .withUserConfiguration(OptionsConfig.class).run((context) ->
this.context.register(OptionsConfig.class, assertThat(context.getBean(MongoClient.class).getMongoClientOptions()
PropertyPlaceholderAutoConfiguration.class, MongoAutoConfiguration.class); .getSocketTimeout()).isEqualTo(300));
this.context.refresh();
assertThat(this.context.getBean(MongoClient.class).getMongoClientOptions()
.getSocketTimeout()).isEqualTo(300);
} }
@Test @Test
public void optionsSslConfig() { public void optionsSslConfig() {
this.context = new AnnotationConfigApplicationContext(); this.contextRunner
TestPropertyValues.of("spring.data.mongodb.uri:mongodb://localhost/test") .withPropertyValues("spring.data.mongodb.uri:mongodb://localhost/test")
.applyTo(this.context); .withUserConfiguration(SslOptionsConfig.class).run((context) -> {
this.context.register(SslOptionsConfig.class, assertThat(context).hasSingleBean(MongoClient.class);
PropertyPlaceholderAutoConfiguration.class, MongoAutoConfiguration.class); MongoClient mongo = context.getBean(MongoClient.class);
this.context.refresh(); MongoClientOptions options = mongo.getMongoClientOptions();
MongoClient mongo = this.context.getBean(MongoClient.class); assertThat(options.isSslEnabled()).isTrue();
MongoClientOptions options = mongo.getMongoClientOptions(); assertThat(options.getSocketFactory())
assertThat(options.isSslEnabled()).isTrue(); .isSameAs(context.getBean("mySocketFactory"));
assertThat(options.getSocketFactory()) });
.isSameAs(this.context.getBean("mySocketFactory"));
} }
@Configuration @Configuration
......
...@@ -24,12 +24,10 @@ import com.mongodb.connection.SocketSettings; ...@@ -24,12 +24,10 @@ import com.mongodb.connection.SocketSettings;
import com.mongodb.connection.StreamFactory; import com.mongodb.connection.StreamFactory;
import com.mongodb.connection.StreamFactoryFactory; import com.mongodb.connection.StreamFactoryFactory;
import com.mongodb.reactivestreams.client.MongoClient; import com.mongodb.reactivestreams.client.MongoClient;
import org.junit.After;
import org.junit.Test; import org.junit.Test;
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.util.TestPropertyValues; import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
...@@ -42,83 +40,62 @@ import static org.mockito.Mockito.mock; ...@@ -42,83 +40,62 @@ import static org.mockito.Mockito.mock;
* Tests for {@link MongoReactiveAutoConfiguration}. * Tests for {@link MongoReactiveAutoConfiguration}.
* *
* @author Mark Paluch * @author Mark Paluch
* @author Stephane Nicoll
*/ */
public class MongoReactiveAutoConfigurationTests { public class MongoReactiveAutoConfigurationTests {
private AnnotationConfigApplicationContext context; private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(
@After MongoReactiveAutoConfiguration.class));
public void close() {
if (this.context != null) {
this.context.close();
}
}
@Test @Test
public void clientExists() { public void clientExists() {
this.context = new AnnotationConfigApplicationContext( this.contextRunner.run((context) ->
PropertyPlaceholderAutoConfiguration.class, assertThat(context).hasSingleBean(MongoClient.class));
MongoReactiveAutoConfiguration.class);
assertThat(this.context.getBeanNamesForType(MongoClient.class).length)
.isEqualTo(1);
} }
@Test @Test
public void optionsAdded() { public void optionsAdded() {
this.context = new AnnotationConfigApplicationContext(); this.contextRunner.withPropertyValues("spring.data.mongodb.host:localhost")
TestPropertyValues.of("spring.data.mongodb.host:localhost").applyTo(this.context); .withUserConfiguration(OptionsConfig.class).run((context) ->
this.context.register(OptionsConfig.class, assertThat(context.getBean(MongoClient.class).getSettings()
PropertyPlaceholderAutoConfiguration.class, .getSocketSettings().getReadTimeout(TimeUnit.SECONDS))
MongoReactiveAutoConfiguration.class); .isEqualTo(300));
this.context.refresh();
assertThat(this.context.getBean(MongoClient.class).getSettings()
.getSocketSettings().getReadTimeout(TimeUnit.SECONDS)).isEqualTo(300);
} }
@Test @Test
public void optionsAddedButNoHost() { public void optionsAddedButNoHost() {
this.context = new AnnotationConfigApplicationContext(); this.contextRunner
TestPropertyValues.of("spring.data.mongodb.uri:mongodb://localhost/test") .withPropertyValues("spring.data.mongodb.uri:mongodb://localhost/test")
.applyTo(this.context); .withUserConfiguration(OptionsConfig.class).run((context) ->
this.context.register(OptionsConfig.class, assertThat(context.getBean(MongoClient.class).getSettings()
PropertyPlaceholderAutoConfiguration.class, .getReadPreference()).isEqualTo(ReadPreference.nearest()));
MongoReactiveAutoConfiguration.class);
this.context.refresh();
assertThat(
this.context.getBean(MongoClient.class).getSettings().getReadPreference())
.isEqualTo(ReadPreference.nearest());
} }
@Test @Test
public void optionsSslConfig() { public void optionsSslConfig() {
this.context = new AnnotationConfigApplicationContext(); this.contextRunner
TestPropertyValues.of("spring.data.mongodb.uri:mongodb://localhost/test") .withPropertyValues("spring.data.mongodb.uri:mongodb://localhost/test")
.applyTo(this.context); .withUserConfiguration(SslOptionsConfig.class).run((context) -> {
this.context.register(SslOptionsConfig.class, assertThat(context).hasSingleBean(MongoClient.class);
PropertyPlaceholderAutoConfiguration.class, MongoClient mongo = context.getBean(MongoClient.class);
MongoReactiveAutoConfiguration.class); MongoClientSettings settings = mongo.getSettings();
this.context.refresh(); assertThat(settings.getApplicationName()).isEqualTo("test-config");
MongoClient mongo = this.context.getBean(MongoClient.class); assertThat(settings.getStreamFactoryFactory())
MongoClientSettings settings = mongo.getSettings(); .isSameAs(context.getBean("myStreamFactoryFactory"));
assertThat(settings.getApplicationName()).isEqualTo("test-config"); });
assertThat(settings.getStreamFactoryFactory())
.isSameAs(this.context.getBean("myStreamFactoryFactory"));
} }
@Test @Test
public void customizerOverridesAutoConfig() { public void customizerOverridesAutoConfig() {
this.context = new AnnotationConfigApplicationContext(); this.contextRunner
TestPropertyValues .withPropertyValues("spring.data.mongodb.uri:mongodb://localhost/test?appname=auto-config")
.of("spring.data.mongodb.uri:mongodb://localhost/test?appname=auto-config") .withUserConfiguration(SimpleCustomizerConfig.class).run((context) -> {
.applyTo(this.context); assertThat(context).hasSingleBean(MongoClient.class);
this.context.register(PropertyPlaceholderAutoConfiguration.class, MongoClient client = context.getBean(MongoClient.class);
MongoReactiveAutoConfiguration.class, SimpleCustomizerConfig.class); assertThat(client.getSettings().getApplicationName())
this.context.refresh(); .isEqualTo("overridden-name");
assertThat(this.context.getBeanNamesForType(MongoClient.class).length) });
.isEqualTo(1);
MongoClient client = this.context.getBean(MongoClient.class);
assertThat(client.getSettings().getApplicationName())
.isEqualTo("overridden-name");
} }
@Configuration @Configuration
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment