JAMES-2525 adds missing test for ObjectStorageBlobsDAOProvider

Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/7d6cbe24
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/7d6cbe24
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/7d6cbe24

Branch: refs/heads/master
Commit: 7d6cbe24a732b9f85a6072c3a9f381afbf61196d
Parents: 2f545f4
Author: Jean Helou <[email protected]>
Authored: Mon Oct 15 16:56:45 2018 +0200
Committer: Benoit Tellier <[email protected]>
Committed: Wed Oct 31 08:48:47 2018 +0700

----------------------------------------------------------------------
 .../guice/blob-objectstorage-guice/pom.xml      |   5 +
 .../ObjectStorageBlobsDAOProvider.java          |   8 +-
 .../objectstorage/PayloadCodecProvider.java     |   3 +-
 .../SwiftKeystone2ConfigurationReader.java      |   4 +-
 .../SwiftKeystone3ConfigurationReader.java      |   6 +-
 .../SwiftTmpAuthConfigurationReader.java        |   8 +-
 .../ObjectStorageBlobsDAOProviderTest.java      | 138 +++++++++++++++++++
 7 files changed, 158 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/7d6cbe24/server/container/guice/blob-objectstorage-guice/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/blob-objectstorage-guice/pom.xml 
b/server/container/guice/blob-objectstorage-guice/pom.xml
index 20e74f0..4ac1e36 100644
--- a/server/container/guice/blob-objectstorage-guice/pom.xml
+++ b/server/container/guice/blob-objectstorage-guice/pom.xml
@@ -57,6 +57,11 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>${james.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.assertj</groupId>
             <artifactId>assertj-core</artifactId>
             <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/james-project/blob/7d6cbe24/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageBlobsDAOProvider.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageBlobsDAOProvider.java
 
b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageBlobsDAOProvider.java
index acc98e6..52788d6 100644
--- 
a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageBlobsDAOProvider.java
+++ 
b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageBlobsDAOProvider.java
@@ -39,11 +39,11 @@ import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableMap;
 
 public class ObjectStorageBlobsDAOProvider implements 
Provider<ObjectStorageBlobsDAO> {
-    private static final String OBJECTSTORAGE_CONFIGURATION_NAME = 
"objectstorage";
+    static final String OBJECTSTORAGE_CONFIGURATION_NAME = "objectstorage";
 
-    private static final String OBJECTSTORAGE_NAMESPACE = 
"objectstorage.namespace";
-    private static final String OBJECTSTORAGE_PROVIDER = 
"objectstorage.provider";
-    private static final String OBJECTSTORAGE_SWIFT_AUTH_API = 
"objectstorage.swift.authapi";
+    static final String OBJECTSTORAGE_NAMESPACE = "objectstorage.namespace";
+    static final String OBJECTSTORAGE_PROVIDER = "objectstorage.provider";
+    static final String OBJECTSTORAGE_SWIFT_AUTH_API = 
"objectstorage.swift.authapi";
 
     public static final String OBJECTSTORAGE_PROVIDER_SWIFT = "swift";
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/7d6cbe24/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/PayloadCodecProvider.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/PayloadCodecProvider.java
 
b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/PayloadCodecProvider.java
index 55f0d6c..7981136 100644
--- 
a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/PayloadCodecProvider.java
+++ 
b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/PayloadCodecProvider.java
@@ -33,8 +33,9 @@ import com.amazonaws.util.StringUtils;
 import com.google.common.base.Preconditions;
 
 public class PayloadCodecProvider implements Provider<PayloadCodec> {
+    static final String OBJECTSTORAGE_PAYLOAD_CODEC = 
"objectstorage.payload.codec";
+
     private static final String OBJECTSTORAGE_CONFIGURATION_NAME = 
"objectstorage";
-    private static final String OBJECTSTORAGE_PAYLOAD_CODEC = 
"objectstorage.payload.codec";
 
     private final Configuration configuration;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/7d6cbe24/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/SwiftKeystone2ConfigurationReader.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/SwiftKeystone2ConfigurationReader.java
 
b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/SwiftKeystone2ConfigurationReader.java
index 09f41f0..26f951f 100644
--- 
a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/SwiftKeystone2ConfigurationReader.java
+++ 
b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/SwiftKeystone2ConfigurationReader.java
@@ -34,9 +34,9 @@ import com.google.common.base.Preconditions;
 
 public class SwiftKeystone2ConfigurationReader implements 
SwiftConfigurationReader {
 
-    private static final String OBJECTSTORAGE_SWIFT_KEYSTONE_2_USERNAME =
+    static final String OBJECTSTORAGE_SWIFT_KEYSTONE_2_USERNAME =
         "objectstorage.swift.keystone2.username";
-    private static final String OBJECTSTORAGE_SWIFT_KEYSTONE_2_TENANTNAME =
+    static final String OBJECTSTORAGE_SWIFT_KEYSTONE_2_TENANTNAME =
         "objectstorage.swift.keystone2.tenantname";
 
     public static SwiftKeystone2ObjectStorage.Configuration 
readSwiftConfiguration(Configuration configuration) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/7d6cbe24/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/SwiftKeystone3ConfigurationReader.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/SwiftKeystone3ConfigurationReader.java
 
b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/SwiftKeystone3ConfigurationReader.java
index f661bb6..5263e19 100644
--- 
a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/SwiftKeystone3ConfigurationReader.java
+++ 
b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/SwiftKeystone3ConfigurationReader.java
@@ -43,16 +43,16 @@ import com.google.common.base.Preconditions;
  */
 public class SwiftKeystone3ConfigurationReader implements 
SwiftConfigurationReader {
 
-    private static final String OBJECTSTORAGE_SWIFT_KEYSTONE_3_USER_NAME =
+    static final String OBJECTSTORAGE_SWIFT_KEYSTONE_3_USER_NAME =
         "objectstorage.swift.keystone3.user.name";
 
-    private static final String OBJECTSTORAGE_SWIFT_KEYSTONE_3_USER_DOMAIN =
+    static final String OBJECTSTORAGE_SWIFT_KEYSTONE_3_USER_DOMAIN =
         "objectstorage.swift.keystone3.user.domain";
 
     private static final String OBJECTSTORAGE_SWIFT_KEYSTONE_3_DOMAIN_ID =
         "objectstorage.swift.keystone3.scope.domainid";
 
-    private static final String OBJECTSTORAGE_SWIFT_KEYSTONE_3_PROJECT_NAME =
+    static final String OBJECTSTORAGE_SWIFT_KEYSTONE_3_PROJECT_NAME =
         "objectstorage.swift.keystone3.scope.project.name";
 
     private static final String 
OBJECTSTORAGE_SWIFT_KEYSTONE_3_PROJECT_DOMAIN_NAME =

http://git-wip-us.apache.org/repos/asf/james-project/blob/7d6cbe24/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/SwiftTmpAuthConfigurationReader.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/SwiftTmpAuthConfigurationReader.java
 
b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/SwiftTmpAuthConfigurationReader.java
index 3afd4a8..1066849 100644
--- 
a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/SwiftTmpAuthConfigurationReader.java
+++ 
b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/SwiftTmpAuthConfigurationReader.java
@@ -36,13 +36,13 @@ import com.google.common.base.Preconditions;
 
 public class SwiftTmpAuthConfigurationReader implements 
SwiftConfigurationReader {
 
-    private static final String OBJECTSTORAGE_SWIFT_TEMPAUTH_USERNAME =
+    static final String OBJECTSTORAGE_SWIFT_TEMPAUTH_USERNAME =
         "objectstorage.swift.tempauth.username";
-    private static final String OBJECTSTORAGE_SWIFT_TEMPAUTH_TENANTNAME =
+    static final String OBJECTSTORAGE_SWIFT_TEMPAUTH_TENANTNAME =
         "objectstorage.swift.tempauth.tenantname";
-    private static final String OBJECTSTORAGE_SWIFT_TEMPAUTH_PASS_HEADER_NAME =
+    static final String OBJECTSTORAGE_SWIFT_TEMPAUTH_PASS_HEADER_NAME =
         "objectstorage.swift.tempauth.passheadername";
-    private static final String OBJECTSTORAGE_SWIFT_TEMPAUTH_USER_HEADER_NAME =
+    static final String OBJECTSTORAGE_SWIFT_TEMPAUTH_USER_HEADER_NAME =
         "objectstorage.swift.tempauth.userheadername";
 
     public static SwiftTempAuthObjectStorage.Configuration 
readSwiftConfiguration(Configuration configuration) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/7d6cbe24/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/ObjectStorageBlobsDAOProviderTest.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/ObjectStorageBlobsDAOProviderTest.java
 
b/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/ObjectStorageBlobsDAOProviderTest.java
new file mode 100644
index 0000000..b57fc2f
--- /dev/null
+++ 
b/server/container/guice/blob-objectstorage-guice/src/test/java/org/apache/james/modules/objectstorage/ObjectStorageBlobsDAOProviderTest.java
@@ -0,0 +1,138 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.modules.objectstorage;
+
+import static 
org.apache.james.modules.objectstorage.ObjectStorageBlobsDAOProvider.OBJECTSTORAGE_CONFIGURATION_NAME;
+import static 
org.apache.james.modules.objectstorage.ObjectStorageBlobsDAOProvider.OBJECTSTORAGE_NAMESPACE;
+import static 
org.apache.james.modules.objectstorage.ObjectStorageBlobsDAOProvider.OBJECTSTORAGE_PROVIDER;
+import static 
org.apache.james.modules.objectstorage.ObjectStorageBlobsDAOProvider.OBJECTSTORAGE_PROVIDER_SWIFT;
+import static 
org.apache.james.modules.objectstorage.ObjectStorageBlobsDAOProvider.OBJECTSTORAGE_SWIFT_AUTH_API;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.UUID;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.james.blob.api.HashBlobId;
+import org.apache.james.blob.objectstorage.ContainerName;
+import org.apache.james.blob.objectstorage.DockerSwift;
+import org.apache.james.blob.objectstorage.DockerSwiftExtension;
+import org.apache.james.blob.objectstorage.ObjectStorageBlobsDAO;
+import org.apache.james.blob.objectstorage.swift.SwiftKeystone2ObjectStorage;
+import org.apache.james.blob.objectstorage.swift.SwiftKeystone3ObjectStorage;
+import org.apache.james.blob.objectstorage.swift.SwiftTempAuthObjectStorage;
+import org.apache.james.utils.PropertiesProvider;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+@ExtendWith(DockerSwiftExtension.class)
+class ObjectStorageBlobsDAOProviderTest {
+
+    private ContainerName containerName;
+    private DockerSwift dockerSwift;
+
+    @BeforeEach
+    void setUp(DockerSwift dockerSwift) throws Exception {
+        this.dockerSwift = dockerSwift;
+        containerName = ContainerName.of(UUID.randomUUID().toString());
+    }
+
+    public static final HashBlobId.Factory BLOB_ID_FACTORY = new 
HashBlobId.Factory();
+
+
+    private PropertiesProvider tempAuthPropertiesProvider() {
+        return FakePropertiesProvider.builder()
+            .register(OBJECTSTORAGE_CONFIGURATION_NAME,
+                swiftConfigBuilder()
+                    .put(OBJECTSTORAGE_SWIFT_AUTH_API, 
SwiftTempAuthObjectStorage.AUTH_API_NAME)
+                    
.put(SwiftConfigurationReader.OBJECTSTORAGE_SWIFT_ENDPOINT, 
dockerSwift.swiftEndpoint().toString())
+                    
.put(SwiftConfigurationReader.OBJECTSTORAGE_SWIFT_CREDENTIALS, "testing")
+                    
.put(SwiftTmpAuthConfigurationReader.OBJECTSTORAGE_SWIFT_TEMPAUTH_USERNAME, 
"tester")
+                    
.put(SwiftTmpAuthConfigurationReader.OBJECTSTORAGE_SWIFT_TEMPAUTH_TENANTNAME, 
"test")
+                    
.put(SwiftTmpAuthConfigurationReader.OBJECTSTORAGE_SWIFT_TEMPAUTH_PASS_HEADER_NAME,
 "X-Storage-Pass")
+                    
.put(SwiftTmpAuthConfigurationReader.OBJECTSTORAGE_SWIFT_TEMPAUTH_USER_HEADER_NAME,
 "X-Storage-User")
+                    .build())
+            .build();
+    }
+
+    private PropertiesProvider keystone2PropertiesProvider() {
+        return FakePropertiesProvider.builder()
+            .register(OBJECTSTORAGE_CONFIGURATION_NAME,
+                swiftConfigBuilder()
+                    .put(OBJECTSTORAGE_SWIFT_AUTH_API, 
SwiftKeystone2ObjectStorage.AUTH_API_NAME)
+                    
.put(SwiftConfigurationReader.OBJECTSTORAGE_SWIFT_ENDPOINT, 
dockerSwift.keystoneV2Endpoint().toString())
+                    
.put(SwiftConfigurationReader.OBJECTSTORAGE_SWIFT_CREDENTIALS, "demo")
+                    
.put(SwiftKeystone2ConfigurationReader.OBJECTSTORAGE_SWIFT_KEYSTONE_2_USERNAME, 
"demo")
+                    
.put(SwiftKeystone2ConfigurationReader.OBJECTSTORAGE_SWIFT_KEYSTONE_2_TENANTNAME,
 "test")
+                    .build())
+            .build();
+    }
+
+    private final PropertiesProvider keystone3PropertiesProvider() {
+        return FakePropertiesProvider.builder()
+            .register(OBJECTSTORAGE_CONFIGURATION_NAME,
+                swiftConfigBuilder()
+                    .put(OBJECTSTORAGE_SWIFT_AUTH_API, 
SwiftKeystone3ObjectStorage.AUTH_API_NAME)
+                    
.put(SwiftConfigurationReader.OBJECTSTORAGE_SWIFT_ENDPOINT, 
dockerSwift.keystoneV3Endpoint().toString())
+                    
.put(SwiftConfigurationReader.OBJECTSTORAGE_SWIFT_CREDENTIALS, "demo")
+                    
.put(SwiftKeystone3ConfigurationReader.OBJECTSTORAGE_SWIFT_KEYSTONE_3_USER_NAME,
 "demo")
+                    
.put(SwiftKeystone3ConfigurationReader.OBJECTSTORAGE_SWIFT_KEYSTONE_3_USER_DOMAIN,
 "Default")
+                    
.put(SwiftKeystone3ConfigurationReader.OBJECTSTORAGE_SWIFT_KEYSTONE_3_PROJECT_NAME,
 "test")
+                    .build())
+            .build();
+    }
+
+    @Test
+    void providesTempauthBackedBlobstoreDao() throws ConfigurationException {
+        ObjectStorageBlobsDAOProvider objectStorageBlobsDAOProvider =
+            new ObjectStorageBlobsDAOProvider(tempAuthPropertiesProvider(), 
BLOB_ID_FACTORY);
+        ObjectStorageBlobsDAO objectStorageBlobsDAO = 
objectStorageBlobsDAOProvider.get();
+        assertThat(objectStorageBlobsDAO).isNotNull();
+    }
+
+    @Test
+    void providesKeystone2BackedBlobstoreDao() throws ConfigurationException {
+        ObjectStorageBlobsDAOProvider objectStorageBlobsDAOProvider =
+            new ObjectStorageBlobsDAOProvider(keystone2PropertiesProvider(),
+                BLOB_ID_FACTORY);
+        ObjectStorageBlobsDAO objectStorageBlobsDAO = 
objectStorageBlobsDAOProvider.get();
+        assertThat(objectStorageBlobsDAO).isNotNull();
+    }
+
+    @Test
+    void providesKeystone3BackedBlobstoreDao() throws ConfigurationException {
+        ObjectStorageBlobsDAOProvider objectStorageBlobsDAOProvider =
+            new ObjectStorageBlobsDAOProvider(keystone3PropertiesProvider(),
+                BLOB_ID_FACTORY);
+        ObjectStorageBlobsDAO objectStorageBlobsDAO = 
objectStorageBlobsDAOProvider.get();
+        assertThat(objectStorageBlobsDAO).isNotNull();
+    }
+
+    private static MapConfigurationBuilder swiftConfigBuilder() {
+        return newConfigBuilder()
+            .put(PayloadCodecProvider.OBJECTSTORAGE_PAYLOAD_CODEC, 
PayloadCodecs.DEFAULT.name())
+            .put(OBJECTSTORAGE_PROVIDER, OBJECTSTORAGE_PROVIDER_SWIFT)
+            .put(OBJECTSTORAGE_NAMESPACE, "foo");
+    }
+
+    private static MapConfigurationBuilder newConfigBuilder() {
+        return new MapConfigurationBuilder();
+    }
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to