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]
