You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2021/04/02 01:34:31 UTC
[james-project] 04/08: JAMES-3524 BlobStoreCacheModulesChooser
should enable encryption
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 6752870b46641405c5471ca1fc9bb8acd491c2f0
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Mar 26 14:12:10 2021 +0700
JAMES-3524 BlobStoreCacheModulesChooser should enable encryption
---
pom.xml | 5 ++
.../org/apache/james/blob/aes/CryptoConfig.java | 19 ++++
.../apache/james/blob/aes/CryptoConfigBuilder.java | 5 +-
.../james/CassandraRabbitMQAwsS3JmapTestRule.java | 3 +-
.../james/CassandraRabbitMQJamesServerFixture.java | 3 +-
.../apache/james/NamespaceConfigurationTest.java | 3 +-
.../org/apache/james/WithCacheImmutableTest.java | 3 +-
...ssandraDeduplicationBlobStoreImmutableTest.java | 3 +-
...CassandraDeduplicationBlobStoreMutableTest.java | 3 +-
...CassandraPassThroughBlobStoreImmutableTest.java | 3 +-
...thCassandraPassThroughBlobStoreMutableTest.java | 5 +-
...va => WithEncryptedBlobStoreImmutableTest.java} | 10 ++-
...java => WithEncryptedBlobStoreMutableTest.java} | 13 ++-
.../james/WithScanningSearchImmutableTest.java | 3 +-
...oreConfigurationValidationStartUpCheckTest.java | 8 +-
.../CassandraRabbitMQLdapJmapJamesServerTest.java | 6 +-
server/container/guice/distributed/pom.xml | 4 +
.../modules/blobstore/BlobStoreChoosingModule.java | 1 -
.../modules/blobstore/BlobStoreConfiguration.java | 71 ++++++++++++---
.../modules/blobstore/BlobStoreModulesChooser.java | 44 ++++++++-
.../BlobStoreCacheModulesChooserTest.java | 6 +-
.../blobstore/BlobStoreConfigurationTest.java | 100 ++++++++++++++++++++-
.../blobstore/BlobStoreModulesChooserTest.java | 41 +++++++--
...eStrategyValidationEventSourcingSystemTest.java | 24 +++--
.../rabbitmq/RabbitMQAwsS3SendMDNMethodTest.java | 3 +-
.../RabbitMQAwsS3SpamAssassinContractTest.java | 3 +-
.../cucumber/awss3/RabbitMQAwsS3Stepdefs.java | 3 +-
.../distributed/DistributedAuthenticationTest.java | 3 +-
.../distributed/DistributedDownloadTest.java | 3 +-
.../distributed/DistributedEchoMethodTest.java | 3 +-
.../DistributedEmailChangeMethodTest.java | 3 +-
.../distributed/DistributedEmailGetMethodTest.java | 3 +-
.../DistributedEmailQueryMethodNoViewTest.java | 3 +-
.../DistributedEmailQueryMethodTest.java | 3 +-
.../distributed/DistributedEmailSetMethodTest.java | 3 +-
.../DistributedEmailSubmissionSetMethodtest.java | 3 +-
.../distributed/DistributedIdentityGetTest.java | 3 +-
.../DistributedMailboxChangeMethodTest.java | 3 +-
.../DistributedMailboxGetMethodTest.java | 3 +-
.../DistributedMailboxQueryMethodTest.java | 3 +-
.../DistributedMailboxSetMethodTest.java | 3 +-
.../distributed/DistributedProvisioningTest.java | 3 +-
.../distributed/DistributedSessionRouteTest.java | 3 +-
.../rfc8621/distributed/DistributedUploadTest.java | 3 +-
.../DistributedVacationResponseGetMethodTest.java | 3 +-
.../DistributedVacationResponseSetMethodTest.java | 3 +-
.../distributed/DistributedWebSocketTest.java | 3 +-
.../jmap/rfc8621/distributed/ReadLevelTest.java | 3 +-
.../rabbitmq/ConsistencyTasksIntegrationTest.java | 3 +-
.../rabbitmq/FixingGhostMailboxTest.java | 3 +-
.../rabbitmq/RabbitMQAuthorizedEndpointsTest.java | 3 +-
.../RabbitMQEventDeadLettersIntegrationTest.java | 3 +-
...stViewProjectionHealthCheckIntegrationTest.java | 3 +-
.../rabbitmq/RabbitMQForwardIntegrationTest.java | 3 +-
.../rabbitmq/RabbitMQJwtFilterIntegrationTest.java | 3 +-
...RabbitMQReindexingWithEventDeadLettersTest.java | 3 +-
.../RabbitMQUnauthorizedEndpointsTest.java | 3 +-
...itMQWebAdminServerIntegrationImmutableTest.java | 3 +-
.../RabbitMQWebAdminServerIntegrationTest.java | 3 +-
...rTaskSerializationIntegrationImmutableTest.java | 3 +-
...dminServerTaskSerializationIntegrationTest.java | 3 +-
...RabbitMQDeletedMessageVaultIntegrationTest.java | 3 +-
...LinshareBlobExportMechanismIntegrationTest.java | 3 +-
63 files changed, 404 insertions(+), 99 deletions(-)
diff --git a/pom.xml b/pom.xml
index 8e1a0bc..e9be952 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1033,6 +1033,11 @@
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
+ <artifactId>blob-aes</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
<artifactId>blob-api</artifactId>
<version>${project.version}</version>
</dependency>
diff --git a/server/blob/blob-aes/src/main/java/org/apache/james/blob/aes/CryptoConfig.java b/server/blob/blob-aes/src/main/java/org/apache/james/blob/aes/CryptoConfig.java
index 0625535..1f0938b 100644
--- a/server/blob/blob-aes/src/main/java/org/apache/james/blob/aes/CryptoConfig.java
+++ b/server/blob/blob-aes/src/main/java/org/apache/james/blob/aes/CryptoConfig.java
@@ -19,6 +19,9 @@
package org.apache.james.blob.aes;
+import java.util.Arrays;
+import java.util.Objects;
+
import com.google.crypto.tink.subtle.Hex;
public class CryptoConfig {
@@ -42,4 +45,20 @@ public class CryptoConfig {
public char[] password() {
return password;
}
+
+ @Override
+ public final boolean equals(Object o) {
+ if (o instanceof CryptoConfig) {
+ CryptoConfig that = (CryptoConfig) o;
+
+ return Objects.equals(this.salt, that.salt)
+ && Arrays.equals(this.password, that.password);
+ }
+ return false;
+ }
+
+ @Override
+ public final int hashCode() {
+ return Objects.hash(salt, password);
+ }
}
\ No newline at end of file
diff --git a/server/blob/blob-aes/src/main/java/org/apache/james/blob/aes/CryptoConfigBuilder.java b/server/blob/blob-aes/src/main/java/org/apache/james/blob/aes/CryptoConfigBuilder.java
index f3c9916..7ab8664 100644
--- a/server/blob/blob-aes/src/main/java/org/apache/james/blob/aes/CryptoConfigBuilder.java
+++ b/server/blob/blob-aes/src/main/java/org/apache/james/blob/aes/CryptoConfigBuilder.java
@@ -41,8 +41,9 @@ public class CryptoConfigBuilder {
}
public CryptoConfig build() {
- Preconditions.checkState(!Strings.isNullOrEmpty(salt));
- Preconditions.checkState(password != null && password.length > 0);
+ Preconditions.checkState(!Strings.isNullOrEmpty(salt), "'salt' is mandatory and must not be empty");
+ Preconditions.checkState(password != null && password.length > 0, "'password' is mandatory and must not be empty");
+
return new CryptoConfig(Hex.encode(Hex.decode(salt)), password);
}
}
\ No newline at end of file
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQAwsS3JmapTestRule.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQAwsS3JmapTestRule.java
index c553a01..0e0b844 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQAwsS3JmapTestRule.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQAwsS3JmapTestRule.java
@@ -64,7 +64,8 @@ public class CassandraRabbitMQAwsS3JmapTestRule implements TestRule {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build();
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerFixture.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerFixture.java
index 1219646..2ac2825 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerFixture.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerFixture.java
@@ -36,7 +36,8 @@ public class CassandraRabbitMQJamesServerFixture {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/NamespaceConfigurationTest.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/NamespaceConfigurationTest.java
index bd933b8..4398fcb 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/NamespaceConfigurationTest.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/NamespaceConfigurationTest.java
@@ -57,7 +57,8 @@ class NamespaceConfigurationTest {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCacheImmutableTest.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCacheImmutableTest.java
index 194367c..eebc25f 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCacheImmutableTest.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCacheImmutableTest.java
@@ -41,7 +41,8 @@ class WithCacheImmutableTest implements JmapJamesServerContract, JamesServerCont
.blobStore(BlobStoreConfiguration.builder()
.s3()
.enableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraDeduplicationBlobStoreImmutableTest.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraDeduplicationBlobStoreImmutableTest.java
index f18bfcf..9f845f0 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraDeduplicationBlobStoreImmutableTest.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraDeduplicationBlobStoreImmutableTest.java
@@ -32,7 +32,8 @@ public class WithCassandraDeduplicationBlobStoreImmutableTest implements JmapJam
.workingDirectory(tmpDir)
.configurationFromClasspath()
.blobStore(BlobStoreConfiguration.cassandra()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.server(configuration -> CassandraRabbitMQJamesServerMain.createServer(configuration)
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraDeduplicationBlobStoreMutableTest.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraDeduplicationBlobStoreMutableTest.java
index 655795e..5846eb1 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraDeduplicationBlobStoreMutableTest.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraDeduplicationBlobStoreMutableTest.java
@@ -60,7 +60,8 @@ public class WithCassandraDeduplicationBlobStoreMutableTest implements MailsShou
.workingDirectory(tmpDir)
.configurationFromClasspath()
.blobStore(BlobStoreConfiguration.cassandra()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.server(configuration -> CassandraRabbitMQJamesServerMain.createServer(configuration)
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraPassThroughBlobStoreImmutableTest.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraPassThroughBlobStoreImmutableTest.java
index a4b40b7..cc81e6a 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraPassThroughBlobStoreImmutableTest.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraPassThroughBlobStoreImmutableTest.java
@@ -32,7 +32,8 @@ public class WithCassandraPassThroughBlobStoreImmutableTest implements JmapJames
.workingDirectory(tmpDir)
.configurationFromClasspath()
.blobStore(BlobStoreConfiguration.cassandra()
- .passthrough())
+ .passthrough()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.server(configuration -> CassandraRabbitMQJamesServerMain.createServer(configuration)
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraPassThroughBlobStoreMutableTest.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraPassThroughBlobStoreMutableTest.java
index 1dd7ce0..1a3ba04 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraPassThroughBlobStoreMutableTest.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraPassThroughBlobStoreMutableTest.java
@@ -29,7 +29,6 @@ import org.apache.james.backends.cassandra.init.configuration.CassandraConsisten
import org.apache.james.backends.cassandra.init.configuration.ClusterConfiguration;
import org.apache.james.blob.cassandra.BlobTables;
import org.apache.james.core.Domain;
-import org.apache.james.jmap.draft.JmapJamesServerContract;
import org.apache.james.mailbox.DefaultMailboxes;
import org.apache.james.modules.MailboxProbeImpl;
import org.apache.james.modules.RabbitMQExtension;
@@ -44,7 +43,6 @@ import org.apache.james.utils.SMTPMessageSender;
import org.apache.james.utils.SpoolerProbe;
import org.apache.james.utils.TestIMAPClient;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.extension.RegisterExtension;
import com.datastax.driver.core.Cluster;
@@ -62,7 +60,8 @@ public class WithCassandraPassThroughBlobStoreMutableTest implements MailsShould
.workingDirectory(tmpDir)
.configurationFromClasspath()
.blobStore(BlobStoreConfiguration.cassandra()
- .passthrough())
+ .passthrough()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.server(configuration -> CassandraRabbitMQJamesServerMain.createServer(configuration)
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraDeduplicationBlobStoreImmutableTest.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithEncryptedBlobStoreImmutableTest.java
similarity index 83%
copy from server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraDeduplicationBlobStoreImmutableTest.java
copy to server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithEncryptedBlobStoreImmutableTest.java
index f18bfcf..3caf921 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraDeduplicationBlobStoreImmutableTest.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithEncryptedBlobStoreImmutableTest.java
@@ -19,20 +19,26 @@
package org.apache.james;
+import org.apache.james.blob.aes.CryptoConfig;
import org.apache.james.jmap.draft.JmapJamesServerContract;
import org.apache.james.modules.RabbitMQExtension;
import org.apache.james.modules.TestJMAPServerModule;
import org.apache.james.modules.blobstore.BlobStoreConfiguration;
import org.junit.jupiter.api.extension.RegisterExtension;
-public class WithCassandraDeduplicationBlobStoreImmutableTest implements JmapJamesServerContract, JamesServerContract {
+public class WithEncryptedBlobStoreImmutableTest implements JmapJamesServerContract, JamesServerContract {
@RegisterExtension
static JamesServerExtension jamesServerExtension = new JamesServerBuilder<CassandraRabbitMQJamesConfiguration>(tmpDir ->
CassandraRabbitMQJamesConfiguration.builder()
.workingDirectory(tmpDir)
.configurationFromClasspath()
.blobStore(BlobStoreConfiguration.cassandra()
- .deduplication())
+ .deduplication()
+ .cryptoConfig(CryptoConfig.builder()
+ .password("myPass".toCharArray())
+ // Hex.encode("salty".getBytes(StandardCharsets.UTF_8))
+ .salt("73616c7479")
+ .build()))
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.server(configuration -> CassandraRabbitMQJamesServerMain.createServer(configuration)
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraDeduplicationBlobStoreImmutableTest.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithEncryptedBlobStoreMutableTest.java
similarity index 82%
copy from server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraDeduplicationBlobStoreImmutableTest.java
copy to server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithEncryptedBlobStoreMutableTest.java
index f18bfcf..da8e056 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithCassandraDeduplicationBlobStoreImmutableTest.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithEncryptedBlobStoreMutableTest.java
@@ -19,20 +19,25 @@
package org.apache.james;
-import org.apache.james.jmap.draft.JmapJamesServerContract;
+import org.apache.james.blob.aes.CryptoConfig;
import org.apache.james.modules.RabbitMQExtension;
import org.apache.james.modules.TestJMAPServerModule;
import org.apache.james.modules.blobstore.BlobStoreConfiguration;
import org.junit.jupiter.api.extension.RegisterExtension;
-public class WithCassandraDeduplicationBlobStoreImmutableTest implements JmapJamesServerContract, JamesServerContract {
+public class WithEncryptedBlobStoreMutableTest implements MailsShouldBeWellReceived {
@RegisterExtension
static JamesServerExtension jamesServerExtension = new JamesServerBuilder<CassandraRabbitMQJamesConfiguration>(tmpDir ->
CassandraRabbitMQJamesConfiguration.builder()
.workingDirectory(tmpDir)
.configurationFromClasspath()
.blobStore(BlobStoreConfiguration.cassandra()
- .deduplication())
+ .deduplication()
+ .cryptoConfig(CryptoConfig.builder()
+ .password("myPass".toCharArray())
+ // Hex.encode("salty".getBytes(StandardCharsets.UTF_8))
+ .salt("73616c7479")
+ .build()))
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.server(configuration -> CassandraRabbitMQJamesServerMain.createServer(configuration)
@@ -40,6 +45,6 @@ public class WithCassandraDeduplicationBlobStoreImmutableTest implements JmapJam
.extension(new DockerElasticSearchExtension())
.extension(new CassandraExtension())
.extension(new RabbitMQExtension())
- .lifeCycle(JamesServerExtension.Lifecycle.PER_CLASS)
+ .lifeCycle(JamesServerExtension.Lifecycle.PER_TEST)
.build();
}
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithScanningSearchImmutableTest.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithScanningSearchImmutableTest.java
index cddaa97..7c973e4 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithScanningSearchImmutableTest.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/WithScanningSearchImmutableTest.java
@@ -35,7 +35,8 @@ class WithScanningSearchImmutableTest implements JmapJamesServerContract, JamesS
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.scanning())
.build())
.server(configuration -> CassandraRabbitMQJamesServerMain.createServer(configuration)
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/blobstore/BlobStoreConfigurationValidationStartUpCheckTest.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/blobstore/BlobStoreConfigurationValidationStartUpCheckTest.java
index 81de1a4..287594b 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/blobstore/BlobStoreConfigurationValidationStartUpCheckTest.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/blobstore/BlobStoreConfigurationValidationStartUpCheckTest.java
@@ -29,7 +29,6 @@ import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
import org.apache.james.eventsourcing.Event;
import org.apache.james.eventsourcing.eventstore.EventStore;
-import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStore;
import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreExtension;
import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreModule;
import org.apache.james.eventsourcing.eventstore.cassandra.JsonEventSerializer;
@@ -38,7 +37,6 @@ import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule;
import org.apache.james.lifecycle.api.StartUpCheck;
import org.apache.james.modules.blobstore.validation.EventsourcingStorageStrategy;
import org.apache.james.modules.blobstore.validation.StorageStrategyModule;
-import org.apache.james.server.blob.deduplication.StorageStrategy;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
@@ -66,12 +64,14 @@ class BlobStoreConfigurationValidationStartUpCheckTest {
.builder()
.cassandra()
.disableCache()
- .deduplication();
+ .deduplication()
+ .noCryptoConfig();
private static BlobStoreConfiguration PASSTHROUGH_STRATEGY = BlobStoreConfiguration
.builder()
.cassandra()
.disableCache()
- .passthrough();
+ .passthrough()
+ .noCryptoConfig();
private EventsourcingStorageStrategy eventsourcingStorageStrategy;
diff --git a/server/container/guice/cassandra-rabbitmq-ldap-guice/src/test/java/org/apache/james/CassandraRabbitMQLdapJmapJamesServerTest.java b/server/container/guice/cassandra-rabbitmq-ldap-guice/src/test/java/org/apache/james/CassandraRabbitMQLdapJmapJamesServerTest.java
index 0f2aec0..4161a2f 100644
--- a/server/container/guice/cassandra-rabbitmq-ldap-guice/src/test/java/org/apache/james/CassandraRabbitMQLdapJmapJamesServerTest.java
+++ b/server/container/guice/cassandra-rabbitmq-ldap-guice/src/test/java/org/apache/james/CassandraRabbitMQLdapJmapJamesServerTest.java
@@ -59,7 +59,8 @@ class CassandraRabbitMQLdapJmapJamesServerTest {
@RegisterExtension
JamesServerExtension testExtension = baseJamesServerExtensionBuilder(BlobStoreConfiguration.s3()
.disableCache()
- .passthrough())
+ .passthrough()
+ .noCryptoConfig())
.extension(new AwsS3BlobStoreExtension())
.lifeCycle(JamesServerExtension.Lifecycle.PER_CLASS)
.build();
@@ -72,7 +73,8 @@ class CassandraRabbitMQLdapJmapJamesServerTest {
JamesServerExtension testExtension = baseJamesServerExtensionBuilder(BlobStoreConfiguration.builder()
.cassandra()
.disableCache()
- .passthrough())
+ .passthrough()
+ .noCryptoConfig())
.lifeCycle(JamesServerExtension.Lifecycle.PER_CLASS)
.build();
}
diff --git a/server/container/guice/distributed/pom.xml b/server/container/guice/distributed/pom.xml
index 74d47fa..51e3b1d 100644
--- a/server/container/guice/distributed/pom.xml
+++ b/server/container/guice/distributed/pom.xml
@@ -49,6 +49,10 @@
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
+ <artifactId>blob-aes</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
<artifactId>blob-s3-guice</artifactId>
</dependency>
<dependency>
diff --git a/server/container/guice/distributed/src/main/java/org/apache/james/modules/blobstore/BlobStoreChoosingModule.java b/server/container/guice/distributed/src/main/java/org/apache/james/modules/blobstore/BlobStoreChoosingModule.java
index 27c3231..61d2ef9 100644
--- a/server/container/guice/distributed/src/main/java/org/apache/james/modules/blobstore/BlobStoreChoosingModule.java
+++ b/server/container/guice/distributed/src/main/java/org/apache/james/modules/blobstore/BlobStoreChoosingModule.java
@@ -28,7 +28,6 @@ import com.google.inject.multibindings.Multibinder;
public class BlobStoreChoosingModule extends AbstractModule {
@Override
protected void configure() {
-
Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class);
cassandraDataDefinitions.addBinding().toInstance(CassandraBlobModule.MODULE);
}
diff --git a/server/container/guice/distributed/src/main/java/org/apache/james/modules/blobstore/BlobStoreConfiguration.java b/server/container/guice/distributed/src/main/java/org/apache/james/modules/blobstore/BlobStoreConfiguration.java
index 215c4f9..ba9a383 100644
--- a/server/container/guice/distributed/src/main/java/org/apache/james/modules/blobstore/BlobStoreConfiguration.java
+++ b/server/container/guice/distributed/src/main/java/org/apache/james/modules/blobstore/BlobStoreConfiguration.java
@@ -28,6 +28,7 @@ import java.util.stream.Stream;
import org.apache.commons.configuration2.Configuration;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.commons.lang3.StringUtils;
+import org.apache.james.blob.aes.CryptoConfig;
import org.apache.james.modules.mailbox.ConfigurationComponent;
import org.apache.james.server.blob.deduplication.StorageStrategy;
import org.apache.james.server.core.filesystem.FileSystemImpl;
@@ -71,19 +72,33 @@ public class BlobStoreConfiguration {
@FunctionalInterface
public interface RequireStoringStrategy {
- BlobStoreConfiguration strategy(StorageStrategy storageStrategy);
+ RequireCryptoConfig strategy(StorageStrategy storageStrategy);
- default BlobStoreConfiguration passthrough() {
+ default RequireCryptoConfig passthrough() {
return strategy(StorageStrategy.PASSTHROUGH);
}
- default BlobStoreConfiguration deduplication() {
+ default RequireCryptoConfig deduplication() {
return strategy(StorageStrategy.DEDUPLICATION);
}
}
+ @FunctionalInterface
+ public interface RequireCryptoConfig {
+ BlobStoreConfiguration cryptoConfig(Optional<CryptoConfig> cryptoConfig);
+
+ default BlobStoreConfiguration noCryptoConfig() {
+ return cryptoConfig(Optional.empty());
+ }
+
+ default BlobStoreConfiguration cryptoConfig(CryptoConfig cryptoConfig) {
+ return cryptoConfig(Optional.of(cryptoConfig));
+ }
+ }
+
public static RequireImplementation builder() {
- return implementation -> enableCache -> storageStrategy -> new BlobStoreConfiguration(implementation, enableCache, storageStrategy);
+ return implementation -> enableCache -> storageStrategy -> cryptoConfig ->
+ new BlobStoreConfiguration(implementation, enableCache, storageStrategy, cryptoConfig);
}
public enum BlobStoreImplName {
@@ -117,6 +132,9 @@ public class BlobStoreConfiguration {
static final String BLOBSTORE_IMPLEMENTATION_PROPERTY = "implementation";
static final String CACHE_ENABLE_PROPERTY = "cache.enable";
+ static final String ENCRYPTION_ENABLE_PROPERTY = "encryption.aes.enable";
+ static final String ENCRYPTION_PASSWORD_PROPERTY = "encryption.aes.password";
+ static final String ENCRYPTION_SALT_PROPERTY = "encryption.aes.salt";
static final boolean CACHE_ENABLED = true;
static final String DEDUPLICATION_ENABLE_PROPERTY = "deduplication.enable";
@@ -134,9 +152,10 @@ public class BlobStoreConfiguration {
} catch (FileNotFoundException e) {
LOGGER.warn("Could not find " + ConfigurationComponent.NAME + " configuration file, using cassandra blobstore as the default");
return BlobStoreConfiguration.builder()
- .cassandra()
- .disableCache()
- .passthrough();
+ .cassandra()
+ .disableCache()
+ .passthrough()
+ .noCryptoConfig();
}
}
@@ -155,12 +174,32 @@ public class BlobStoreConfiguration {
"Warning: Once this feature is enabled, there is no turning back as turning it off will lead to the deletion of all\n" +
"the mails sharing the same content once one is deleted.\n" +
"Upgrade note: If you are upgrading from James 3.5 or older, the deduplication was enabled."));
+ Optional<CryptoConfig> cryptoConfig = parseCryptoConfig(configuration);
if (deduplicationEnabled) {
- return new BlobStoreConfiguration(blobStoreImplName, cacheEnabled, StorageStrategy.DEDUPLICATION);
+ return builder()
+ .implementation(blobStoreImplName)
+ .enableCache(cacheEnabled)
+ .deduplication()
+ .cryptoConfig(cryptoConfig);
} else {
- return new BlobStoreConfiguration(blobStoreImplName, cacheEnabled, StorageStrategy.PASSTHROUGH);
+ return builder()
+ .implementation(blobStoreImplName)
+ .enableCache(cacheEnabled)
+ .passthrough()
+ .cryptoConfig(cryptoConfig);
+ }
+ }
+
+ private static Optional<CryptoConfig> parseCryptoConfig(Configuration configuration) {
+ final boolean enabled = configuration.getBoolean(ENCRYPTION_ENABLE_PROPERTY, false);
+ if (enabled) {
+ return Optional.of(CryptoConfig.builder()
+ .password(Optional.ofNullable(configuration.getString(ENCRYPTION_PASSWORD_PROPERTY, null)).map(String::toCharArray).orElse(null))
+ .salt(configuration.getString(ENCRYPTION_SALT_PROPERTY, null))
+ .build());
}
+ return Optional.empty();
}
@VisibleForTesting
@@ -177,11 +216,13 @@ public class BlobStoreConfiguration {
private final BlobStoreImplName implementation;
private final boolean cacheEnabled;
private final StorageStrategy storageStrategy;
+ private final Optional<CryptoConfig> cryptoConfig;
- BlobStoreConfiguration(BlobStoreImplName implementation, boolean cacheEnabled, StorageStrategy storageStrategy) {
+ BlobStoreConfiguration(BlobStoreImplName implementation, boolean cacheEnabled, StorageStrategy storageStrategy, Optional<CryptoConfig> cryptoConfig) {
this.implementation = implementation;
this.cacheEnabled = cacheEnabled;
this.storageStrategy = storageStrategy;
+ this.cryptoConfig = cryptoConfig;
}
public boolean cacheEnabled() {
@@ -196,6 +237,10 @@ public class BlobStoreConfiguration {
return implementation;
}
+ public Optional<CryptoConfig> getCryptoConfig() {
+ return cryptoConfig;
+ }
+
@Override
public final boolean equals(Object o) {
if (o instanceof BlobStoreConfiguration) {
@@ -203,14 +248,15 @@ public class BlobStoreConfiguration {
return Objects.equals(this.implementation, that.implementation)
&& Objects.equals(this.cacheEnabled, that.cacheEnabled)
- && Objects.equals(this.storageStrategy, that.storageStrategy);
+ && Objects.equals(this.storageStrategy, that.storageStrategy)
+ && Objects.equals(this.cryptoConfig, that.cryptoConfig);
}
return false;
}
@Override
public final int hashCode() {
- return Objects.hash(implementation, cacheEnabled, storageStrategy);
+ return Objects.hash(implementation, cacheEnabled, storageStrategy, cryptoConfig);
}
@Override
@@ -219,6 +265,7 @@ public class BlobStoreConfiguration {
.add("implementation", implementation)
.add("cacheEnabled", cacheEnabled)
.add("storageStrategy", storageStrategy.name())
+ .add("cryptoConfig", cryptoConfig)
.toString();
}
}
diff --git a/server/container/guice/distributed/src/main/java/org/apache/james/modules/blobstore/BlobStoreModulesChooser.java b/server/container/guice/distributed/src/main/java/org/apache/james/modules/blobstore/BlobStoreModulesChooser.java
index dfa2292..7e4680f 100644
--- a/server/container/guice/distributed/src/main/java/org/apache/james/modules/blobstore/BlobStoreModulesChooser.java
+++ b/server/container/guice/distributed/src/main/java/org/apache/james/modules/blobstore/BlobStoreModulesChooser.java
@@ -20,7 +20,10 @@
package org.apache.james.modules.blobstore;
import java.util.List;
+import java.util.Optional;
+import org.apache.james.blob.aes.AESBlobStoreDAO;
+import org.apache.james.blob.aes.CryptoConfig;
import org.apache.james.blob.api.BlobStore;
import org.apache.james.blob.api.BlobStoreDAO;
import org.apache.james.blob.cassandra.CassandraBlobStoreDAO;
@@ -44,19 +47,23 @@ import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
import com.google.inject.AbstractModule;
import com.google.inject.Module;
+import com.google.inject.Provides;
import com.google.inject.Scopes;
import com.google.inject.TypeLiteral;
import com.google.inject.multibindings.Multibinder;
+import com.google.inject.name.Named;
import com.google.inject.name.Names;
public class BlobStoreModulesChooser {
+ private static final String UNENCRYPTED = "unencrypted";
+
static class CassandraBlobStoreDAODeclarationModule extends AbstractModule {
@Override
protected void configure() {
install(new CassandraBlobStoreDependenciesModule());
install(new CassandraBucketModule());
- bind(BlobStoreDAO.class).to(CassandraBlobStoreDAO.class);
+ bind(BlobStoreDAO.class).annotatedWith(Names.named(UNENCRYPTED)).to(CassandraBlobStoreDAO.class);
}
}
@@ -66,12 +73,37 @@ public class BlobStoreModulesChooser {
install(new S3BlobStoreModule());
install(new DefaultBucketModule());
- bind(BlobStoreDAO.class).to(S3BlobStoreDAO.class);
+ bind(BlobStoreDAO.class).annotatedWith(Names.named(UNENCRYPTED)).to(S3BlobStoreDAO.class);
+ }
+ }
+
+ static class NoEncryptionModule extends AbstractModule {
+ @Provides
+ BlobStoreDAO blobStoreDAO(@Named(UNENCRYPTED) BlobStoreDAO unencrypted) {
+ return unencrypted;
+ }
+ }
+
+ static class EncryptionModule extends AbstractModule {
+ private final CryptoConfig cryptoConfig;
+
+ EncryptionModule(CryptoConfig cryptoConfig) {
+ this.cryptoConfig = cryptoConfig;
+ }
+
+ @Provides
+ BlobStoreDAO blobStoreDAO(@Named(UNENCRYPTED) BlobStoreDAO unencrypted) {
+ return new AESBlobStoreDAO(unencrypted, cryptoConfig);
+ }
+
+ @Provides
+ CryptoConfig cryptoConfig() {
+ return cryptoConfig;
}
}
static class StoragePolicyConfigurationSanityEnforcementModule extends AbstractModule {
- private BlobStoreConfiguration choosingConfiguration;
+ private final BlobStoreConfiguration choosingConfiguration;
StoragePolicyConfigurationSanityEnforcementModule(BlobStoreConfiguration choosingConfiguration) {
this.choosingConfiguration = choosingConfiguration;
@@ -94,6 +126,7 @@ public class BlobStoreModulesChooser {
@VisibleForTesting
public static List<Module> chooseModules(BlobStoreConfiguration choosingConfiguration) {
return ImmutableList.<Module>builder()
+ .add(chooseEncryptionModule(choosingConfiguration.getCryptoConfig()))
.add(chooseBlobStoreDAOModule(choosingConfiguration.getImplementation()))
.add(chooseStoragePolicyModule(choosingConfiguration.storageStrategy()))
.add(new StoragePolicyConfigurationSanityEnforcementModule(choosingConfiguration))
@@ -111,6 +144,11 @@ public class BlobStoreModulesChooser {
}
}
+ public static Module chooseEncryptionModule(Optional<CryptoConfig> cryptoConfig) {
+ Optional<Module> encryptionModule = cryptoConfig.map(EncryptionModule::new);
+ return encryptionModule.orElse(new NoEncryptionModule());
+ }
+
private static Module chooseStoragePolicyModule(StorageStrategy storageStrategy) {
switch (storageStrategy) {
case DEDUPLICATION:
diff --git a/server/container/guice/distributed/src/test/java/org/apache/james/modules/blobstore/BlobStoreCacheModulesChooserTest.java b/server/container/guice/distributed/src/test/java/org/apache/james/modules/blobstore/BlobStoreCacheModulesChooserTest.java
index 2452d41..6486a0e 100644
--- a/server/container/guice/distributed/src/test/java/org/apache/james/modules/blobstore/BlobStoreCacheModulesChooserTest.java
+++ b/server/container/guice/distributed/src/test/java/org/apache/james/modules/blobstore/BlobStoreCacheModulesChooserTest.java
@@ -30,7 +30,8 @@ class BlobStoreCacheModulesChooserTest {
assertThat(BlobStoreCacheModulesChooser.chooseModules(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication()))
+ .deduplication()
+ .noCryptoConfig()))
.hasSize(1)
.first()
.isInstanceOf(BlobStoreCacheModulesChooser.CacheDisabledModule.class);
@@ -41,7 +42,8 @@ class BlobStoreCacheModulesChooserTest {
assertThat(BlobStoreCacheModulesChooser.chooseModules(BlobStoreConfiguration.builder()
.s3()
.enableCache()
- .deduplication()))
+ .deduplication()
+ .noCryptoConfig()))
.hasSize(2)
.allSatisfy(module ->
assertThat(module).isOfAnyClassIn(
diff --git a/server/container/guice/distributed/src/test/java/org/apache/james/modules/blobstore/BlobStoreConfigurationTest.java b/server/container/guice/distributed/src/test/java/org/apache/james/modules/blobstore/BlobStoreConfigurationTest.java
index 2625a3c..a0c7ef9 100644
--- a/server/container/guice/distributed/src/test/java/org/apache/james/modules/blobstore/BlobStoreConfigurationTest.java
+++ b/server/container/guice/distributed/src/test/java/org/apache/james/modules/blobstore/BlobStoreConfigurationTest.java
@@ -25,6 +25,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.james.FakePropertiesProvider;
+import org.apache.james.blob.aes.CryptoConfig;
import org.apache.james.modules.mailbox.ConfigurationComponent;
import org.apache.james.server.blob.deduplication.StorageStrategy;
import org.junit.jupiter.api.Test;
@@ -67,6 +68,96 @@ class BlobStoreConfigurationTest {
}
@Test
+ void encryptionShouldRequirePassword() {
+ PropertiesConfiguration configuration = new PropertiesConfiguration();
+ configuration.addProperty("implementation", "s3");
+ configuration.addProperty("deduplication.enable", false);
+ configuration.addProperty("encryption.aes.enable", true);
+ // Hex.encode("salty".getBytes(StandardCharsets.UTF_8))
+ configuration.addProperty("encryption.aes.salt", "73616c7479");
+ FakePropertiesProvider propertyProvider = FakePropertiesProvider.builder()
+ .register(ConfigurationComponent.NAME, configuration)
+ .build();
+
+ assertThatThrownBy(() -> parse(propertyProvider))
+ .isInstanceOf(IllegalStateException.class);
+ }
+
+ @Test
+ void encryptionShouldRequireSalt() {
+ PropertiesConfiguration configuration = new PropertiesConfiguration();
+ configuration.addProperty("implementation", "cassandra");
+ configuration.addProperty("deduplication.enable", false);
+ configuration.addProperty("encryption.aes.enable", true);
+ configuration.addProperty("encryption.aes.password", "salty");
+ FakePropertiesProvider propertyProvider = FakePropertiesProvider.builder()
+ .register(ConfigurationComponent.NAME, configuration)
+ .build();
+
+ assertThatThrownBy(() -> parse(propertyProvider))
+ .isInstanceOf(IllegalStateException.class);
+ }
+
+ @Test
+ void encryptionShouldBeDisabledByDefault() throws Exception {
+ PropertiesConfiguration configuration = new PropertiesConfiguration();
+ configuration.addProperty("implementation", "cassandra");
+ configuration.addProperty("deduplication.enable", false);
+ FakePropertiesProvider propertyProvider = FakePropertiesProvider.builder()
+ .register(ConfigurationComponent.NAME, configuration)
+ .build();
+
+ assertThat(parse(propertyProvider))
+ .isEqualTo(BlobStoreConfiguration.builder()
+ .cassandra()
+ .disableCache()
+ .passthrough()
+ .noCryptoConfig());
+ }
+
+ @Test
+ void encryptionShouldBeDisableable() throws Exception {
+ PropertiesConfiguration configuration = new PropertiesConfiguration();
+ configuration.addProperty("implementation", "cassandra");
+ configuration.addProperty("deduplication.enable", false);
+ configuration.addProperty("encryption.aes.enable", false);
+ FakePropertiesProvider propertyProvider = FakePropertiesProvider.builder()
+ .register(ConfigurationComponent.NAME, configuration)
+ .build();
+
+ assertThat(parse(propertyProvider))
+ .isEqualTo(BlobStoreConfiguration.builder()
+ .cassandra()
+ .disableCache()
+ .passthrough()
+ .noCryptoConfig());
+ }
+
+ @Test
+ void encryptionCanBeActivated() throws Exception {
+ PropertiesConfiguration configuration = new PropertiesConfiguration();
+ configuration.addProperty("implementation", "cassandra");
+ configuration.addProperty("deduplication.enable", false);
+ configuration.addProperty("encryption.aes.enable", true);
+ configuration.addProperty("encryption.aes.password", "myPass");
+ // Hex.encode("salty".getBytes(StandardCharsets.UTF_8))
+ configuration.addProperty("encryption.aes.salt", "73616c7479");
+ FakePropertiesProvider propertyProvider = FakePropertiesProvider.builder()
+ .register(ConfigurationComponent.NAME, configuration)
+ .build();
+
+ assertThat(parse(propertyProvider))
+ .isEqualTo(BlobStoreConfiguration.builder()
+ .cassandra()
+ .disableCache()
+ .passthrough()
+ .cryptoConfig(CryptoConfig.builder()
+ .password("myPass".toCharArray())
+ .salt("73616c7479")
+ .build()));
+ }
+
+ @Test
void provideChoosingConfigurationShouldThrowWhenPropertyFieldIsNotInSupportedList() {
PropertiesConfiguration configuration = new PropertiesConfiguration();
configuration.addProperty("implementation", "gabouzomeuh");
@@ -88,7 +179,8 @@ class BlobStoreConfigurationTest {
.isEqualTo(BlobStoreConfiguration.builder()
.cassandra()
.disableCache()
- .passthrough());
+ .passthrough()
+ .noCryptoConfig());
}
@Test
@@ -104,7 +196,8 @@ class BlobStoreConfigurationTest {
.isEqualTo(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication());
+ .deduplication()
+ .noCryptoConfig());
}
@Test
@@ -120,7 +213,8 @@ class BlobStoreConfigurationTest {
.isEqualTo(BlobStoreConfiguration.builder()
.cassandra()
.disableCache()
- .passthrough());
+ .passthrough()
+ .noCryptoConfig());
}
@Test
diff --git a/server/container/guice/distributed/src/test/java/org/apache/james/modules/blobstore/BlobStoreModulesChooserTest.java b/server/container/guice/distributed/src/test/java/org/apache/james/modules/blobstore/BlobStoreModulesChooserTest.java
index 51f1cd1..60b8d6d 100644
--- a/server/container/guice/distributed/src/test/java/org/apache/james/modules/blobstore/BlobStoreModulesChooserTest.java
+++ b/server/container/guice/distributed/src/test/java/org/apache/james/modules/blobstore/BlobStoreModulesChooserTest.java
@@ -21,6 +21,7 @@ package org.apache.james.modules.blobstore;
import static org.assertj.core.api.Assertions.assertThat;
+import org.apache.james.blob.aes.CryptoConfig;
import org.junit.jupiter.api.Test;
class BlobStoreModulesChooserTest {
@@ -30,9 +31,10 @@ class BlobStoreModulesChooserTest {
assertThat(BlobStoreModulesChooser.chooseModules(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication()))
- .first()
- .isInstanceOf(BlobStoreModulesChooser.ObjectStorageBlobStoreDAODeclarationModule.class);
+ .deduplication()
+ .noCryptoConfig()))
+ .filteredOn(module -> module instanceof BlobStoreModulesChooser.ObjectStorageBlobStoreDAODeclarationModule)
+ .hasSize(1);
}
@Test
@@ -40,8 +42,35 @@ class BlobStoreModulesChooserTest {
assertThat(BlobStoreModulesChooser.chooseModules(BlobStoreConfiguration.builder()
.cassandra()
.disableCache()
- .passthrough()))
- .first()
- .isInstanceOf(BlobStoreModulesChooser.CassandraBlobStoreDAODeclarationModule.class);
+ .passthrough()
+ .noCryptoConfig()))
+ .filteredOn(module -> module instanceof BlobStoreModulesChooser.CassandraBlobStoreDAODeclarationModule)
+ .hasSize(1);
+ }
+
+ @Test
+ void provideBlobStoreShouldReturnNoEncryptionWhenNoneConfigured() {
+ assertThat(BlobStoreModulesChooser.chooseModules(BlobStoreConfiguration.builder()
+ .s3()
+ .disableCache()
+ .deduplication()
+ .noCryptoConfig()))
+ .filteredOn(module -> module instanceof BlobStoreModulesChooser.NoEncryptionModule)
+ .hasSize(1);
+ }
+
+ @Test
+ void provideBlobStoreShouldReturnEncryptionWhenConfigured() {
+ assertThat(BlobStoreModulesChooser.chooseModules(BlobStoreConfiguration.builder()
+ .cassandra()
+ .disableCache()
+ .passthrough()
+ .cryptoConfig(CryptoConfig.builder()
+ .password("myPass".toCharArray())
+ // Hex.encode("salty".getBytes(StandardCharsets.UTF_8))
+ .salt("73616c7479")
+ .build())))
+ .filteredOn(module -> module instanceof BlobStoreModulesChooser.EncryptionModule)
+ .hasSize(1);
}
}
\ No newline at end of file
diff --git a/server/container/guice/distributed/src/test/java/org/apache/james/modules/blobstore/validation/StorageStrategyValidationEventSourcingSystemTest.java b/server/container/guice/distributed/src/test/java/org/apache/james/modules/blobstore/validation/StorageStrategyValidationEventSourcingSystemTest.java
index ed64f5e..8788ecc 100644
--- a/server/container/guice/distributed/src/test/java/org/apache/james/modules/blobstore/validation/StorageStrategyValidationEventSourcingSystemTest.java
+++ b/server/container/guice/distributed/src/test/java/org/apache/james/modules/blobstore/validation/StorageStrategyValidationEventSourcingSystemTest.java
@@ -45,7 +45,8 @@ public class StorageStrategyValidationEventSourcingSystemTest {
void startingForTheFirstTimeShouldSucceedWhenPassThrough() {
StartUpCheck.CheckResult checkResult = testee.validate(BlobStoreConfiguration.builder().implementation(BlobStoreImplName.S3)
.disableCache()
- .passthrough());
+ .passthrough()
+ .noCryptoConfig());
assertThat(checkResult.getResultType()).isEqualTo(StartUpCheck.ResultType.GOOD);
}
@@ -54,7 +55,8 @@ public class StorageStrategyValidationEventSourcingSystemTest {
void startingForTheFirstTimeShouldSucceedWhenDeduplication() {
StartUpCheck.CheckResult checkResult = testee.validate(BlobStoreConfiguration.builder().implementation(BlobStoreImplName.S3)
.disableCache()
- .deduplication());
+ .deduplication()
+ .noCryptoConfig());
assertThat(checkResult.getResultType()).isEqualTo(StartUpCheck.ResultType.GOOD);
}
@@ -63,11 +65,13 @@ public class StorageStrategyValidationEventSourcingSystemTest {
void startingShouldSucceedWhenTurningOnDeduplication() {
testee.validate(BlobStoreConfiguration.builder().implementation(BlobStoreImplName.S3)
.disableCache()
- .passthrough());
+ .passthrough()
+ .noCryptoConfig());
StartUpCheck.CheckResult checkResult = testee.validate(BlobStoreConfiguration.builder().implementation(BlobStoreImplName.S3)
.disableCache()
- .deduplication());
+ .deduplication()
+ .noCryptoConfig());
assertThat(checkResult.getResultType()).isEqualTo(StartUpCheck.ResultType.GOOD);
}
@@ -76,11 +80,13 @@ public class StorageStrategyValidationEventSourcingSystemTest {
void startingShouldFailWhenTurningOffDeduplication() {
testee.validate(BlobStoreConfiguration.builder().implementation(BlobStoreImplName.S3)
.disableCache()
- .deduplication());
+ .deduplication()
+ .noCryptoConfig());
StartUpCheck.CheckResult checkResult = testee.validate(BlobStoreConfiguration.builder().implementation(BlobStoreImplName.S3)
.disableCache()
- .passthrough());
+ .passthrough()
+ .noCryptoConfig());
assertThat(checkResult.getResultType()).isEqualTo(StartUpCheck.ResultType.BAD);
}
@@ -89,10 +95,12 @@ public class StorageStrategyValidationEventSourcingSystemTest {
void validatingSeveralTimeTheSameStrategyShouldNotAddEventsToTheHistory() {
testee.validate(BlobStoreConfiguration.builder().implementation(BlobStoreImplName.S3)
.disableCache()
- .deduplication());
+ .deduplication()
+ .noCryptoConfig());
testee.validate(BlobStoreConfiguration.builder().implementation(BlobStoreImplName.S3)
.disableCache()
- .deduplication());
+ .deduplication()
+ .noCryptoConfig());
History history = Mono.from(eventStore.getEventsOfAggregate(RegisterStorageStrategyCommandHandler.AGGREGATE_ID)).block();
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3SendMDNMethodTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3SendMDNMethodTest.java
index 512cc61..33d0501 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3SendMDNMethodTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3SendMDNMethodTest.java
@@ -45,7 +45,8 @@ public class RabbitMQAwsS3SendMDNMethodTest extends SendMDNMethodTest {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3SpamAssassinContractTest.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3SpamAssassinContractTest.java
index e68eb91..1d74754 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3SpamAssassinContractTest.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/RabbitMQAwsS3SpamAssassinContractTest.java
@@ -44,7 +44,8 @@ class RabbitMQAwsS3SpamAssassinContractTest implements SpamAssassinContract {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQAwsS3Stepdefs.java b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQAwsS3Stepdefs.java
index cb4eefe..99b4058 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQAwsS3Stepdefs.java
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/rabbitmq/cucumber/awss3/RabbitMQAwsS3Stepdefs.java
@@ -79,7 +79,8 @@ public class RabbitMQAwsS3Stepdefs {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build();
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedAuthenticationTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedAuthenticationTest.java
index 7d9767e..84904a9 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedAuthenticationTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedAuthenticationTest.java
@@ -42,7 +42,8 @@ class DistributedAuthenticationTest implements AuthenticationContract {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedDownloadTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedDownloadTest.java
index 04e057b..eb30676 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedDownloadTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedDownloadTest.java
@@ -47,7 +47,8 @@ public class DistributedDownloadTest implements DownloadContract {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.build())
.extension(new DockerElasticSearchExtension())
.extension(new CassandraExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEchoMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEchoMethodTest.java
index 80f0194..b1b1df3 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEchoMethodTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEchoMethodTest.java
@@ -43,7 +43,8 @@ public class DistributedEchoMethodTest implements EchoMethodContract {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailChangeMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailChangeMethodTest.java
index d471d81..778bcda 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailChangeMethodTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailChangeMethodTest.java
@@ -43,7 +43,8 @@ public class DistributedEmailChangeMethodTest implements EmailChangesMethodContr
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.build())
.extension(new DockerElasticSearchExtension())
.extension(new CassandraExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailGetMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailGetMethodTest.java
index 01af00e..86d1e8e 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailGetMethodTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailGetMethodTest.java
@@ -47,7 +47,8 @@ public class DistributedEmailGetMethodTest implements EmailGetMethodContract {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.build())
.extension(new DockerElasticSearchExtension())
.extension(new CassandraExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailQueryMethodNoViewTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailQueryMethodNoViewTest.java
index 235118b..3562c64 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailQueryMethodNoViewTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailQueryMethodNoViewTest.java
@@ -44,7 +44,8 @@ public class DistributedEmailQueryMethodNoViewTest implements EmailQueryMethodCo
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.build())
.extension(ELASTIC_SEARCH_EXTENSION)
.extension(new CassandraExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailQueryMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailQueryMethodTest.java
index 9f6c24f..e05c3a8 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailQueryMethodTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailQueryMethodTest.java
@@ -43,7 +43,8 @@ public class DistributedEmailQueryMethodTest implements EmailQueryMethodContract
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.build())
.extension(ELASTIC_SEARCH_EXTENSION)
.extension(new CassandraExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailSetMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailSetMethodTest.java
index b103eac..2e82789 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailSetMethodTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailSetMethodTest.java
@@ -51,7 +51,8 @@ public class DistributedEmailSetMethodTest implements EmailSetMethodContract {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.build())
.extension(ELASTIC_SEARCH_EXTENSION)
.extension(new CassandraExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailSubmissionSetMethodtest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailSubmissionSetMethodtest.java
index c7164f9..421aa16 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailSubmissionSetMethodtest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedEmailSubmissionSetMethodtest.java
@@ -48,7 +48,8 @@ class DistributedEmailSubmissionSetMethodtest implements EmailSubmissionSetMetho
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.build())
.extension(ELASTIC_SEARCH_EXTENSION)
.extension(new CassandraExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedIdentityGetTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedIdentityGetTest.java
index 0475b48..ffd004b 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedIdentityGetTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedIdentityGetTest.java
@@ -42,7 +42,8 @@ class DistributedIdentityGetTest implements IdentityGetContract {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxChangeMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxChangeMethodTest.java
index 76d5c5f..25046da 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxChangeMethodTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxChangeMethodTest.java
@@ -45,7 +45,8 @@ public class DistributedMailboxChangeMethodTest implements MailboxChangesMethodC
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.build())
.extension(new DockerElasticSearchExtension())
.extension(new CassandraExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxGetMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxGetMethodTest.java
index 0235d09..e6170a4 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxGetMethodTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxGetMethodTest.java
@@ -45,7 +45,8 @@ public class DistributedMailboxGetMethodTest implements MailboxGetMethodContract
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.build())
.extension(new DockerElasticSearchExtension())
.extension(new CassandraExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxQueryMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxQueryMethodTest.java
index c81a477..ea72456 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxQueryMethodTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxQueryMethodTest.java
@@ -43,7 +43,8 @@ public class DistributedMailboxQueryMethodTest implements MailboxQueryMethodCont
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.build())
.extension(ELASTIC_SEARCH_EXTENSION)
.extension(new CassandraExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxSetMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxSetMethodTest.java
index 7c98863..db1e1db 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxSetMethodTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedMailboxSetMethodTest.java
@@ -48,7 +48,8 @@ public class DistributedMailboxSetMethodTest implements MailboxSetMethodContract
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.build())
.extension(new DockerElasticSearchExtension())
.extension(new CassandraExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedProvisioningTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedProvisioningTest.java
index b278584..c89a915 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedProvisioningTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedProvisioningTest.java
@@ -41,7 +41,8 @@ public class DistributedProvisioningTest implements ProvisioningContract {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.build())
.extension(new DockerElasticSearchExtension())
.extension(new CassandraExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedSessionRouteTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedSessionRouteTest.java
index ae801b8..de8d786 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedSessionRouteTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedSessionRouteTest.java
@@ -41,7 +41,8 @@ public class DistributedSessionRouteTest implements SessionRoutesContract {
.configurationFromClasspath()
.blobStore(BlobStoreConfiguration.s3()
.disableCache()
- .passthrough())
+ .passthrough()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedUploadTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedUploadTest.java
index 9d432db..b7ffbed 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedUploadTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedUploadTest.java
@@ -41,7 +41,8 @@ public class DistributedUploadTest implements UploadContract {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.build())
.extension(new DockerElasticSearchExtension())
.extension(new CassandraExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedVacationResponseGetMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedVacationResponseGetMethodTest.java
index b318e97..56e1919 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedVacationResponseGetMethodTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedVacationResponseGetMethodTest.java
@@ -41,7 +41,8 @@ public class DistributedVacationResponseGetMethodTest implements VacationRespons
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.build())
.extension(new DockerElasticSearchExtension())
.extension(new CassandraExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedVacationResponseSetMethodTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedVacationResponseSetMethodTest.java
index 57a746a..091e744 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedVacationResponseSetMethodTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedVacationResponseSetMethodTest.java
@@ -41,7 +41,8 @@ public class DistributedVacationResponseSetMethodTest implements VacationRespons
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.build())
.extension(new DockerElasticSearchExtension())
.extension(new CassandraExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedWebSocketTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedWebSocketTest.java
index 6445ae5..3d1cccb 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedWebSocketTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/DistributedWebSocketTest.java
@@ -41,7 +41,8 @@ public class DistributedWebSocketTest implements WebSocketContract {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.build())
.extension(new DockerElasticSearchExtension())
.extension(new CassandraExtension())
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/ReadLevelTest.java b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/ReadLevelTest.java
index 4234152..f19e222 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/ReadLevelTest.java
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/java/org/apache/james/jmap/rfc8621/distributed/ReadLevelTest.java
@@ -108,7 +108,8 @@ public class ReadLevelTest {
.blobStore(BlobStoreConfiguration.builder()
.cassandra()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.build())
.extension(new DockerElasticSearchExtension())
.extension(new CassandraExtension())
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/ConsistencyTasksIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/ConsistencyTasksIntegrationTest.java
index 9a0fb33..20fd522 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/ConsistencyTasksIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/ConsistencyTasksIntegrationTest.java
@@ -131,7 +131,8 @@ class ConsistencyTasksIntegrationTest {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/FixingGhostMailboxTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/FixingGhostMailboxTest.java
index fce1e7d..3e1a135 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/FixingGhostMailboxTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/FixingGhostMailboxTest.java
@@ -120,7 +120,8 @@ class FixingGhostMailboxTest {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQAuthorizedEndpointsTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQAuthorizedEndpointsTest.java
index 727de20..88c0902 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQAuthorizedEndpointsTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQAuthorizedEndpointsTest.java
@@ -49,7 +49,8 @@ class RabbitMQAuthorizedEndpointsTest extends AuthorizedEndpointsTest {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQEventDeadLettersIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQEventDeadLettersIntegrationTest.java
index 0484fc4..2ab7bea 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQEventDeadLettersIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQEventDeadLettersIntegrationTest.java
@@ -209,7 +209,8 @@ class RabbitMQEventDeadLettersIntegrationTest {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQFastViewProjectionHealthCheckIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQFastViewProjectionHealthCheckIntegrationTest.java
index 187e89c..43a1461 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQFastViewProjectionHealthCheckIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQFastViewProjectionHealthCheckIntegrationTest.java
@@ -43,7 +43,8 @@ class RabbitMQFastViewProjectionHealthCheckIntegrationTest extends FastViewProje
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQForwardIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQForwardIntegrationTest.java
index dbeaae4..f9970cd 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQForwardIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQForwardIntegrationTest.java
@@ -43,7 +43,8 @@ class RabbitMQForwardIntegrationTest extends ForwardIntegrationTest {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQJwtFilterIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQJwtFilterIntegrationTest.java
index 42e975a..6a4f0ac 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQJwtFilterIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQJwtFilterIntegrationTest.java
@@ -49,7 +49,8 @@ class RabbitMQJwtFilterIntegrationTest extends JwtFilterIntegrationTest {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQReindexingWithEventDeadLettersTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQReindexingWithEventDeadLettersTest.java
index 5252864..8a5f916 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQReindexingWithEventDeadLettersTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQReindexingWithEventDeadLettersTest.java
@@ -88,7 +88,8 @@ class RabbitMQReindexingWithEventDeadLettersTest {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(dockerElasticSearch)
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQUnauthorizedEndpointsTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQUnauthorizedEndpointsTest.java
index 45c8fc5..0296304 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQUnauthorizedEndpointsTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQUnauthorizedEndpointsTest.java
@@ -73,7 +73,8 @@ class RabbitMQUnauthorizedEndpointsTest extends UnauthorizedEndpointsTest {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationImmutableTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationImmutableTest.java
index 038fad2..088d5cd 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationImmutableTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationImmutableTest.java
@@ -62,7 +62,8 @@ class RabbitMQWebAdminServerIntegrationImmutableTest extends WebAdminServerInteg
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java
index 64cf61d..019412a 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerIntegrationTest.java
@@ -67,7 +67,8 @@ class RabbitMQWebAdminServerIntegrationTest extends WebAdminServerIntegrationTes
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationImmutableTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationImmutableTest.java
index b969e49..b78bbd5 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationImmutableTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationImmutableTest.java
@@ -72,7 +72,8 @@ class RabbitMQWebAdminServerTaskSerializationIntegrationImmutableTest {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java
index ca7190c..95fa954 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/RabbitMQWebAdminServerTaskSerializationIntegrationTest.java
@@ -102,7 +102,8 @@ class RabbitMQWebAdminServerTaskSerializationIntegrationTest {
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/vault/RabbitMQDeletedMessageVaultIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/vault/RabbitMQDeletedMessageVaultIntegrationTest.java
index 82a3123..2cf535f 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/vault/RabbitMQDeletedMessageVaultIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/vault/RabbitMQDeletedMessageVaultIntegrationTest.java
@@ -52,7 +52,8 @@ class RabbitMQDeletedMessageVaultIntegrationTest extends DeletedMessageVaultInte
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(ES_EXTENSION)
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/vault/RabbitMQLinshareBlobExportMechanismIntegrationTest.java b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/vault/RabbitMQLinshareBlobExportMechanismIntegrationTest.java
index e5f9323..2cd5c90 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/vault/RabbitMQLinshareBlobExportMechanismIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/rabbitmq/vault/RabbitMQLinshareBlobExportMechanismIntegrationTest.java
@@ -50,7 +50,8 @@ class RabbitMQLinshareBlobExportMechanismIntegrationTest extends LinshareBlobExp
.blobStore(BlobStoreConfiguration.builder()
.s3()
.disableCache()
- .deduplication())
+ .deduplication()
+ .noCryptoConfig())
.searchConfiguration(SearchConfiguration.elasticSearch())
.build())
.extension(new DockerElasticSearchExtension())
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org