diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/MongoProperties.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/MongoProperties.java index 10a44297b9..0792fe5c62 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/MongoProperties.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/MongoProperties.java @@ -39,6 +39,7 @@ import org.springframework.core.env.Environment; * @author Josh Long * @author Andy Wilkinson * @author EddĂș MelĂ©ndez + * @author Stephane Nicoll */ @ConfigurationProperties(prefix = "spring.data.mongodb") public class MongoProperties { @@ -257,6 +258,7 @@ public class MongoProperties { builder.description(options.getDescription()); builder.maxWaitTime(options.getMaxWaitTime()); builder.readPreference(options.getReadPreference()); + builder.sslEnabled(options.isSslEnabled()); builder.socketFactory(options.getSocketFactory()); builder.socketKeepAlive(options.isSocketKeepAlive()); builder.socketTimeout(options.getSocketTimeout()); diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mongo/MongoAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mongo/MongoAutoConfigurationTests.java index a89d1d4481..ff613330b3 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mongo/MongoAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mongo/MongoAutoConfigurationTests.java @@ -16,7 +16,10 @@ package org.springframework.boot.autoconfigure.mongo; +import javax.net.SocketFactory; + import com.mongodb.Mongo; +import com.mongodb.MongoClient; import com.mongodb.MongoClientOptions; import org.junit.After; import org.junit.Test; @@ -28,11 +31,13 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; /** * Tests for {@link MongoAutoConfiguration}. * * @author Dave Syer + * @author Stephane Nicoll */ public class MongoAutoConfigurationTests { @@ -78,6 +83,20 @@ public class MongoAutoConfigurationTests { .isEqualTo(300); } + @Test + public void optionsSslConfig() { + this.context = new AnnotationConfigApplicationContext(); + EnvironmentTestUtils.addEnvironment(this.context, + "spring.data.mongodb.uri:mongodb://localhost/test"); + this.context.register(SslOptionsConfig.class, + PropertyPlaceholderAutoConfiguration.class, MongoAutoConfiguration.class); + this.context.refresh(); + MongoClient mongo = this.context.getBean(MongoClient.class); + MongoClientOptions options = mongo.getMongoClientOptions(); + assertThat(options.isSslEnabled()).isTrue(); + assertThat(options.getSocketFactory()).isSameAs(this.context.getBean("mySocketFactory")); + } + @Configuration protected static class OptionsConfig { @@ -88,4 +107,19 @@ public class MongoAutoConfigurationTests { } + @Configuration + protected static class SslOptionsConfig { + + @Bean + public MongoClientOptions mongoClientOptions() { + return MongoClientOptions.builder().sslEnabled(true).socketFactory(mySocketFactory()).build(); + } + + @Bean + public SocketFactory mySocketFactory() { + return mock(SocketFactory.class); + } + + } + }