From 24a3d64134492c9c003480ab3d1fb611fff8293e Mon Sep 17 00:00:00 2001 From: Philipp Marx Date: Fri, 10 Mar 2017 11:12:10 +0100 Subject: [PATCH] Test for chunked encoding with anonymous access References #145. --- .../org/gaul/s3proxy/AwsSdkAnonymousTest.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/test/java/org/gaul/s3proxy/AwsSdkAnonymousTest.java b/src/test/java/org/gaul/s3proxy/AwsSdkAnonymousTest.java index 26dbedc..8f8fca3 100644 --- a/src/test/java/org/gaul/s3proxy/AwsSdkAnonymousTest.java +++ b/src/test/java/org/gaul/s3proxy/AwsSdkAnonymousTest.java @@ -16,6 +16,9 @@ package org.gaul.s3proxy; +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.InputStream; import java.net.URI; import java.util.Random; @@ -27,6 +30,9 @@ import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.internal.SkipMd5CheckStrategy; +import com.amazonaws.services.s3.model.ObjectMetadata; +import com.amazonaws.services.s3.model.S3Object; +import com.google.common.io.ByteSource; import org.jclouds.blobstore.BlobStoreContext; @@ -42,6 +48,8 @@ public final class AwsSdkAnonymousTest { AwsSdkTest.disableSslVerification(); } + private static final ByteSource BYTE_SOURCE = ByteSource.wrap(new byte[1]); + private URI s3Endpoint; private EndpointConfiguration s3EndpointConfig; private S3Proxy s3Proxy; @@ -100,6 +108,27 @@ public final class AwsSdkAnonymousTest { client.listBuckets(); } + @Test + public void testAwsV4SignatureChunkedAnonymous() throws Exception { + client = AmazonS3ClientBuilder.standard() + .withChunkedEncodingDisabled(false) + .withEndpointConfiguration(s3EndpointConfig) + .build(); + + ObjectMetadata metadata = new ObjectMetadata(); + metadata.setContentLength(BYTE_SOURCE.size()); + client.putObject(containerName, "foo", BYTE_SOURCE.openStream(), + metadata); + + S3Object object = client.getObject(containerName, "foo"); + assertThat(object.getObjectMetadata().getContentLength()).isEqualTo( + BYTE_SOURCE.size()); + try (InputStream actual = object.getObjectContent(); + InputStream expected = BYTE_SOURCE.openStream()) { + assertThat(actual).hasContentEqualTo(expected); + } + } + private static String createRandomContainerName() { return "s3proxy-" + new Random().nextInt(Integer.MAX_VALUE); }