You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2018/07/11 16:36:12 UTC
[1/4] jclouds git commit: Pinning down JCLOUDS-1401 fix behavior with
a unit test which is able to distinguish URI.query from URI.rawQuery.
Repository: jclouds
Updated Branches:
refs/heads/master c34935dcd -> 019ccb743
Pinning down JCLOUDS-1401 fix behavior with a unit test which is able to distinguish URI.query from URI.rawQuery.
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/019ccb74
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/019ccb74
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/019ccb74
Branch: refs/heads/master
Commit: 019ccb74316374498f9fdac0339621b2a3b6ad76
Parents: 9a65be7
Author: Jesse Glick <jg...@cloudbees.com>
Authored: Wed Jul 11 10:41:50 2018 -0400
Committer: Ignasi Barrera <na...@apache.org>
Committed: Wed Jul 11 09:35:34 2018 -0700
----------------------------------------------------------------------
.../RequestAuthorizeSignatureV4Test.java | 25 ++++++++++++++++++++
1 file changed, 25 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/019ccb74/apis/s3/src/test/java/org/jclouds/s3/filters/RequestAuthorizeSignatureV4Test.java
----------------------------------------------------------------------
diff --git a/apis/s3/src/test/java/org/jclouds/s3/filters/RequestAuthorizeSignatureV4Test.java b/apis/s3/src/test/java/org/jclouds/s3/filters/RequestAuthorizeSignatureV4Test.java
index 9494a86..b59a26b 100644
--- a/apis/s3/src/test/java/org/jclouds/s3/filters/RequestAuthorizeSignatureV4Test.java
+++ b/apis/s3/src/test/java/org/jclouds/s3/filters/RequestAuthorizeSignatureV4Test.java
@@ -41,6 +41,7 @@ import org.jclouds.s3.S3ApiMetadata;
import org.jclouds.s3.S3Client;
import org.jclouds.s3.config.S3HttpApiModule;
import org.jclouds.s3.domain.S3Object;
+import org.jclouds.s3.options.ListBucketOptions;
import org.jclouds.s3.options.PutObjectOptions;
import org.testng.annotations.Test;
@@ -83,6 +84,11 @@ public class RequestAuthorizeSignatureV4Test {
+ "SignedHeaders=content-length;content-type;host;x-amz-content-sha256;x-amz-date;x-amz-storage-class, "
+ "Signature=090f1bb1db984221ae1a20c5d12a82820a0d74b4be85f20daa1431604f41df08";
+ private static final String LIST_BUCKET_RESULT = "AWS4-HMAC-SHA256 "
+ + "Credential=AKIAPAEBI3QI4EXAMPLE/20150203/cn-north-1/s3/aws4_request, "
+ + "SignedHeaders=host;x-amz-content-sha256;x-amz-date, "
+ + "Signature=6cc5d0758e2599be7cb172fd57cefab2828201a2b4d372972a83dc304de93958";
+
private static final String BUCKET_NAME = "test-bucket";
private static final String OBJECT_NAME = "ExampleObject.txt";
@@ -190,4 +196,23 @@ public class RequestAuthorizeSignatureV4Test {
assertEquals(filtered.getFirstHeaderOrNull("Authorization"), PUT_OBJECT_RESULT);
}
+
+ // JCLOUDS-1401
+ @Test
+ void testListBucketFunnyCharactersSignature() {
+ Invocation invocation = Invocation.create(method(S3Client.class, "listBucket", String.class,
+ ListBucketOptions[].class),
+ // Simulating ListBucketOptions.Builder.withPrefix("foo%2Fbar") with manual endpoint:
+ ImmutableList.<Object>of(BUCKET_NAME, new ListBucketOptions[0]));
+
+ HttpRequest getObject = GeneratedHttpRequest.builder().method("GET")
+ .invocation(invocation)
+ .endpoint("https://" + BUCKET_NAME + ".s3.cn-north-1.amazonaws.com.cn/?delimiter=/&prefix=foo%252Fbar")
+ .addHeader(HttpHeaders.HOST, BUCKET_NAME + ".s3.cn-north-1.amazonaws.com.cn")
+ .build();
+
+ HttpRequest filtered = filter(temporaryCredentials).filter(getObject);
+ assertEquals(filtered.getFirstHeaderOrNull("Authorization"), LIST_BUCKET_RESULT);
+ }
+
}
[2/4] jclouds git commit: Allow S3ClientLiveTest (and
AWSS3ClientLiveTest) to use a session token.
Posted by na...@apache.org.
Allow S3ClientLiveTest (and AWSS3ClientLiveTest) to use a session token.
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/34d272ac
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/34d272ac
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/34d272ac
Branch: refs/heads/master
Commit: 34d272ac801971ef6115b01ab9c3984b5d523f7e
Parents: f770455
Author: Jesse Glick <jg...@cloudbees.com>
Authored: Tue Jul 10 17:59:25 2018 -0400
Committer: Ignasi Barrera <na...@apache.org>
Committed: Wed Jul 11 09:35:34 2018 -0700
----------------------------------------------------------------------
apis/s3/pom.xml | 2 ++
.../java/org/jclouds/s3/S3ClientLiveTest.java | 28 ++++++++++++++++++++
providers/aws-s3/README.md | 21 +++++++++++++++
providers/aws-s3/README.txt | 8 ------
providers/aws-s3/pom.xml | 2 ++
5 files changed, 53 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/34d272ac/apis/s3/pom.xml
----------------------------------------------------------------------
diff --git a/apis/s3/pom.xml b/apis/s3/pom.xml
index 07fcec7..e1a336c 100644
--- a/apis/s3/pom.xml
+++ b/apis/s3/pom.xml
@@ -37,6 +37,7 @@
<test.s3.build-version />
<test.s3.identity>${test.aws.identity}</test.s3.identity>
<test.s3.credential>${test.aws.credential}</test.s3.credential>
+ <test.s3.sessionToken>${test.aws.sessionToken}</test.s3.sessionToken>
<jclouds.osgi.export>org.jclouds.s3*;version="${project.version}"</jclouds.osgi.export>
<jclouds.osgi.import>org.jclouds*;version="${project.version}",*</jclouds.osgi.import>
@@ -131,6 +132,7 @@
<test.s3.build-version>${test.s3.build-version}</test.s3.build-version>
<test.s3.identity>${test.s3.identity}</test.s3.identity>
<test.s3.credential>${test.s3.credential}</test.s3.credential>
+ <test.s3.sessionToken>${test.s3.sessionToken}</test.s3.sessionToken>
</systemPropertyVariables>
</configuration>
</execution>
http://git-wip-us.apache.org/repos/asf/jclouds/blob/34d272ac/apis/s3/src/test/java/org/jclouds/s3/S3ClientLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/s3/src/test/java/org/jclouds/s3/S3ClientLiveTest.java b/apis/s3/src/test/java/org/jclouds/s3/S3ClientLiveTest.java
index ede5551..b6b53e0 100644
--- a/apis/s3/src/test/java/org/jclouds/s3/S3ClientLiveTest.java
+++ b/apis/s3/src/test/java/org/jclouds/s3/S3ClientLiveTest.java
@@ -37,15 +37,19 @@ import java.net.URI;
import java.net.URL;
import java.util.Date;
import java.util.Map;
+import java.util.Properties;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.TimeUnit;
+import org.jclouds.ContextBuilder;
+import org.jclouds.aws.domain.SessionCredentials;
import org.jclouds.blobstore.KeyNotFoundException;
import org.jclouds.blobstore.domain.Blob;
import org.jclouds.blobstore.integration.internal.BaseBlobStoreIntegrationTest;
+import org.jclouds.domain.Credentials;
import org.jclouds.http.HttpResponseException;
import org.jclouds.io.ByteStreams2;
import org.jclouds.io.Payload;
@@ -66,6 +70,7 @@ import org.jclouds.util.Strings2;
import org.jclouds.utils.TestUtils;
import org.testng.annotations.Test;
+import com.google.common.base.Supplier;
import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
@@ -80,10 +85,33 @@ public class S3ClientLiveTest extends BaseBlobStoreIntegrationTest {
public static final String DEFAULT_OWNER_ID = "abc123";
private static final ByteSource oneHundredOneConstitutions = TestUtils.randomByteSource().slice(0, 5 * 1024 * 1024 + 1);
+ protected String sessionToken;
+
public S3ClientLiveTest() {
this.provider = "s3";
}
+ @Override
+ protected Properties setupProperties() {
+ Properties overrides = super.setupProperties();
+ sessionToken = setIfTestSystemPropertyPresent(overrides, provider + ".sessionToken");
+ return overrides;
+ }
+
+ @Override
+ protected ContextBuilder newBuilder() {
+ ContextBuilder builder = super.newBuilder();
+ if (sessionToken != null) {
+ builder.credentialsSupplier(new Supplier<Credentials>() {
+ @Override
+ public Credentials get() {
+ return SessionCredentials.builder().identity(identity).credential(credential).sessionToken(sessionToken).build();
+ }
+ });
+ }
+ return builder;
+ }
+
public S3Client getApi() {
return view.unwrapApi(S3Client.class);
}
http://git-wip-us.apache.org/repos/asf/jclouds/blob/34d272ac/providers/aws-s3/README.md
----------------------------------------------------------------------
diff --git a/providers/aws-s3/README.md b/providers/aws-s3/README.md
new file mode 100644
index 0000000..84e9968
--- /dev/null
+++ b/providers/aws-s3/README.md
@@ -0,0 +1,21 @@
+# The jclouds provider for Amazon's S3 (http://aws.amazon.com/s3/)
+
+Expects the jclouds s3 API to be present on your application's classpath.
+
+* **TODO**: Implementation status.
+* **TODO**: Supported features.
+* **TODO**: Usage example.
+
+## Running live tests
+
+Try
+
+```sh
+mvn clean install -Plive -pl :aws-s3 -Dtest=AWSS3ClientLiveTest -Dtest.aws-s3.identity=<aws_access_key_id> -Dtest.aws-s3.credential=<aws_secret_access_key>
+```
+
+optionally adding
+
+```sh
+-Dtest.aws-s3.sessionToken=<aws_session_token>
+```
http://git-wip-us.apache.org/repos/asf/jclouds/blob/34d272ac/providers/aws-s3/README.txt
----------------------------------------------------------------------
diff --git a/providers/aws-s3/README.txt b/providers/aws-s3/README.txt
deleted file mode 100644
index edcab1d..0000000
--- a/providers/aws-s3/README.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# The jclouds provider for Amazon's S3 (http://aws.amazon.com/s3/).
-#
-# Expects the jclouds s3 API to be present on your application's classpath.
-#
-# TODO: Implementation status.
-# TODO: Supported features.
-# TODO: Usage example.
http://git-wip-us.apache.org/repos/asf/jclouds/blob/34d272ac/providers/aws-s3/pom.xml
----------------------------------------------------------------------
diff --git a/providers/aws-s3/pom.xml b/providers/aws-s3/pom.xml
index 8f555bc..e0e9f08 100644
--- a/providers/aws-s3/pom.xml
+++ b/providers/aws-s3/pom.xml
@@ -40,6 +40,7 @@
<test.aws-s3.build-version />
<test.aws-s3.identity>${test.aws.identity}</test.aws-s3.identity>
<test.aws-s3.credential>${test.aws.credential}</test.aws-s3.credential>
+ <test.aws-s3.sessionToken>${test.aws.sessionToken}</test.aws-s3.sessionToken>
<test.blobstore.container-count>25</test.blobstore.container-count>
<jclouds.osgi.export>org.jclouds.aws.s3*;version="${project.version}"</jclouds.osgi.export>
@@ -137,6 +138,7 @@
<test.aws-s3.build-version>${test.aws-s3.build-version}</test.aws-s3.build-version>
<test.aws-s3.identity>${test.aws-s3.identity}</test.aws-s3.identity>
<test.aws-s3.credential>${test.aws-s3.credential}</test.aws-s3.credential>
+ <test.aws-s3.sessionToken>${test.aws-s3.sessionToken}</test.aws-s3.sessionToken>
<test.initializer>${test.initializer}</test.initializer>
<jclouds.blobstore.httpstream.url>${jclouds.blobstore.httpstream.url}</jclouds.blobstore.httpstream.url>
<jclouds.blobstore.httpstream.md5>${jclouds.blobstore.httpstream.md5}</jclouds.blobstore.httpstream.md5>
[4/4] jclouds git commit: [JCLOUDS-1401] Properly URL-encode the
CanonicalQueryString when it contains funny characters.
Posted by na...@apache.org.
[JCLOUDS-1401] Properly URL-encode the CanonicalQueryString when it contains funny characters.
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/f770455f
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/f770455f
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/f770455f
Branch: refs/heads/master
Commit: f770455ff9f53a9413353cc0d4d534a3e1f6fb83
Parents: c34935d
Author: Jesse Glick <jg...@cloudbees.com>
Authored: Mon Jul 9 23:45:52 2018 -0400
Committer: Ignasi Barrera <na...@apache.org>
Committed: Wed Jul 11 09:35:34 2018 -0700
----------------------------------------------------------------------
apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerBase.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/f770455f/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerBase.java
----------------------------------------------------------------------
diff --git a/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerBase.java b/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerBase.java
index 5aa88da..66d5231 100644
--- a/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerBase.java
+++ b/apis/s3/src/main/java/org/jclouds/s3/filters/Aws4SignerBase.java
@@ -398,7 +398,7 @@ public abstract class Aws4SignerBase {
// CanonicalQueryString + '\n' +
if (endpoint.getQuery() != null) {
- canonicalRequest.append(getCanonicalizedQueryString(endpoint.getQuery()));
+ canonicalRequest.append(getCanonicalizedQueryString(endpoint.getRawQuery()));
}
canonicalRequest.append("\n");
[3/4] jclouds git commit: Live test demonstrating effectiveness of
JCLOUDS-1401 fix.
Posted by na...@apache.org.
Live test demonstrating effectiveness of JCLOUDS-1401 fix.
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/9a65be78
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/9a65be78
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/9a65be78
Branch: refs/heads/master
Commit: 9a65be789e760cf279b6df525d6bfc7bd94732dd
Parents: 34d272a
Author: Jesse Glick <jg...@cloudbees.com>
Authored: Wed Jul 11 10:19:05 2018 -0400
Committer: Ignasi Barrera <na...@apache.org>
Committed: Wed Jul 11 09:35:34 2018 -0700
----------------------------------------------------------------------
.../java/org/jclouds/s3/S3ClientLiveTest.java | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/9a65be78/apis/s3/src/test/java/org/jclouds/s3/S3ClientLiveTest.java
----------------------------------------------------------------------
diff --git a/apis/s3/src/test/java/org/jclouds/s3/S3ClientLiveTest.java b/apis/s3/src/test/java/org/jclouds/s3/S3ClientLiveTest.java
index b6b53e0..425f37a 100644
--- a/apis/s3/src/test/java/org/jclouds/s3/S3ClientLiveTest.java
+++ b/apis/s3/src/test/java/org/jclouds/s3/S3ClientLiveTest.java
@@ -48,7 +48,10 @@ import org.jclouds.ContextBuilder;
import org.jclouds.aws.domain.SessionCredentials;
import org.jclouds.blobstore.KeyNotFoundException;
import org.jclouds.blobstore.domain.Blob;
+import org.jclouds.blobstore.domain.PageSet;
+import org.jclouds.blobstore.domain.StorageMetadata;
import org.jclouds.blobstore.integration.internal.BaseBlobStoreIntegrationTest;
+import org.jclouds.blobstore.options.ListContainerOptions;
import org.jclouds.domain.Credentials;
import org.jclouds.http.HttpResponseException;
import org.jclouds.io.ByteStreams2;
@@ -535,6 +538,23 @@ public class S3ClientLiveTest extends BaseBlobStoreIntegrationTest {
}
}
+ // JCLOUDS-1401
+ public void testUnusualKeyCharacters() throws InterruptedException, ExecutionException, TimeoutException, IOException {
+ String containerName = getContainerName();
+ try {
+ String dirName = "a%2Fb&xxx#?:$'\\\"<>čॐ";
+ String fileName = "foo%3Abar.xml";
+ addToContainerAndValidate(containerName, dirName + '/' + fileName);
+ PageSet<? extends StorageMetadata> list = view.getBlobStore().list(containerName,
+ ListContainerOptions.Builder.prefix(dirName + "/"));
+ assertEquals(list.size(), 1);
+ StorageMetadata md = list.iterator().next();
+ assertEquals(md.getName(), dirName + '/' + fileName);
+ } finally {
+ returnContainer(containerName);
+ }
+ }
+
public void testMultipartSynchronously() throws InterruptedException, IOException {
HashCode oneHundredOneConstitutionsMD5 = oneHundredOneConstitutions.hash(md5());
String containerName = getContainerName();