JAMES-2589 Encrypted Payload Configuration does not work
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/eccab454 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/eccab454 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/eccab454 Branch: refs/heads/master Commit: eccab4541b5c5484ac8f683879ec5e6e1363928a Parents: 0e3ffde Author: tran tien duc <dt...@linagora.com> Authored: Thu Nov 29 18:44:20 2018 +0700 Committer: Benoit Tellier <btell...@linagora.com> Committed: Tue Dec 4 15:47:08 2018 +0700 ---------------------------------------------------------------------- .../objectstorage/ObjectStorageBlobsDAO.java | 6 ++- .../guice/DockerSwiftTestRule.java | 18 ++++++++ .../james/CassandraRabbitMQJamesServerTest.java | 44 ++++++++++++++++++-- .../james/modules/SwiftBlobStoreExtension.java | 11 ++++- 4 files changed, 72 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/eccab454/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAO.java ---------------------------------------------------------------------- diff --git a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAO.java b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAO.java index b83d2c4..00b9b97 100644 --- a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAO.java +++ b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/ObjectStorageBlobsDAO.java @@ -39,7 +39,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.github.fge.lambdas.Throwing; -import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.hash.Hashing; import com.google.common.hash.HashingInputStream; @@ -143,8 +142,11 @@ public class ObjectStorageBlobsDAO implements BlobStore { } - @VisibleForTesting public void deleteContainer() { blobStore.deleteContainer(containerName.value()); } + + public PayloadCodec getPayloadCodec() { + return payloadCodec; + } } http://git-wip-us.apache.org/repos/asf/james-project/blob/eccab454/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/guice/DockerSwiftTestRule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/guice/DockerSwiftTestRule.java b/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/guice/DockerSwiftTestRule.java index 1f3c34a..d813f85 100644 --- a/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/guice/DockerSwiftTestRule.java +++ b/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/guice/DockerSwiftTestRule.java @@ -27,12 +27,14 @@ import org.apache.james.CleanupTasksPerformer; import org.apache.james.GuiceModuleTestRule; import org.apache.james.blob.objectstorage.ContainerName; import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAO; +import org.apache.james.blob.objectstorage.PayloadCodec; import org.apache.james.blob.objectstorage.swift.Credentials; import org.apache.james.blob.objectstorage.swift.SwiftKeystone2ObjectStorage; import org.apache.james.blob.objectstorage.swift.TenantName; import org.apache.james.blob.objectstorage.swift.UserName; import org.apache.james.modules.objectstorage.ObjectStorageBlobConfiguration; import org.apache.james.modules.objectstorage.PayloadCodecFactory; +import org.apache.james.utils.GuiceProbe; import org.junit.runner.Description; import org.junit.runners.model.Statement; @@ -41,6 +43,20 @@ import com.google.inject.multibindings.Multibinder; public class DockerSwiftTestRule implements GuiceModuleTestRule { + public static class TestSwiftBlobStoreProbe implements GuiceProbe { + + private final ObjectStorageBlobsDAO swiftBlobStore; + + @Inject + TestSwiftBlobStoreProbe(ObjectStorageBlobsDAO swiftBlobStore) { + this.swiftBlobStore = swiftBlobStore; + } + + public PayloadCodec getSwiftPayloadCodec() { + return swiftBlobStore.getPayloadCodec(); + } + } + private static class ContainerCleanUp implements CleanupTasksPerformer.CleanupTask { private final ObjectStorageBlobsDAO blobsDAO; @@ -104,6 +120,8 @@ public class DockerSwiftTestRule implements GuiceModuleTestRule { Multibinder.newSetBinder(binder, CleanupTasksPerformer.CleanupTask.class) .addBinding() .to(ContainerCleanUp.class); + + Multibinder.newSetBinder(binder, GuiceProbe.class).addBinding().to(TestSwiftBlobStoreProbe.class); }; } http://git-wip-us.apache.org/repos/asf/james-project/blob/eccab454/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java index f4f9885..61fe428 100644 --- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java +++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java @@ -19,13 +19,18 @@ package org.apache.james; +import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Duration.ONE_HUNDRED_MILLISECONDS; -import static org.junit.jupiter.api.TestInstance.*; +import static org.junit.jupiter.api.TestInstance.Lifecycle; +import org.apache.james.blob.objectstorage.DefaultPayloadCodec; +import org.apache.james.blob.objectstorage.PayloadCodec; import org.apache.james.core.Domain; import org.apache.james.modules.RabbitMQExtension; import org.apache.james.modules.SwiftBlobStoreExtension; import org.apache.james.modules.TestJMAPServerModule; +import org.apache.james.modules.objectstorage.PayloadCodecFactory; +import org.apache.james.modules.objectstorage.guice.DockerSwiftTestRule; import org.apache.james.modules.protocols.ImapGuiceProbe; import org.apache.james.modules.protocols.SmtpGuiceProbe; import org.apache.james.utils.DataProbeImpl; @@ -66,7 +71,7 @@ class CassandraRabbitMQJamesServerTest { } } - interface ContratSuite extends JmapJamesServerContract, MailsShouldBeWellReceived, JamesServerContract {} + interface ContractSuite extends JmapJamesServerContract, MailsShouldBeWellReceived, JamesServerContract {} private static final String DOMAIN = "domain"; private static final String JAMES_USER = "james-user@" + DOMAIN; @@ -87,7 +92,29 @@ class CassandraRabbitMQJamesServerTest { @Nested @TestInstance(Lifecycle.PER_CLASS) - class WithSwift implements ContratSuite { + class WithEncryptedSwift implements ContractSuite { + @RegisterExtension + JamesServerExtension testExtension = new JamesServerExtensionBuilder() + .extension(new EmbeddedElasticSearchExtension()) + .extension(new CassandraExtension()) + .extension(new RabbitMQExtension()) + .extension(new SwiftBlobStoreExtension(PayloadCodecFactory.AES256)) + .server(CONFIGURATION_BUILDER) + .build(); + + @Test + void encryptedPayloadShouldBeConfiguredWhenProvidingEncryptedPayloadConfigurationButNot(GuiceJamesServer jamesServer) { + PayloadCodec payloadCodec = jamesServer.getProbe(DockerSwiftTestRule.TestSwiftBlobStoreProbe.class) + .getSwiftPayloadCodec(); + + assertThat(payloadCodec) + .isInstanceOf(DefaultPayloadCodec.class); + } + } + + @Nested + @TestInstance(Lifecycle.PER_CLASS) + class WithDefaultSwift implements ContractSuite { @RegisterExtension JamesServerExtension testExtension = new JamesServerExtensionBuilder() .extension(new EmbeddedElasticSearchExtension()) @@ -96,11 +123,20 @@ class CassandraRabbitMQJamesServerTest { .extension(new SwiftBlobStoreExtension()) .server(CONFIGURATION_BUILDER) .build(); + + @Test + void defaultPayloadShouldBeByDefault(GuiceJamesServer jamesServer) { + PayloadCodec payloadCodec = jamesServer.getProbe(DockerSwiftTestRule.TestSwiftBlobStoreProbe.class) + .getSwiftPayloadCodec(); + + assertThat(payloadCodec) + .isInstanceOf(DefaultPayloadCodec.class); + } } @Nested @TestInstance(Lifecycle.PER_CLASS) - class WithoutSwift implements ContratSuite { + class WithoutSwift implements ContractSuite { @RegisterExtension JamesServerExtension testExtension = new JamesServerExtensionBuilder() .extension(new EmbeddedElasticSearchExtension()) http://git-wip-us.apache.org/repos/asf/james-project/blob/eccab454/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/SwiftBlobStoreExtension.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/SwiftBlobStoreExtension.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/SwiftBlobStoreExtension.java index 71d4d92..d113f1d 100644 --- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/SwiftBlobStoreExtension.java +++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/SwiftBlobStoreExtension.java @@ -21,6 +21,7 @@ package org.apache.james.modules; import org.apache.james.GuiceModuleTestExtension; import org.apache.james.modules.blobstore.BlobStoreChoosingConfiguration; +import org.apache.james.modules.objectstorage.PayloadCodecFactory; import org.apache.james.modules.objectstorage.guice.DockerSwiftTestRule; import org.junit.jupiter.api.extension.ExtensionContext; @@ -29,7 +30,15 @@ import com.google.inject.util.Modules; public class SwiftBlobStoreExtension implements GuiceModuleTestExtension { - private final DockerSwiftTestRule swiftRule = new DockerSwiftTestRule(); + private final DockerSwiftTestRule swiftRule; + + public SwiftBlobStoreExtension() { + this.swiftRule = new DockerSwiftTestRule(); + } + + public SwiftBlobStoreExtension(PayloadCodecFactory payloadCodecFactory) { + this.swiftRule = new DockerSwiftTestRule(payloadCodecFactory); + } @Override public void beforeAll(ExtensionContext extensionContext) { --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org