diff --git a/pom.xml b/pom.xml
index 366786fc6d..a872f8d0ac 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-mongodb-parent
- 4.2.0-SNAPSHOT
+ 4.2.x-GH-4446-SNAPSHOT
pom
Spring Data MongoDB
diff --git a/spring-data-mongodb-benchmarks/pom.xml b/spring-data-mongodb-benchmarks/pom.xml
index 2de4b6b635..d052213c58 100644
--- a/spring-data-mongodb-benchmarks/pom.xml
+++ b/spring-data-mongodb-benchmarks/pom.xml
@@ -7,7 +7,7 @@
org.springframework.data
spring-data-mongodb-parent
- 4.2.0-SNAPSHOT
+ 4.2.x-GH-4446-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml
index 060a6d0dd9..b818a36590 100644
--- a/spring-data-mongodb-distribution/pom.xml
+++ b/spring-data-mongodb-distribution/pom.xml
@@ -15,7 +15,7 @@
org.springframework.data
spring-data-mongodb-parent
- 4.2.0-SNAPSHOT
+ 4.2.x-GH-4446-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml
index dc07f13ccc..7632cf8266 100644
--- a/spring-data-mongodb/pom.xml
+++ b/spring-data-mongodb/pom.xml
@@ -13,7 +13,7 @@
org.springframework.data
spring-data-mongodb-parent
- 4.2.0-SNAPSHOT
+ 4.2.x-GH-4446-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java
index ea081dd8f7..8a3fac7797 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java
@@ -25,7 +25,6 @@
import java.net.URL;
import java.time.LocalDate;
import java.time.LocalDateTime;
-import java.time.ZoneOffset;
import java.time.temporal.ChronoUnit;
import java.util.*;
@@ -106,6 +105,7 @@
* @author Mark Paluch
* @author Roman Puchkovskiy
* @author Heesu Jung
+ * @author Julia Lee
*/
@ExtendWith(MockitoExtension.class)
class MappingMongoConverterUnitTests {
@@ -2619,7 +2619,7 @@ void readsMapThatDoesNotComeAsDocument() {
void projectShouldReadSimpleInterfaceProjection() {
org.bson.Document source = new org.bson.Document("birthDate",
- Date.from(LocalDate.of(1999, 12, 1).atStartOfDay().toInstant(ZoneOffset.UTC))).append("foo", "Walter");
+ Date.from(LocalDate.of(1999, 12, 1).atStartOfDay(systemDefault()).toInstant())).append("foo", "Walter");
EntityProjectionIntrospector discoverer = EntityProjectionIntrospector.create(converter.getProjectionFactory(),
EntityProjectionIntrospector.ProjectionPredicate.typeHierarchy()
@@ -2637,7 +2637,7 @@ void projectShouldReadSimpleInterfaceProjection() {
void projectShouldReadSimpleDtoProjection() {
org.bson.Document source = new org.bson.Document("birthDate",
- Date.from(LocalDate.of(1999, 12, 1).atStartOfDay().toInstant(ZoneOffset.UTC))).append("foo", "Walter");
+ Date.from(LocalDate.of(1999, 12, 1).atStartOfDay(systemDefault()).toInstant())).append("foo", "Walter");
EntityProjectionIntrospector introspector = EntityProjectionIntrospector.create(converter.getProjectionFactory(),
EntityProjectionIntrospector.ProjectionPredicate.typeHierarchy()
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/encryption/AbstractEncryptionTestBase.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/encryption/AbstractEncryptionTestBase.java
index 473fad3d3f..393a0d12f2 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/encryption/AbstractEncryptionTestBase.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/encryption/AbstractEncryptionTestBase.java
@@ -70,6 +70,7 @@
/**
* @author Christoph Strobl
+ * @author Julia Lee
*/
public abstract class AbstractEncryptionTestBase {
@@ -450,7 +451,8 @@ public MongoClient mongoClient() {
protected void configureConverters(MongoConverterConfigurationAdapter converterConfigurationAdapter) {
converterConfigurationAdapter
- .registerPropertyValueConverterFactory(PropertyValueConverterFactory.beanFactoryAware(applicationContext));
+ .registerPropertyValueConverterFactory(PropertyValueConverterFactory.beanFactoryAware(applicationContext))
+ .useNativeDriverJavaTimeCodecs();
}
@Bean
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/encryption/BypassAutoEncryptionTest.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/encryption/BypassAutoEncryptionTest.java
index 90e6a9ba36..6f44503495 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/encryption/BypassAutoEncryptionTest.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/encryption/BypassAutoEncryptionTest.java
@@ -16,20 +16,10 @@
package org.springframework.data.mongodb.core.encryption;
-import java.util.Collections;
-
-import org.bson.BsonBinary;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.data.convert.PropertyValueConverterFactory;
-import org.springframework.data.mongodb.core.convert.MongoCustomConversions.MongoConverterConfigurationAdapter;
-import org.springframework.data.mongodb.core.convert.encryption.MongoEncryptionConverter;
-import org.springframework.data.mongodb.core.encryption.BypassAutoEncryptionTest.Config;
-import org.springframework.data.util.Lazy;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -38,16 +28,15 @@
import com.mongodb.MongoClientSettings.Builder;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
-import com.mongodb.client.model.vault.DataKeyOptions;
-import com.mongodb.client.vault.ClientEncryptions;
/**
* Encryption tests for client having {@link AutoEncryptionSettings#isBypassAutoEncryption()}.
*
* @author Christoph Strobl
+ * @author Julia Lee
*/
@ExtendWith(SpringExtension.class)
-@ContextConfiguration(classes = Config.class)
+@ContextConfiguration
public class BypassAutoEncryptionTest extends AbstractEncryptionTestBase {
@Disabled
@@ -59,8 +48,6 @@ void altKeyDetection(@Autowired CachingMongoClientEncryption mongoClientEncrypti
@Configuration
static class Config extends EncryptionConfig {
- @Autowired ApplicationContext applicationContext;
-
@Override
protected void configureClientSettings(Builder builder) {
@@ -74,30 +61,6 @@ protected void configureClientSettings(Builder builder) {
.bypassAutoEncryption(true).build());
}
- @Override
- protected void configureConverters(MongoConverterConfigurationAdapter converterConfigurationAdapter) {
-
- converterConfigurationAdapter
- .registerPropertyValueConverterFactory(PropertyValueConverterFactory.beanFactoryAware(applicationContext));
- }
-
- @Bean
- @Override
- MongoEncryptionConverter encryptingConverter(MongoClientEncryption mongoClientEncryption) {
-
- Lazy dataKey = Lazy.of(() -> mongoClientEncryption.getClientEncryption().createDataKey("local",
- new DataKeyOptions().keyAltNames(Collections.singletonList("mySuperSecretKey"))));
-
- return new MongoEncryptionConverter(mongoClientEncryption,
- EncryptionKeyResolver.annotated((ctx) -> EncryptionKey.keyId(dataKey.get())));
- }
-
- @Bean
- @Override
- CachingMongoClientEncryption clientEncryption(ClientEncryptionSettings encryptionSettings) {
- return new CachingMongoClientEncryption(() -> ClientEncryptions.create(encryptionSettings));
- }
-
}
}
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/encryption/EncryptionTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/encryption/EncryptionTests.java
index 78a930c731..a36828cbce 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/encryption/EncryptionTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/encryption/EncryptionTests.java
@@ -15,108 +15,16 @@
*/
package org.springframework.data.mongodb.core.encryption;
-import java.security.SecureRandom;
-import java.util.Collections;
-import java.util.Map;
-
-import org.bson.BsonBinary;
-import org.bson.Document;
import org.junit.jupiter.api.extension.ExtendWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.data.convert.PropertyValueConverterFactory;
-import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
-import org.springframework.data.mongodb.core.convert.MongoCustomConversions.MongoConverterConfigurationAdapter;
-import org.springframework.data.mongodb.core.convert.encryption.MongoEncryptionConverter;
-import org.springframework.data.mongodb.core.encryption.EncryptionTests.Config;
-import org.springframework.data.util.Lazy;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
-import com.mongodb.ClientEncryptionSettings;
-import com.mongodb.ConnectionString;
-import com.mongodb.MongoClientSettings;
-import com.mongodb.MongoNamespace;
-import com.mongodb.client.MongoClient;
-import com.mongodb.client.MongoCollection;
-import com.mongodb.client.model.Filters;
-import com.mongodb.client.model.IndexOptions;
-import com.mongodb.client.model.Indexes;
-import com.mongodb.client.model.vault.DataKeyOptions;
-import com.mongodb.client.vault.ClientEncryptions;
-
/**
* @author Christoph Strobl
+ * @author Julia Lee
*/
@ExtendWith(SpringExtension.class)
-@ContextConfiguration(classes = Config.class)
+@ContextConfiguration(classes = AbstractEncryptionTestBase.EncryptionConfig.class)
public class EncryptionTests extends AbstractEncryptionTestBase {
- @Configuration
- static class Config extends AbstractMongoClientConfiguration {
-
- @Autowired ApplicationContext applicationContext;
-
- @Override
- protected String getDatabaseName() {
- return "fle-test";
- }
-
- @Bean
- @Override
- public MongoClient mongoClient() {
- return super.mongoClient();
- }
-
- @Override
- protected void configureConverters(MongoConverterConfigurationAdapter converterConfigurationAdapter) {
-
- converterConfigurationAdapter
- .registerPropertyValueConverterFactory(PropertyValueConverterFactory.beanFactoryAware(applicationContext));
- }
-
- @Bean
- MongoEncryptionConverter encryptingConverter(MongoClientEncryption mongoClientEncryption) {
-
- Lazy dataKey = Lazy.of(() -> mongoClientEncryption.getClientEncryption().createDataKey("local",
- new DataKeyOptions().keyAltNames(Collections.singletonList("mySuperSecretKey"))));
-
- return new MongoEncryptionConverter(mongoClientEncryption,
- EncryptionKeyResolver.annotated((ctx) -> EncryptionKey.keyId(dataKey.get())));
- }
-
- @Bean
- CachingMongoClientEncryption clientEncryption(ClientEncryptionSettings encryptionSettings) {
- return new CachingMongoClientEncryption(() -> ClientEncryptions.create(encryptionSettings));
- }
-
- @Bean
- ClientEncryptionSettings encryptionSettings(MongoClient mongoClient) {
-
- MongoNamespace keyVaultNamespace = new MongoNamespace("encryption.testKeyVault");
- MongoCollection keyVaultCollection = mongoClient.getDatabase(keyVaultNamespace.getDatabaseName())
- .getCollection(keyVaultNamespace.getCollectionName());
- keyVaultCollection.drop();
- // Ensure that two data keys cannot share the same keyAltName.
- keyVaultCollection.createIndex(Indexes.ascending("keyAltNames"),
- new IndexOptions().unique(true).partialFilterExpression(Filters.exists("keyAltNames")));
-
- MongoCollection collection = mongoClient.getDatabase(getDatabaseName()).getCollection("test");
- collection.drop(); // Clear old data
-
- byte[] localMasterKey = new byte[96];
- new SecureRandom().nextBytes(localMasterKey);
- Map> kmsProviders = Map.of("local", Map.of("key", localMasterKey));
-
- // Create the ClientEncryption instance
- return ClientEncryptionSettings.builder()
- .keyVaultMongoClientSettings(
- MongoClientSettings.builder().applyConnectionString(new ConnectionString("mongodb://localhost")).build()) //
- .keyVaultNamespace(keyVaultNamespace.getFullName()) //
- .kmsProviders(kmsProviders) //
- .build();
- }
- }
-}
+}
\ No newline at end of file