diff --git a/providers/aws-s3/src/main/java/org/jclouds/aws/s3/config/AWSS3RestClientModule.java b/providers/aws-s3/src/main/java/org/jclouds/aws/s3/config/AWSS3RestClientModule.java index 138c3013f2..ccaf4b097b 100644 --- a/providers/aws-s3/src/main/java/org/jclouds/aws/s3/config/AWSS3RestClientModule.java +++ b/providers/aws-s3/src/main/java/org/jclouds/aws/s3/config/AWSS3RestClientModule.java @@ -33,6 +33,7 @@ import org.jclouds.aws.s3.binders.AssignCorrectHostnameAndBindAsHostPrefixIfConf import org.jclouds.http.RequiresHttp; import org.jclouds.location.Region; import org.jclouds.rest.ConfiguresRestClient; +import org.jclouds.rest.RestContext; import org.jclouds.s3.Bucket; import org.jclouds.s3.S3AsyncClient; import org.jclouds.s3.S3Client; @@ -43,7 +44,7 @@ import com.google.inject.Provides; /** * Configures the S3 connection. - * + * * @author Adrian Cole */ @RequiresHttp @@ -84,4 +85,15 @@ public class AWSS3RestClientModule extends S3RestClientModule + */ + @SuppressWarnings("unchecked") + @Singleton + @Provides + RestContext + provideBaseContext(RestContext in) { + return (RestContext) in; + } + } diff --git a/providers/aws-s3/src/test/java/org/jclouds/aws/s3/AWSS3ClientExpectTest.java b/providers/aws-s3/src/test/java/org/jclouds/aws/s3/AWSS3ClientExpectTest.java index c5708087ec..63055cb45f 100644 --- a/providers/aws-s3/src/test/java/org/jclouds/aws/s3/AWSS3ClientExpectTest.java +++ b/providers/aws-s3/src/test/java/org/jclouds/aws/s3/AWSS3ClientExpectTest.java @@ -18,9 +18,13 @@ */ package org.jclouds.aws.s3; +import com.google.common.collect.ImmutableMultimap; import org.jclouds.aws.s3.internal.BaseAWSS3ClientExpectTest; +import org.jclouds.blobstore.domain.Blob; import org.jclouds.http.HttpRequest; import org.jclouds.http.HttpResponse; +import org.jclouds.io.payloads.StringPayload; +import org.jclouds.s3.blobstore.functions.BlobToObject; import org.testng.annotations.Test; import java.net.URI; @@ -31,6 +35,7 @@ import static org.jclouds.s3.domain.ObjectMetadata.StorageClass; /** * @author Andrei Savu */ +@Test public class AWSS3ClientExpectTest extends BaseAWSS3ClientExpectTest { @Test @@ -38,13 +43,35 @@ public class AWSS3ClientExpectTest extends BaseAWSS3ClientExpectTest { AWSS3Client client = requestSendsResponse( HttpRequest.builder() .method("PUT") - .endpoint(URI.create("http://test.s3.amazon.com/")) + .endpoint(URI.create("https://test.s3.amazonaws.com/test")) + .headers(ImmutableMultimap.of( + "x-amz-storage-class", "REDUCED_REDUNDANCY", + "Host", "test.s3.amazonaws.com", + "Date", CONSTANT_DATE, + "Authorization", "AWS identity:1mJrW85/mqZpYTFIK5Ebtt2MM6E=" + )) + .payload(new StringPayload("content")) .build(), HttpResponse.builder() .statusCode(200) + .headers(ImmutableMultimap.of( + "x-amz-id-2", "w0rL+9fALQiCOToesVQefs8WalIgn+ZhMD7hHMKYud/xv7MyKkAWQOtFNEfK97Ri", + "x-amz-request-id", "7A84C3CD4437A4C0", + "Date", CONSTANT_DATE, + "ETag", "437b930db84b8079c2dd804a71936b5f", + "Server", "AmazonS3" + )) .build() ); - client.putObject("test", null, storageClass(StorageClass.REDUCED_REDUNDANCY)); + Blob blob = blobStore.blobBuilder("test").payload("content").build(); + BlobToObject blobToObject = getInstance(BlobToObject.class); + + client.putObject("test", blobToObject.apply(blob), + storageClass(StorageClass.REDUCED_REDUNDANCY)); + } + + public T getInstance(Class klass) { + return blobStoreContext.utils().injector().getInstance(klass); } } diff --git a/providers/aws-s3/src/test/java/org/jclouds/aws/s3/internal/BaseAWSS3ClientExpectTest.java b/providers/aws-s3/src/test/java/org/jclouds/aws/s3/internal/BaseAWSS3ClientExpectTest.java index 511060586e..169b5d5962 100644 --- a/providers/aws-s3/src/test/java/org/jclouds/aws/s3/internal/BaseAWSS3ClientExpectTest.java +++ b/providers/aws-s3/src/test/java/org/jclouds/aws/s3/internal/BaseAWSS3ClientExpectTest.java @@ -18,15 +18,25 @@ */ package org.jclouds.aws.s3.internal; +import com.google.common.base.Function; import com.google.common.base.Supplier; +import com.google.common.collect.ImmutableSet; import com.google.inject.Module; import org.jclouds.aws.s3.AWSS3Client; import org.jclouds.aws.s3.config.AWSS3RestClientModule; +import org.jclouds.blobstore.BlobStore; +import org.jclouds.blobstore.BlobStoreContext; +import org.jclouds.blobstore.BlobStoreContextFactory; import org.jclouds.date.TimeStamp; +import org.jclouds.http.HttpRequest; +import org.jclouds.http.HttpResponse; import org.jclouds.http.RequiresHttp; +import org.jclouds.logging.config.NullLoggingModule; import org.jclouds.rest.BaseRestClientExpectTest; import org.jclouds.rest.ConfiguresRestClient; +import java.util.Properties; + /** * Base class for writing Expect tests for AWS-S3 * @@ -36,6 +46,9 @@ public class BaseAWSS3ClientExpectTest extends BaseRestClientExpectTest fn, Module module, Properties props) { + return clientFrom(BlobStoreContext.class.cast(new BlobStoreContextFactory(setupRestProperties()) + .createContext(provider, "identity", "credential", ImmutableSet.of(new ExpectModule(fn), + new NullLoggingModule(), module), props))); + } + + protected AWSS3Client clientFrom(BlobStoreContext context) { + blobStoreContext = context; + blobStore = context.getBlobStore(); + return AWSS3Client.class.cast(context.getProviderSpecificContext().getApi()); + } + }