You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2018/12/04 08:48:55 UTC

[2/8] james-project git commit: JAMES-2589 Encrypted Payload Configuration does not work

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 <bt...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org