http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/a4acb11f/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiLiveTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiLiveTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiLiveTest.java deleted file mode 100644 index 4bf48cb..0000000 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiLiveTest.java +++ /dev/null @@ -1,478 +0,0 @@ -/* - * 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.jclouds.googlecloudstorage.features; - -import static com.google.common.io.BaseEncoding.base64; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.entry; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertTrue; - -import java.io.IOException; -import java.util.List; -import java.util.UUID; - -import javax.ws.rs.core.MediaType; - -import org.jclouds.googlecloudstorage.domain.Bucket; -import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.DestinationPredefinedAcl; -import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.ObjectRole; -import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.Projection; -import org.jclouds.googlecloudstorage.domain.GoogleCloudStorageObject; -import org.jclouds.googlecloudstorage.domain.ListPageWithPrefixes; -import org.jclouds.googlecloudstorage.domain.ObjectAccessControls; -import org.jclouds.googlecloudstorage.domain.RewriteResponse; -import org.jclouds.googlecloudstorage.domain.templates.BucketTemplate; -import org.jclouds.googlecloudstorage.domain.templates.ComposeObjectTemplate; -import org.jclouds.googlecloudstorage.domain.templates.ObjectTemplate; -import org.jclouds.googlecloudstorage.internal.BaseGoogleCloudStorageApiLiveTest; -import org.jclouds.googlecloudstorage.options.ComposeObjectOptions; -import org.jclouds.googlecloudstorage.options.CopyObjectOptions; -import org.jclouds.googlecloudstorage.options.DeleteObjectOptions; -import org.jclouds.googlecloudstorage.options.GetObjectOptions; -import org.jclouds.googlecloudstorage.options.InsertObjectOptions; -import org.jclouds.googlecloudstorage.options.ListObjectOptions; -import org.jclouds.googlecloudstorage.options.UpdateObjectOptions; -import org.jclouds.http.internal.PayloadEnclosingImpl; -import org.jclouds.io.ByteStreams2; -import org.jclouds.io.ContentMetadata; -import org.jclouds.io.PayloadEnclosing; -import org.jclouds.io.Payloads; -import org.jclouds.io.payloads.ByteSourcePayload; -import org.jclouds.utils.TestUtils; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -import com.beust.jcommander.internal.Lists; -import com.google.common.collect.ImmutableMap; -import com.google.common.hash.Hashing; -import com.google.common.io.ByteSource; - -public class ObjectApiLiveTest extends BaseGoogleCloudStorageApiLiveTest { - - private static final String BUCKET_NAME = "jcloudsobjectoperations" + UUID.randomUUID(); - private static final String BUCKET_NAME2 = "jcloudsobjectdestination" + UUID.randomUUID(); - private static final String UPLOAD_OBJECT_NAME = "objectOperation.txt"; - private static final String UPLOAD_OBJECT_NAME2 = "jcloudslogo.jpg"; - private static final String MULTIPART_UPLOAD_OBJECT = "multipart_related.jpg"; - private static final String COPIED_OBJECT_NAME = "copyofObjectOperation.txt"; - private static final String COPIED_OBJECT_NAME2 = "copyObjectWithMeta.txt"; - private static final String COMPOSED_OBJECT = "ComposedObject1.txt"; - private static final String COMPOSED_OBJECT2 = "ComposedObject2.json"; - private static final String NONEXISTENT_OBJECT_NAME = "noSuchObject.txt"; - private static final String REWRITE_OBJECT_NAME = "rewriteObject.txt"; - - private PayloadEnclosing testPayload; - private Long RANDOM_LONG = 100L; - - private Long metageneration; - private Long generation; - private String md5Hash; - private String crc32c; - - private ObjectApi api() { - return api.getObjectApi(); - } - - // Create the buckets - @BeforeClass - private void createBucket() { - BucketTemplate template = new BucketTemplate().name(BUCKET_NAME); - Bucket bucket = api.getBucketApi().createBucket(PROJECT_NUMBER, template); - assertNotNull(bucket); - - BucketTemplate template2 = new BucketTemplate().name(BUCKET_NAME2); - Bucket bucket2 = api.getBucketApi().createBucket(PROJECT_NUMBER, template2); - assertNotNull(bucket2); - } - - // Object Operations - @Test(groups = "live") - public void testSimpleUpload() throws IOException { - long contentLength = 512L; - ByteSource byteSource = TestUtils.randomByteSource().slice(0, contentLength); - ByteSourcePayload byteSourcePayload = Payloads.newByteSourcePayload(byteSource); - - PayloadEnclosing payload = new PayloadEnclosingImpl(byteSourcePayload); - payload.getPayload().getContentMetadata().setContentLength(contentLength); - - this.testPayload = payload; - - InsertObjectOptions options = new InsertObjectOptions().name(UPLOAD_OBJECT_NAME); - - GoogleCloudStorageObject gcsObject = api().simpleUpload(BUCKET_NAME, "text/plain", - payload.getPayload().getContentMetadata().getContentLength(), payload.getPayload(), options); - - assertNotNull(gcsObject); - assertEquals(gcsObject.bucket(), BUCKET_NAME); - assertEquals(gcsObject.name(), UPLOAD_OBJECT_NAME); - } - - @Test(groups = "live", dependsOnMethods = "testSimpleUpload") - public void testRewrite() throws IOException { - GoogleCloudStorageObject gcsObject = api().getObject(BUCKET_NAME, UPLOAD_OBJECT_NAME); - System.out.println(gcsObject); - - RewriteResponse response = api().rewriteObjects(BUCKET_NAME, REWRITE_OBJECT_NAME, BUCKET_NAME, UPLOAD_OBJECT_NAME); - assertNotNull(response); - assertTrue(response.done()); - assertEquals(response.objectSize(), 512); - assertEquals(response.totalBytesRewritten(), 512); - assertEquals(response.rewriteToken(), null); - assertNotNull(response.resource()); - } - - @Test(groups = "live", dependsOnMethods = "testRewrite") - public void testDownload() throws IOException { - PayloadEnclosing impl = api().download(BUCKET_NAME, UPLOAD_OBJECT_NAME); - ContentMetadata meta = impl.getPayload().getContentMetadata(); - assertNotNull(impl); - assertNotNull(impl.getPayload()); - assertNotNull(meta); - assertEquals(meta.getContentType(), "text/plain"); - - testPayload.getPayload().getContentMetadata().setContentDisposition("attachment"); - - assertEquals(ByteStreams2.toByteArrayAndClose(impl.getPayload().openStream()), - ByteStreams2.toByteArrayAndClose(testPayload.getPayload().openStream())); - } - - @Test(groups = "live", dependsOnMethods = "testSimpleUpload") - public void testSimpleJpegUpload() throws IOException { - long contentLength = 2 * 1024L; - ByteSource testSource = TestUtils.randomByteSource().slice(0, contentLength); - ByteSourcePayload payload = Payloads.newByteSourcePayload(testSource); - - InsertObjectOptions options = new InsertObjectOptions().name(UPLOAD_OBJECT_NAME2); - - GoogleCloudStorageObject gcsObject = api().simpleUpload(BUCKET_NAME, "image/jpeg", contentLength, payload, options); - - assertNotNull(gcsObject); - assertEquals(gcsObject.bucket(), BUCKET_NAME); - assertEquals(gcsObject.name(), UPLOAD_OBJECT_NAME2); - - // This is a client side validation of md5 - md5Hash = base64().encode(testSource.hash(Hashing.md5()).asBytes()); - // TODO: crc32c = without making a compile dep on guava 18. - - checkHashCodes(gcsObject); - } - - @Test(groups = "live", dependsOnMethods = "testSimpleUpload") - public void testGetObject() { - GoogleCloudStorageObject gcsObject = api().getObject(BUCKET_NAME, UPLOAD_OBJECT_NAME); - - assertNotNull(gcsObject); - - metageneration = gcsObject.metageneration(); - generation = gcsObject.generation(); - - assertEquals(gcsObject.bucket(), BUCKET_NAME); - assertEquals(gcsObject.name(), UPLOAD_OBJECT_NAME); - assertEquals(gcsObject.contentType(), "text/plain"); - } - - @Test(groups = "live", dependsOnMethods = "testGetObject") - public void testGetObjectWithOptions() { - GetObjectOptions options = new GetObjectOptions().ifGenerationMatch(generation) - .ifMetagenerationMatch(metageneration).ifGenerationNotMatch(generation + 1).projection(Projection.FULL); - - GoogleCloudStorageObject gcsObject = api().getObject(BUCKET_NAME, UPLOAD_OBJECT_NAME, options); - - assertNotNull(gcsObject); - assertNotNull(gcsObject.acl()); - assertEquals(gcsObject.bucket(), BUCKET_NAME); - assertEquals(gcsObject.name(), UPLOAD_OBJECT_NAME); - assertEquals(gcsObject.contentType(), "text/plain"); - } - - @Test(groups = "live", dependsOnMethods = "testGetObject") - public void testCopyObject() throws IOException { - GoogleCloudStorageObject gcsObject = api().copyObject(BUCKET_NAME2, COPIED_OBJECT_NAME, BUCKET_NAME, UPLOAD_OBJECT_NAME); - - assertNotNull(gcsObject); - assertEquals(gcsObject.bucket(), BUCKET_NAME2); - assertEquals(gcsObject.name(), COPIED_OBJECT_NAME); - assertEquals(gcsObject.contentType(), "text/plain"); - - // Test for data - - PayloadEnclosing impl = api().download(BUCKET_NAME2, COPIED_OBJECT_NAME); - assertNotNull(impl); - assertEquals(ByteStreams2.toByteArrayAndClose(impl.getPayload().openStream()), - ByteStreams2.toByteArrayAndClose(testPayload.getPayload().openStream())); - - } - - @Test(groups = "live", dependsOnMethods = "testGetObject") - public void testCopyObjectWithUpdatedMetadata() throws IOException { - String METADATA_KEY = "key1"; - String METADATA_VALUE = "value1"; - - ObjectTemplate template = new ObjectTemplate().contentLanguage("fr").contentType("text/plain") - .contentDisposition("attachment").customMetadata(METADATA_KEY, METADATA_VALUE); - - GoogleCloudStorageObject gcsObject = api().copyObject(BUCKET_NAME2, COPIED_OBJECT_NAME2, BUCKET_NAME, UPLOAD_OBJECT_NAME, template); - - assertNotNull(gcsObject); - assertEquals(gcsObject.bucket(), BUCKET_NAME2); - assertEquals(gcsObject.name(), COPIED_OBJECT_NAME2); - assertNotNull(gcsObject.acl()); - assertEquals(gcsObject.contentType(), "text/plain"); - assertEquals(gcsObject.metadata().get(METADATA_KEY), METADATA_VALUE); - assertEquals(gcsObject.contentLanguage(), "fr"); - // Test for data - - PayloadEnclosing impl = api().download(BUCKET_NAME2, COPIED_OBJECT_NAME2); - assertNotNull(impl); - assertEquals(ByteStreams2.toByteArrayAndClose(impl.getPayload().openStream()), - ByteStreams2.toByteArrayAndClose(testPayload.getPayload().openStream())); - } - - @Test(groups = "live", dependsOnMethods = "testCopyObject") - public void testCopyObjectWithOptions() { - CopyObjectOptions options = new CopyObjectOptions().ifSourceGenerationMatch(generation) - .ifSourceMetagenerationMatch(metageneration).projection(Projection.FULL); - - GoogleCloudStorageObject gcsObject = api() - .copyObject(BUCKET_NAME2, UPLOAD_OBJECT_NAME, BUCKET_NAME, UPLOAD_OBJECT_NAME, options); - - assertNotNull(gcsObject); - assertNotNull(gcsObject.acl()); - assertEquals(gcsObject.bucket(), BUCKET_NAME2); - assertEquals(gcsObject.name(), UPLOAD_OBJECT_NAME); - assertEquals(gcsObject.contentType(), "text/plain"); - } - - @Test(groups = "live", dependsOnMethods = "testCopyObjectWithOptions") - public void testComposeObject() { - ObjectAccessControls oacl = ObjectAccessControls.builder().bucket(BUCKET_NAME).entity("allUsers") - .role(ObjectRole.OWNER).build(); - - ObjectTemplate destination = new ObjectTemplate().contentType("text/plain").addAcl(oacl); - List<GoogleCloudStorageObject> sourceList = Lists.newArrayList(); - sourceList.add(api().getObject(BUCKET_NAME2, UPLOAD_OBJECT_NAME)); - sourceList.add(api().getObject(BUCKET_NAME2, COPIED_OBJECT_NAME)); - - ComposeObjectTemplate requestTemplate = ComposeObjectTemplate.builder() - .fromGoogleCloudStorageObject(sourceList) - .destination(destination) - .build(); - - GoogleCloudStorageObject gcsObject = api().composeObjects(BUCKET_NAME2, COMPOSED_OBJECT, requestTemplate); - - assertNotNull(gcsObject); - assertNotNull(gcsObject.acl()); - assertEquals(gcsObject.bucket(), BUCKET_NAME2); - assertEquals(gcsObject.name(), COMPOSED_OBJECT); - assertEquals(gcsObject.contentType(), "text/plain"); - } - - @Test(groups = "live", dependsOnMethods = "testComposeObject") - public void testComposeObjectWithOptions() { - ObjectTemplate destination = new ObjectTemplate().contentType(MediaType.APPLICATION_JSON); - List<GoogleCloudStorageObject> sourceList = Lists.newArrayList(); - sourceList.add(api().getObject(BUCKET_NAME2, UPLOAD_OBJECT_NAME)); - sourceList.add(api().getObject(BUCKET_NAME2, COPIED_OBJECT_NAME)); - - ComposeObjectTemplate requestTemplate = ComposeObjectTemplate.builder() - .fromGoogleCloudStorageObject(sourceList) - .destination(destination) - .build(); - ComposeObjectOptions options = new ComposeObjectOptions().destinationPredefinedAcl( - DestinationPredefinedAcl.BUCKET_OWNER_READ).ifMetagenerationNotMatch(RANDOM_LONG); - - GoogleCloudStorageObject gcsObject = api().composeObjects(BUCKET_NAME2, COMPOSED_OBJECT2, requestTemplate, options); - - assertNotNull(gcsObject); - assertNotNull(gcsObject.acl()); - assertEquals(gcsObject.bucket(), BUCKET_NAME2); - assertEquals(gcsObject.name(), COMPOSED_OBJECT2); - assertEquals(gcsObject.contentType(), MediaType.APPLICATION_JSON); - } - - @Test(groups = "live", dependsOnMethods = "testComposeObjectWithOptions") - public void listObjects() { - ListPageWithPrefixes<GoogleCloudStorageObject> list = api().listObjects(BUCKET_NAME); - - assertNotNull(list); - assertEquals(list.get(0) instanceof GoogleCloudStorageObject, true); - } - - @Test(groups = "live", dependsOnMethods = "testComposeObjectWithOptions") - public void testListObjectsWithOptions() { - ListObjectOptions options = new ListObjectOptions().maxResults(1); - ListPageWithPrefixes<GoogleCloudStorageObject> list = api().listObjects(BUCKET_NAME, options); - - while (list.nextPageToken() != null) { - assertNotNull(list); - assertEquals(list.get(0) instanceof GoogleCloudStorageObject, true); - assertEquals(list.size(), 1); - - options = new ListObjectOptions().maxResults(1).pageToken(list.nextPageToken()); - list = api().listObjects(BUCKET_NAME, options); - } - } - - @Test(groups = "live", dependsOnMethods = "testComposeObjectWithOptions") - public void testUpdateObject() { - ObjectAccessControls oacl = ObjectAccessControls.builder().bucket(BUCKET_NAME).entity("allUsers") - .role(ObjectRole.OWNER).build(); - - ObjectTemplate template = new ObjectTemplate().addAcl(oacl).contentType("image/jpeg"); - GoogleCloudStorageObject gcsObject = api().updateObject(BUCKET_NAME, UPLOAD_OBJECT_NAME2, template); - - assertNotNull(gcsObject); - assertNotNull(gcsObject.acl()); - assertEquals(gcsObject.bucket(), BUCKET_NAME); - assertEquals(gcsObject.name(), UPLOAD_OBJECT_NAME2); - assertEquals(gcsObject.contentType(), "image/jpeg"); - } - - @Test(groups = "live", dependsOnMethods = "testUpdateObject") - public void testUpdateObjectWithOptions() { - String METADATA_KEY = "key1"; - String METADATA_VALUE = "value1"; - - ObjectAccessControls oacl = ObjectAccessControls.builder().bucket(BUCKET_NAME).entity("allUsers") - .role(ObjectRole.OWNER).build(); - - UpdateObjectOptions options = new UpdateObjectOptions().ifMetagenerationNotMatch(RANDOM_LONG) - .ifGenerationNotMatch(RANDOM_LONG); - - ObjectTemplate template = new ObjectTemplate().addAcl(oacl).contentType("image/jpeg") - .contentDisposition("attachment").customMetadata(METADATA_KEY, METADATA_VALUE); - GoogleCloudStorageObject gcsObject = api().updateObject(BUCKET_NAME, UPLOAD_OBJECT_NAME2, template, options); - - assertNotNull(gcsObject); - assertNotNull(gcsObject.acl()); - assertEquals(gcsObject.bucket(), BUCKET_NAME); - assertEquals(gcsObject.name(), UPLOAD_OBJECT_NAME2); - assertEquals(gcsObject.contentType(), "image/jpeg"); - assertNotNull(gcsObject.metadata()); - assertNotNull(gcsObject.metadata().get(METADATA_KEY), METADATA_VALUE); - } - - @Test(groups = "live", dependsOnMethods = "testUpdateObjectWithOptions") - public void testPatchObject() { - ObjectAccessControls oacl = ObjectAccessControls.builder().bucket(BUCKET_NAME).entity("allUsers") - .role(ObjectRole.READER).build(); - - ObjectTemplate template = new ObjectTemplate().addAcl(oacl).contentType("image/jpeg"); - GoogleCloudStorageObject gcsObject = api().patchObject(BUCKET_NAME, UPLOAD_OBJECT_NAME2, template); - - assertNotNull(gcsObject); - assertNotNull(gcsObject.acl()); - assertEquals(gcsObject.bucket(), BUCKET_NAME); - assertEquals(gcsObject.name(), UPLOAD_OBJECT_NAME2); - assertEquals(gcsObject.contentType(), "image/jpeg"); - } - - @Test(groups = "live", dependsOnMethods = "testPatchObject") - public void testPatchObjectsWithOptions() { - ObjectAccessControls oacl = ObjectAccessControls.builder().bucket(BUCKET_NAME).entity("allUsers") - .role(ObjectRole.OWNER).build(); - - UpdateObjectOptions options = new UpdateObjectOptions().ifMetagenerationNotMatch(RANDOM_LONG) - .ifGenerationNotMatch(RANDOM_LONG); - - - ObjectTemplate template = new ObjectTemplate().addAcl(oacl).contentType("image/jpeg") - .contentDisposition("attachment"); - GoogleCloudStorageObject gcsObject = api().patchObject(BUCKET_NAME, UPLOAD_OBJECT_NAME2, template, options); - - assertNotNull(gcsObject); - assertNotNull(gcsObject.acl()); - assertEquals(gcsObject.bucket(), BUCKET_NAME); - assertEquals(gcsObject.name(), UPLOAD_OBJECT_NAME2); - assertEquals(gcsObject.contentType(), "image/jpeg"); - assertEquals(gcsObject.contentDisposition(), "attachment"); - } - - @Test(groups = "live", dependsOnMethods = "testPatchObjectsWithOptions") - public void testMultipartJpegUpload() throws IOException { - long contentLength = 32 * 1024L; - ByteSource byteSource = TestUtils.randomByteSource().slice(0, contentLength); - ByteSourcePayload payload = Payloads.newByteSourcePayload(byteSource); - PayloadEnclosing payloadImpl = new PayloadEnclosingImpl(payload); - - ObjectTemplate template = new ObjectTemplate(); - - ObjectAccessControls oacl = ObjectAccessControls.builder().bucket(BUCKET_NAME).entity("allUsers") - .role(ObjectRole.OWNER).build(); - - // This would trigger server side validation of md5 - md5Hash = base64().encode(byteSource.hash(Hashing.md5()).asBytes()); - // TODO: crc32c = without making a compile dep on guava 18 - - template.contentType("image/jpeg").addAcl(oacl).size(contentLength).name(MULTIPART_UPLOAD_OBJECT) - .contentLanguage("en").contentDisposition("attachment").md5Hash(md5Hash) - .customMetadata("custommetakey1", "custommetavalue1").crc32c(crc32c) - .customMetadata(ImmutableMap.of("Adrian", "powderpuff")); - - GoogleCloudStorageObject gcsObject = api().multipartUpload(BUCKET_NAME, template, payloadImpl.getPayload()); - - assertThat(gcsObject.bucket()).isEqualTo(BUCKET_NAME); - assertThat(gcsObject.name()).isEqualTo(MULTIPART_UPLOAD_OBJECT); - checkHashCodes(gcsObject); - - assertThat(gcsObject.metadata()).contains(entry("custommetakey1", "custommetavalue1"), - entry("Adrian", "powderpuff")).doesNotContainKey("adrian"); - - PayloadEnclosing impl = api().download(BUCKET_NAME, MULTIPART_UPLOAD_OBJECT); - - assertThat(ByteStreams2.toByteArrayAndClose(impl.getPayload().openStream())).isEqualTo( - ByteStreams2.toByteArrayAndClose(payloadImpl.getPayload().openStream())); - } - - private void checkHashCodes(GoogleCloudStorageObject gcsObject) { - assertEquals(gcsObject.md5Hash(), md5Hash); - if (crc32c != null) { - assertEquals(gcsObject.crc32c(), crc32c); - } - } - - @Test(groups = "live", dependsOnMethods = "testMultipartJpegUpload") - public void testDeleteObject() { - assertTrue(api().deleteObject(BUCKET_NAME2, UPLOAD_OBJECT_NAME)); - assertTrue(api().deleteObject(BUCKET_NAME2, COMPOSED_OBJECT2)); - assertTrue(api().deleteObject(BUCKET_NAME2, COMPOSED_OBJECT)); - assertTrue(api().deleteObject(BUCKET_NAME2, COPIED_OBJECT_NAME)); - assertTrue(api().deleteObject(BUCKET_NAME2, COPIED_OBJECT_NAME2)); - assertFalse(api().deleteObject(BUCKET_NAME, UPLOAD_OBJECT_NAME)); - assertTrue(api().deleteObject(BUCKET_NAME, UPLOAD_OBJECT_NAME2)); - assertTrue(api().deleteObject(BUCKET_NAME, MULTIPART_UPLOAD_OBJECT)); - assertTrue(api().deleteObject(BUCKET_NAME, REWRITE_OBJECT_NAME)); - assertFalse(api().deleteObject(BUCKET_NAME, NONEXISTENT_OBJECT_NAME)); - } - - @Test(groups = "live", dependsOnMethods = "testPatchObjectsWithOptions") - public void testDeleteObjectWithOptions() { - DeleteObjectOptions options = new DeleteObjectOptions().ifGenerationMatch(generation).ifMetagenerationMatch( - metageneration); - api().deleteObject(BUCKET_NAME, UPLOAD_OBJECT_NAME, options); - } - - @AfterClass - private void deleteBucket() { - api.getBucketApi().deleteBucket(BUCKET_NAME); - api.getBucketApi().deleteBucket(BUCKET_NAME2); - } -}
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/a4acb11f/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiMockTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiMockTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiMockTest.java deleted file mode 100644 index 863581b..0000000 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ObjectApiMockTest.java +++ /dev/null @@ -1,303 +0,0 @@ -/* - * 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.jclouds.googlecloudstorage.features; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNull; -import static org.testng.Assert.assertTrue; -import static org.testng.Assert.assertFalse; -import static com.google.common.base.Charsets.UTF_8; -import static javax.ws.rs.core.MediaType.APPLICATION_JSON; - -import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.DestinationPredefinedAcl; -import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.PredefinedAcl; -import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.Projection; -import org.jclouds.googlecloudstorage.domain.templates.ComposeObjectTemplate; -import org.jclouds.googlecloudstorage.domain.templates.ObjectTemplate; -import org.jclouds.googlecloudstorage.internal.BaseGoogleCloudStorageApiMockTest; -import org.jclouds.googlecloudstorage.options.ComposeObjectOptions; -import org.jclouds.googlecloudstorage.options.CopyObjectOptions; -import org.jclouds.googlecloudstorage.options.GetObjectOptions; -import org.jclouds.googlecloudstorage.options.InsertObjectOptions; -import org.jclouds.googlecloudstorage.options.ListObjectOptions; -import org.jclouds.googlecloudstorage.options.RewriteObjectOptions; -import org.jclouds.googlecloudstorage.parse.ParseGoogleCloudStorageObject; -import org.jclouds.googlecloudstorage.parse.ParseGoogleCloudStorageObjectListTest; -import org.jclouds.googlecloudstorage.parse.ParseObjectRewriteResponse; -import org.jclouds.http.internal.PayloadEnclosingImpl; -import org.jclouds.io.PayloadEnclosing; -import org.jclouds.util.Strings2; -import org.testng.annotations.Test; - -import com.google.common.net.MediaType; -import com.squareup.okhttp.mockwebserver.MockResponse; -import com.squareup.okhttp.mockwebserver.RecordedRequest; - -@Test(groups = "unit", testName = "ObjectApiMockTest", singleThreaded = true) -public class ObjectApiMockTest extends BaseGoogleCloudStorageApiMockTest { - - - public void exists() throws Exception { - server.enqueue(jsonResponse("/object_get.json")); - - assertTrue(objectApi().objectExists("test", "file_name")); - assertSent(server, "GET", "/storage/v1/b/test/o/file_name", null); - } - - public void existsEncoded() throws Exception { - server.enqueue(jsonResponse("/object_encoded_get.json")); - - assertTrue(objectApi().objectExists("test", Strings2.urlEncode("dir/file name"))); - assertSent(server, "GET", "/storage/v1/b/test/o/dir%2Ffile%20name", null); - } - - public void exists_4xx() throws Exception { - server.enqueue(response404()); - - assertFalse(objectApi().objectExists("test", "file_name")); - assertSent(server, "GET", "/storage/v1/b/test/o/file_name", null); - } - - public void get() throws Exception { - server.enqueue(jsonResponse("/object_get.json")); - - assertEquals(objectApi().getObject("test", "file_name"), - new ParseGoogleCloudStorageObject().expected()); - assertSent(server, "GET", "/storage/v1/b/test/o/file_name"); - } - - public void get_4xx() throws Exception { - server.enqueue(response404()); - - assertNull(objectApi().getObject("test", "file_name")); - assertSent(server, "GET", "/storage/v1/b/test/o/file_name"); - } - - public void get_with_options() throws Exception { - server.enqueue(jsonResponse("/object_get.json")); - - GetObjectOptions options = new GetObjectOptions().ifGenerationMatch((long) 1000); - options.range(0, 1023); - - assertEquals(objectApi().getObject("test", "file_name", options), - new ParseGoogleCloudStorageObject().expected()); - RecordedRequest request = assertSent(server, "GET", "/storage/v1/b/test/o/file_name?ifGenerationMatch=1000"); - assertEquals(request.getHeader("Range"), "bytes=0-1023"); - } - - public void simpleUpload() throws Exception { - server.enqueue(jsonResponse("/object_get.json")); - - PayloadEnclosing p = new PayloadEnclosingImpl(); - String testPayload = "this is a test payload for upload!"; - p.setPayload(testPayload.getBytes()); - - InsertObjectOptions options = new InsertObjectOptions() - .name("new_object") - .predefinedAcl(PredefinedAcl.PUBLIC_READ_WRITE); - - assertEquals(objectApi().simpleUpload("bucket_name", "text/plain", - p.getPayload().getContentMetadata().getContentLength(), p.getPayload(), options), - new ParseGoogleCloudStorageObject().expected()); - - RecordedRequest request = assertSent(server, "POST", "/upload/storage/v1/b/bucket_name/o" + - "?uploadType=media&name=new_object&predefinedAcl=publicReadWrite", null); - assertEquals(request.getHeader("Content-Type"), "text/plain"); - assertEquals(new String(request.getBody(), UTF_8), testPayload); - } - - public void delete() throws Exception { - server.enqueue(new MockResponse()); - - // TODO: Should this be returning True on not found? - assertTrue(objectApi().deleteObject("test", "object_name")); - assertSent(server, "DELETE", "/storage/v1/b/test/o/object_name", null); - } - - public void delete_encoded() throws Exception { - server.enqueue(new MockResponse()); - - // TODO: Should this be returning True on not found? - assertTrue(objectApi().deleteObject("test", Strings2.urlEncode("dir/object name"))); - assertSent(server, "DELETE", "/storage/v1/b/test/o/dir%2Fobject%20name", null); - } - - public void list() throws Exception { - server.enqueue(jsonResponse("/object_list.json")); - - assertEquals(objectApi().listObjects("test"), - new ParseGoogleCloudStorageObjectListTest().expected()); - assertSent(server, "GET", "/storage/v1/b/test/o"); - } - - public void list_with_options() throws Exception { - server.enqueue(jsonResponse("/object_list.json")); - ListObjectOptions options = new ListObjectOptions() - .delimiter("-") - .prefix("test") - .versions(Boolean.TRUE) - .pageToken("asdf") - .maxResults(4) - .projection(Projection.FULL); - assertEquals(objectApi().listObjects("test", options), - new ParseGoogleCloudStorageObjectListTest().expected()); - assertSent(server, "GET", "/storage/v1/b/test/o?" + - "delimiter=-&prefix=test&versions=true&pageToken=asdf&maxResults=4&projection=full"); - } - - public void update() throws Exception { - server.enqueue(jsonResponse("/object_get.json")); - - ObjectTemplate template = new ObjectTemplate().name("file_name").size((long) 1000).crc32c("crc32c"); - - assertEquals(objectApi().updateObject("test", "file_name", template), - new ParseGoogleCloudStorageObject().expected()); - assertSent(server, "PUT", "/storage/v1/b/test/o/file_name", APPLICATION_JSON, - "{" + - " \"name\": \"file_name\"," + - " \"size\": 1000," + - " \"crc32c\": \"crc32c\"" + - "}"); - } - - public void patch() throws Exception { - server.enqueue(jsonResponse("/object_get.json")); - - ObjectTemplate template = new ObjectTemplate().name("file_name").size((long) 1000).crc32c("crc32c"); - - assertEquals(objectApi().patchObject("test", "file_name", template), - new ParseGoogleCloudStorageObject().expected()); - assertSent(server, "PATCH", "/storage/v1/b/test/o/file_name", APPLICATION_JSON, - "{" + - " \"name\": \"file_name\"," + - " \"size\": 1000," + - " \"crc32c\": \"crc32c\"" + - "}"); - } - - public void compose() throws Exception { - server.enqueue(jsonResponse("/object_get.json")); - - ObjectTemplate template = new ObjectTemplate().name("file_name").size((long) 1000).crc32c("crc32c"); - - ComposeObjectTemplate composeTemplate = ComposeObjectTemplate.builder() - .fromGoogleCloudStorageObject(new ParseGoogleCloudStorageObjectListTest().expected()) - .destination(template).build(); - - assertEquals(objectApi().composeObjects("destination_bucket", "destination_object", composeTemplate), - new ParseGoogleCloudStorageObject().expected()); - assertSent(server, "POST", "/storage/v1/b/destination_bucket/o/destination_object/compose", APPLICATION_JSON, - stringFromResource("/object_compose_request.json")); - } - - public void compose_with_options() throws Exception { - server.enqueue(jsonResponse("/object_get.json")); - - ObjectTemplate template = new ObjectTemplate().name("file_name").size((long) 1000).crc32c("crc32c"); - ComposeObjectTemplate composeTemplate = ComposeObjectTemplate.builder() - .fromGoogleCloudStorageObject(new ParseGoogleCloudStorageObjectListTest().expected()) - .destination(template).build(); - - ComposeObjectOptions options = new ComposeObjectOptions() - .destinationPredefinedAcl(DestinationPredefinedAcl.BUCKET_OWNER_FULLCONTROL) - .ifMetagenerationMatch((long) 15); - - assertEquals(objectApi().composeObjects("destination_bucket", "destination_object", composeTemplate, options), - new ParseGoogleCloudStorageObject().expected()); - assertSent(server, "POST", "/storage/v1/b/destination_bucket/o/destination_object/compose" + - "?destinationPredefinedAcl=bucketOwnerFullcontrol&ifMetagenerationMatch=15", APPLICATION_JSON, - stringFromResource("/object_compose_request.json")); - } - - public void copy() throws Exception { - server.enqueue(jsonResponse("/object_get.json")); - - assertEquals(objectApi().copyObject("destination_bucket", "destination_object", "source_bucket", "source_object"), - new ParseGoogleCloudStorageObject().expected()); - assertSent(server, "POST", "/storage/v1/b/source_bucket/o/source_object/copyTo" + - "/b/destination_bucket/o/destination_object", APPLICATION_JSON); - } - - public void copy_update_metadata() throws Exception { - server.enqueue(jsonResponse("/object_get.json")); - - ObjectTemplate template = new ObjectTemplate().name("file_name").size((long) 1000).crc32c("crc32c"); - - assertEquals(objectApi().copyObject("destination_bucket", "destination_object", "source_bucket", "source_object", template), - new ParseGoogleCloudStorageObject().expected()); - assertSent(server, "POST", "/storage/v1/b/source_bucket/o/source_object/copyTo" + - "/b/destination_bucket/o/destination_object", APPLICATION_JSON, "{" + - " \"name\": \"file_name\"," + - " \"size\": 1000," + - " \"crc32c\": \"crc32c\"" + - "}"); - } - - public void copy_with_options() throws Exception { - server.enqueue(jsonResponse("/object_get.json")); - - CopyObjectOptions options = new CopyObjectOptions().ifGenerationMatch((long) 50); - - assertEquals(objectApi().copyObject("destination_bucket", "destination_object", "source_bucket", "source_object", options), - new ParseGoogleCloudStorageObject().expected()); - assertSent(server, "POST", "/storage/v1/b/source_bucket/o/source_object/copyTo" + - "/b/destination_bucket/o/destination_object?ifGenerationMatch=50", APPLICATION_JSON); - } - - public void multipartUpload() throws Exception { - server.enqueue(jsonResponse("/object_get.json")); - - PayloadEnclosing p = new PayloadEnclosingImpl(); - String testPayload = "this is a test payload for upload!"; - p.setPayload(testPayload.getBytes()); - - ObjectTemplate template = new ObjectTemplate().name("file_name").size((long) testPayload.length()).crc32c("crc32c").contentType(MediaType.ANY_TEXT_TYPE); - - assertEquals(objectApi().multipartUpload("bucket_name", template, p.getPayload()), - new ParseGoogleCloudStorageObject().expected()); - - RecordedRequest request = assertSent(server, "POST", "/upload/storage/v1/b/bucket_name/o?uploadType=multipart", null); - assertTrue(new String(request.getBody(), UTF_8).contains(testPayload)); - - assertTrue(new String(request.getBody(), UTF_8).contains(testPayload)); - //TODO: this should be a more robust assertion about the formatting of the payload - } - - public void rewrite() throws Exception { - server.enqueue(jsonResponse("/object_rewrite.json")); - - assertEquals(objectApi().rewriteObjects("destinationBucket", "destinationObject", "sourceBucket", "sourceObject"), - new ParseObjectRewriteResponse().expected()); - - assertSent(server, "POST", "/storage/v1/b/sourceBucket/o/sourceObject/rewriteTo/b/destinationBucket/o/destinationObject"); - } - - public void rewriteWithOptions() throws Exception { - server.enqueue(jsonResponse("/object_rewrite.json")); - - RewriteObjectOptions options = new RewriteObjectOptions.Builder().rewriteToken("rewriteToken"); - assertEquals(objectApi().rewriteObjects("destinationBucket", "destinationObject", "sourceBucket", "sourceObject", options), - new ParseObjectRewriteResponse().expected()); - - assertSent(server, "POST", - "/storage/v1/b/sourceBucket/o/sourceObject/rewriteTo/b/destinationBucket/o/destinationObject?rewriteToken=rewriteToken"); - } - - public ObjectApi objectApi(){ - return api().getObjectApi(); - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/a4acb11f/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ResumableUploadApiLiveTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ResumableUploadApiLiveTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ResumableUploadApiLiveTest.java deleted file mode 100644 index 441c255..0000000 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/features/ResumableUploadApiLiveTest.java +++ /dev/null @@ -1,177 +0,0 @@ -/* - * 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.jclouds.googlecloudstorage.features; - -import static javax.ws.rs.core.Response.Status.CREATED; -import static javax.ws.rs.core.Response.Status.OK; -import static org.assertj.core.api.Assertions.assertThat; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotEquals; -import static org.testng.Assert.assertNotNull; - -import java.io.IOException; -import java.util.UUID; - -import org.jclouds.googlecloudstorage.domain.Bucket; -import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.ObjectRole; -import org.jclouds.googlecloudstorage.domain.ObjectAccessControls; -import org.jclouds.googlecloudstorage.domain.ResumableUpload; -import org.jclouds.googlecloudstorage.domain.templates.BucketTemplate; -import org.jclouds.googlecloudstorage.domain.templates.ObjectTemplate; -import org.jclouds.googlecloudstorage.internal.BaseGoogleCloudStorageApiLiveTest; -import org.jclouds.io.Payloads; -import org.jclouds.io.payloads.ByteSourcePayload; -import org.jclouds.utils.TestUtils; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -import com.google.common.io.ByteSource; - -public class ResumableUploadApiLiveTest extends BaseGoogleCloudStorageApiLiveTest { - - private static final String BUCKET_NAME = "resumableuploadbucket" + UUID.randomUUID(); - private static final String UPLOAD_OBJECT_NAME = "jcloudslogo.jpg"; - private static final String CHUNKED_OBJECT_NAME = "jclouds.pdf"; - private static final int INCOMPLETE = 308; - private static final long MIN_CHUNK_SIZE = 256 * 1024; // Min allowed size for a chunk - - private ResumableUploadApi api() { - return api.getResumableUploadApi(); - } - - @BeforeClass - private void createBucket() { - BucketTemplate template = new BucketTemplate().name(BUCKET_NAME); - Bucket bucket = api.getBucketApi().createBucket(PROJECT_NUMBER, template); - assertNotNull(bucket); - } - - @Test(groups = "live") - public void testResumableJpegUpload() throws IOException { - - // Read Object - long contentLength = MIN_CHUNK_SIZE * 4; - ByteSource byteSource = TestUtils.randomByteSource().slice(0, contentLength); - - // Initialize resumableUpload with metadata. ObjectTemaplete must provide the name - ObjectAccessControls oacl = ObjectAccessControls.builder().bucket(BUCKET_NAME).entity("allUsers") - .role(ObjectRole.OWNER).build(); - - ObjectTemplate template = new ObjectTemplate(); - template.contentType("image/jpeg").addAcl(oacl).size(contentLength).name(UPLOAD_OBJECT_NAME) - .contentLanguage("en").contentDisposition("attachment"); - - ResumableUpload initResponse = api().initResumableUpload(BUCKET_NAME, "image/jpeg", contentLength, template); - - assertNotNull(initResponse); - assertEquals(initResponse.statusCode(), OK.getStatusCode()); - assertNotNull(initResponse.uploadId()); - - String uploadId = initResponse.uploadId(); - - // Upload the payload - ByteSourcePayload payload = Payloads.newByteSourcePayload(byteSource); - ResumableUpload uploadResponse = api().upload(BUCKET_NAME, uploadId, "image/jpeg", byteSource.read().length + "", - payload); - - assertEquals(uploadResponse.statusCode(), OK.getStatusCode()); - - // CheckStatus - ResumableUpload status = api().checkStatus(BUCKET_NAME, uploadId, "bytes */*"); - - int code = status.statusCode(); - assertNotEquals(code, INCOMPLETE); - } - - @Test(groups = "live") - public void testResumableChunkedUpload() throws IOException, InterruptedException { - - // Read Object - long contentLength = MIN_CHUNK_SIZE * 3; - ByteSource byteSource = TestUtils.randomByteSource().slice(0, contentLength); - - // Initialize resumableUpload with metadata. ObjectTemaplete must provide the name - ObjectAccessControls oacl = ObjectAccessControls.builder().bucket(BUCKET_NAME).entity("allUsers") - .role(ObjectRole.OWNER).build(); - - ObjectTemplate template = new ObjectTemplate(); - template.contentType("application/pdf").addAcl(oacl).size(contentLength).name(CHUNKED_OBJECT_NAME) - .contentLanguage("en").contentDisposition("attachment"); - - ResumableUpload initResponse = api().initResumableUpload(BUCKET_NAME, "application/pdf", contentLength, template); - - assertNotNull(initResponse); - assertEquals(initResponse.statusCode(), OK.getStatusCode()); - assertNotNull(initResponse.uploadId()); - - // Get the upload_id for the session - String uploadId = initResponse.uploadId(); - - // Check the status first - ResumableUpload status = api().checkStatus(BUCKET_NAME, uploadId, "bytes */*"); - int code = status.statusCode(); - assertEquals(code, INCOMPLETE); - - // Uploads in 2 chunks. - long totalSize = byteSource.read().length; - long offset = 0; - // Size of the first chunk - long chunkSize = MIN_CHUNK_SIZE * 2; - - // Uploading First chunk - ByteSourcePayload payload = Payloads.newByteSourcePayload(byteSource.slice(offset, chunkSize)); - long length = byteSource.slice(offset, chunkSize).size(); - String Content_Range = generateContentRange(0L, length - 1, totalSize); - ResumableUpload uploadResponse = api().chunkUpload(BUCKET_NAME, uploadId, "application/pdf", length, - Content_Range, payload); - - int code2 = uploadResponse.statusCode(); - assertEquals(code2, INCOMPLETE); - - // Read uploaded length - long lowerValue = uploadResponse.rangeLowerValue(); - long uploaded = uploadResponse.rangeUpperValue(); - - assertThat(lowerValue).isEqualTo(0); - assertThat(uploaded).isEqualTo(chunkSize - 1); // confirms chunk is totally uploaded - - long resumeLength = totalSize - (uploaded + 1); - - // 2nd chunk - ByteSourcePayload payload2 = Payloads.newByteSourcePayload(byteSource.slice(uploaded + 1, - byteSource.read().length - uploaded - 1)); - // Upload the 2nd chunk - String Content_Range2 = generateContentRange(uploaded + 1, totalSize - 1, totalSize); - ResumableUpload resumeResponse = api().chunkUpload(BUCKET_NAME, uploadId, "application/pdf", resumeLength, - Content_Range2, payload2); - - int code3 = resumeResponse.statusCode(); - assertThat(code3).isIn(OK.getStatusCode(), CREATED.getStatusCode()); // 200 or 201 if upload succeeded - } - - @AfterClass - private void deleteObjectsandBucket() { - api.getObjectApi().deleteObject(BUCKET_NAME, UPLOAD_OBJECT_NAME); - api.getObjectApi().deleteObject(BUCKET_NAME, CHUNKED_OBJECT_NAME); - api.getBucketApi().deleteBucket(BUCKET_NAME); - } - - private static String generateContentRange(Long lowerLimit, Long upperLimit, Long totalSize) { - return "bytes " + lowerLimit + "-" + upperLimit + "/" + totalSize; - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/a4acb11f/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/handlers/GoogleCloudStorageErrorHandlerTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/handlers/GoogleCloudStorageErrorHandlerTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/handlers/GoogleCloudStorageErrorHandlerTest.java deleted file mode 100644 index 668eadb..0000000 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/handlers/GoogleCloudStorageErrorHandlerTest.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * 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.jclouds.googlecloudstorage.handlers; - -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.easymock.EasyMock.reportMatcher; -import static org.easymock.EasyMock.verify; - -import java.net.URI; - -import org.easymock.IArgumentMatcher; -import org.jclouds.http.HttpCommand; -import org.jclouds.http.HttpRequest; -import org.jclouds.http.HttpResponse; -import org.jclouds.rest.AuthorizationException; -import org.jclouds.rest.ResourceNotFoundException; -import org.testng.annotations.Test; - -@Test(groups = "unit", testName = "GoogleStorageErrorHandlerTest") -public class GoogleCloudStorageErrorHandlerTest { - - @Test - public void test409MakesIllegalStateException() { - assertCodeMakes("POST", URI.create("https://www.googleapis.com/storage/v1"), 409, "HTTP/1.1 409 Conflict", - "\"{\"code\":\"InvalidState\",\"message\":\"An incompatible transition has already been queued for this" - + " resource\"}\"", IllegalStateException.class); - } - - @Test - public void test401MakesAuthorizationException() { - assertCodeMakes("POST", URI.create("https://www.googleapis.com/storage/v1"), 401, "HTTP/1.1 401 Unauthorized", - "Login Required", AuthorizationException.class); - } - - @Test - public void test403MakesAuthorizationException() { - assertCodeMakes("POST", URI.create("https://www.googleapis.com/storage/v1"), 403, "HTTP/1.1 403 Forbidden", - "Login Required", AuthorizationException.class); - } - - @Test - public void test404MakesResourceNotFoundException() { - assertCodeMakes("POST", URI.create("https://www.googleapis.com/storage/v1"), 404, "HTTP/1.1 404 Not Found", - "Not Found", ResourceNotFoundException.class); - } - - private void assertCodeMakes(String method, URI uri, int statusCode, String message, String content, - Class<? extends Exception> expected) { - assertCodeMakes(method, uri, statusCode, message, "application/json", content, expected); - } - - private void assertCodeMakes(String method, URI uri, int statusCode, String message, String contentType, - String content, Class<? extends Exception> expected) { - - GoogleCloudStorageErrorHandler function = new GoogleCloudStorageErrorHandler(); - - HttpCommand command = createMock(HttpCommand.class); - HttpRequest request = HttpRequest.builder().method(method).endpoint(uri).build(); - HttpResponse response = HttpResponse.builder().statusCode(statusCode).message(message).payload(content).build(); - response.getPayload().getContentMetadata().setContentType(contentType); - - expect(command.getCurrentRequest()).andReturn(request).atLeastOnce(); - command.setException(classEq(expected)); - - replay(command); - - function.handleError(command, response); - - verify(command); - } - - public static Exception classEq(final Class<? extends Exception> in) { - reportMatcher(new IArgumentMatcher() { - - @Override - public void appendTo(StringBuffer buffer) { - buffer.append("classEq("); - buffer.append(in); - buffer.append(")"); - } - - @Override - public boolean matches(Object arg) { - return arg.getClass() == in; - } - - }); - return null; - } - -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/a4acb11f/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageApiExpectTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageApiExpectTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageApiExpectTest.java deleted file mode 100644 index 088932b..0000000 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageApiExpectTest.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * 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.jclouds.googlecloudstorage.internal; - -import java.util.Properties; - -import org.jclouds.googlecloudstorage.GoogleCloudStorageApi; - -public class BaseGoogleCloudStorageApiExpectTest extends BaseGoogleCloudStorageExpectTest<GoogleCloudStorageApi> { - - @Override protected Properties setupProperties() { - Properties properties = super.setupProperties(); - properties.put("google-cloud-storage.identity", "JcloudTest"); - return properties; - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/a4acb11f/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageApiLiveTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageApiLiveTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageApiLiveTest.java deleted file mode 100644 index ea4e97f..0000000 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageApiLiveTest.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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.jclouds.googlecloudstorage.internal; - -import java.util.Properties; - -import org.jclouds.apis.BaseApiLiveTest; -import org.jclouds.googlecloud.config.CurrentProject; -import org.jclouds.googlecloud.internal.TestProperties; -import org.jclouds.googlecloudstorage.GoogleCloudStorageApi; -import org.jclouds.googlecloudstorage.GoogleCloudStorageProviderMetadata; -import org.jclouds.providers.ProviderMetadata; - -import com.google.inject.Injector; -import com.google.inject.Module; - -public class BaseGoogleCloudStorageApiLiveTest extends BaseApiLiveTest<GoogleCloudStorageApi> { - - protected static String PROJECT_NUMBER; - - protected BaseGoogleCloudStorageApiLiveTest() { - provider = "google-cloud-storage"; - } - - @Override protected ProviderMetadata createProviderMetadata(){ - return new GoogleCloudStorageProviderMetadata(); - } - - @Override protected Properties setupProperties() { - TestProperties.setGoogleCredentialsFromJson(provider); - Properties props = TestProperties.apply(provider, super.setupProperties()); - PROJECT_NUMBER = CurrentProject.ClientEmail.toProjectNumber(System.getProperty("test.google-cloud-storage.identity")); - return props; - } - - @Override protected GoogleCloudStorageApi create(Properties props, Iterable<Module> modules) { - Injector injector = newBuilder().modules(modules).overrides(props).buildInjector(); - return injector.getInstance(GoogleCloudStorageApi.class); - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/a4acb11f/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageApiMockTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageApiMockTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageApiMockTest.java deleted file mode 100644 index c303145..0000000 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageApiMockTest.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * 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.jclouds.googlecloudstorage.internal; - -import static com.google.common.base.Charsets.UTF_8; -import static com.google.common.base.Throwables.propagate; -import static com.google.common.util.concurrent.MoreExecutors.sameThreadExecutor; -import static javax.ws.rs.core.MediaType.APPLICATION_JSON; -import static org.jclouds.googlecloud.config.GoogleCloudProperties.CREDENTIAL_TYPE; -import static org.jclouds.googlecloud.config.GoogleCloudProperties.PROJECT_NAME; -import static org.jclouds.oauth.v2.config.CredentialType.BEARER_TOKEN_CREDENTIALS; -import static org.jclouds.util.Strings2.toStringAndClose; -import static org.testng.Assert.assertEquals; - -import java.io.IOException; -import java.util.Properties; -import java.util.Set; -import java.util.concurrent.atomic.AtomicInteger; - -import org.jclouds.ContextBuilder; -import org.jclouds.concurrent.config.ExecutorServiceModule; -import org.jclouds.googlecloudstorage.GoogleCloudStorageApi; -import org.jclouds.googlecloudstorage.GoogleCloudStorageProviderMetadata; -import org.jclouds.http.okhttp.config.OkHttpCommandExecutorServiceModule; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; - -import com.google.common.collect.ImmutableSet; -import com.google.gson.JsonParser; -import com.google.inject.AbstractModule; -import com.squareup.okhttp.mockwebserver.MockResponse; -import com.squareup.okhttp.mockwebserver.MockWebServer; -import com.squareup.okhttp.mockwebserver.RecordedRequest; - -/** - * Tests need to run {@code singleThreaded = true} as otherwise tests will clash on the server field. - * Sharing the server field means less code to write. - */ -public class BaseGoogleCloudStorageApiMockTest { - - protected final String identity = "761326798069-r5mljlln1rd4lrbhg75efgigp36m7...@developer.gserviceaccount.com"; - protected final String credential = "1/8xbJqaOZXSUZbHLl5EOtu1pxz3fmmetKx9W8CV4t79M"; // Fake Bearer Token - - protected MockWebServer server; - - protected GoogleCloudStorageApi api() { - return builder().buildApi(GoogleCloudStorageApi.class); - } - - - protected ContextBuilder builder() { - Properties overrides = new Properties(); - overrides.put(PROJECT_NAME, "party"); - overrides.put(CREDENTIAL_TYPE, BEARER_TOKEN_CREDENTIALS.toString()); - return ContextBuilder.newBuilder(new GoogleCloudStorageProviderMetadata()) - .credentials(identity, credential) - .endpoint(url("")) - .overrides(overrides) - .modules(modules); - } - - private final Set<AbstractModule> modules = ImmutableSet - .of(new ExecutorServiceModule(sameThreadExecutor()), new OkHttpCommandExecutorServiceModule()); - - - final AtomicInteger suffix = new AtomicInteger(); - - @BeforeMethod - public void start() throws IOException { - suffix.set(0); - server = new MockWebServer(); - server.play(); - } - - protected String url(String path) { - return server.getUrl(path).toString(); - } - - @AfterMethod(alwaysRun = true) - public void stop() throws IOException { - server.shutdown(); - } - - protected MockResponse jsonResponse(String resource) { - return new MockResponse().addHeader("Content-Type", "application/json").setBody(stringFromResource(resource)); - } - - protected MockResponse response404(){ - return new MockResponse().setStatus("HTTP/1.1 404 Not Found"); - } - - protected String stringFromResource(String resourceName) { - try { - return toStringAndClose(getClass().getResourceAsStream(resourceName)); - } catch (IOException e) { - throw propagate(e); - } - } - - protected RecordedRequest assertSent(MockWebServer server, String method, String path) throws InterruptedException { - return assertSent(server, method, path, APPLICATION_JSON); - } - protected RecordedRequest assertSent(MockWebServer server, String method, String path, String type) throws InterruptedException { - RecordedRequest request = server.takeRequest(); - assertEquals(request.getMethod(), method); - assertEquals(request.getPath(), path); - if (type != null){ - assertEquals(request.getHeader("Accept"), type); - } - assertEquals(request.getHeader("Authorization"), "Bearer " + credential); - return request; - } - - protected RecordedRequest assertSent(MockWebServer server, String method, String path, String type, String json) - throws InterruptedException { - RecordedRequest request = assertSent(server, method, path, type); - assertEquals(request.getHeader("Content-Type"), APPLICATION_JSON); - assertEquals(parser.parse(new String(request.getBody(), UTF_8)), parser.parse(json)); - return request; - } - - /** So that we can ignore formatting. */ - private final JsonParser parser = new JsonParser(); -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/a4acb11f/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageExpectTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageExpectTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageExpectTest.java deleted file mode 100644 index dd3c644..0000000 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageExpectTest.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * 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.jclouds.googlecloudstorage.internal; - -import static com.google.common.base.Charsets.UTF_8; -import static com.google.common.base.Throwables.propagate; -import static com.google.common.io.BaseEncoding.base64Url; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.expectLastCall; -import static org.easymock.EasyMock.replay; -import static org.jclouds.crypto.Pems.privateKeySpec; -import static org.jclouds.crypto.Pems.publicKeySpec; -import static org.jclouds.crypto.PemsTest.PRIVATE_KEY; -import static org.jclouds.crypto.PemsTest.PUBLIC_KEY; -import static org.jclouds.oauth.v2.config.OAuthProperties.JWS_ALG; - -import java.io.IOException; -import java.net.URI; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.NoSuchAlgorithmException; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.spec.InvalidKeySpecException; -import java.util.Properties; -import java.util.concurrent.atomic.AtomicInteger; - -import javax.ws.rs.core.MediaType; - -import org.jclouds.crypto.Crypto; -import org.jclouds.googlecloudstorage.GoogleCloudStorageProviderMetadata; -import org.jclouds.http.HttpRequest; -import org.jclouds.http.HttpResponse; -import org.jclouds.io.Payload; -import org.jclouds.io.Payloads; -import org.jclouds.oauth.v2.filters.JWTBearerTokenFlow; -import org.jclouds.oauth.v2.filters.TestJWTBearerTokenFlow; -import org.jclouds.providers.ProviderMetadata; -import org.jclouds.rest.internal.BaseRestApiExpectTest; - -import com.google.common.base.Charsets; -import com.google.common.base.Joiner; -import com.google.common.base.Supplier; -import com.google.common.base.Throwables; -import com.google.common.io.ByteSource; -import com.google.common.io.Resources; -import com.google.inject.Binder; -import com.google.inject.Module; -import com.google.inject.TypeLiteral; - -public class BaseGoogleCloudStorageExpectTest<T> extends BaseRestApiExpectTest<T> { - protected static final String STORAGE_READONLY_SCOPE = "https://www.googleapis.com/auth/devstorage.read_only"; - - protected static final String STORAGE_READWRITE_SCOPE = "https://www.googleapis.com/auth/devstorage.read_write"; - - protected static final String STORAGE_FULLCONTROL_SCOPE = "https://www.googleapis.com/auth/devstorage.full_control"; - - private static final String header = "{\"alg\":\"none\",\"typ\":\"JWT\"}"; - - private static final String CLAIMS_TEMPLATE = "{" + "\"iss\":\"JcloudTest\"," + "\"scope\":\"%s\"," - + "\"aud\":\"https://accounts.google.com/o/oauth2/token\"," + "\"exp\":3600," + "\"iat\":0}"; - - protected static final String TOKEN = "1/8xbJqaOZXSUZbHLl5EOtu1pxz3fmmetKx9W8CV4t79M"; - - protected static final HttpResponse TOKEN_RESPONSE = HttpResponse - .builder() - .statusCode(200) - .payload(payloadFromString("{\n" + " \"access_token\" : \"" + TOKEN + "\",\n" - + " \"token_type\" : \"Bearer\",\n" + " \"expires_in\" : 3600\n" + "}")).build(); - - protected BaseGoogleCloudStorageExpectTest() { - provider = "google-cloud-storage"; - } - - @Override protected Module createModule() { - return new Module() { - @Override - public void configure(Binder binder) { - // Predictable time - binder.bind(JWTBearerTokenFlow.class).to(TestJWTBearerTokenFlow.class); - try { - KeyFactory keyfactory = KeyFactory.getInstance("RSA"); - PrivateKey privateKey = keyfactory.generatePrivate(privateKeySpec(ByteSource.wrap(PRIVATE_KEY - .getBytes(UTF_8)))); - PublicKey publicKey = keyfactory - .generatePublic(publicKeySpec(ByteSource.wrap(PUBLIC_KEY.getBytes(UTF_8)))); - KeyPair keyPair = new KeyPair(publicKey, privateKey); - final Crypto crypto = createMock(Crypto.class); - KeyPairGenerator rsaKeyPairGenerator = createMock(KeyPairGenerator.class); - final SecureRandom secureRandom = createMock(SecureRandom.class); - expect(crypto.rsaKeyPairGenerator()).andReturn(rsaKeyPairGenerator).anyTimes(); - rsaKeyPairGenerator.initialize(2048, secureRandom); - expectLastCall().anyTimes(); - expect(rsaKeyPairGenerator.genKeyPair()).andReturn(keyPair).anyTimes(); - replay(crypto, rsaKeyPairGenerator, secureRandom); - binder.bind(Crypto.class).toInstance(crypto); - binder.bind(SecureRandom.class).toInstance(secureRandom); - } catch (NoSuchAlgorithmException e) { - propagate(e); - } catch (InvalidKeySpecException e) { - propagate(e); - } catch (IOException e) { - propagate(e); - } - // predictable node names - final AtomicInteger suffix = new AtomicInteger(); - binder.bind(new TypeLiteral<Supplier<String>>() { - }).toInstance(new Supplier<String>() { - @Override - public String get() { - return suffix.getAndIncrement() + ""; - } - }); - } - }; - } - - @Override protected Properties setupProperties() { - Properties props = super.setupProperties(); - // use no sig algorithm for expect tests (means no credential is required either) - props.put(JWS_ALG, "none"); - return props; - } - - @Override protected ProviderMetadata createProviderMetadata(){ - return new GoogleCloudStorageProviderMetadata(); - } - - @Override - protected HttpRequestComparisonType compareHttpRequestAsType(HttpRequest input) { - HttpRequestComparisonType reqType = HttpRequestComparisonType.DEFAULT; - if (input.getPayload() != null) { - if (MediaType.APPLICATION_JSON.toString().equals(input.getPayload().getContentMetadata().getContentType())) { - reqType = HttpRequestComparisonType.JSON; - } - } - return reqType; - } - - protected HttpRequest requestForScopes(String... scopes) { - String claims = String.format(CLAIMS_TEMPLATE, Joiner.on(",").join(scopes)); - - String payload = "grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&" + - // Base64 Encoded Header - "assertion=" + base64Url().omitPadding().encode(header.getBytes(UTF_8)) + "." + - // Base64 Encoded Claims - base64Url().omitPadding().encode(claims.getBytes(UTF_8)) + "."; - - return HttpRequest.builder().method("POST").endpoint(URI.create("https://accounts.google.com/o/oauth2/token")) - .addHeader("Accept", MediaType.APPLICATION_JSON) - .payload(payloadFromStringWithContentType(payload, "application/x-www-form-urlencoded")).build(); - } - - protected Payload staticPayloadFromResource(String resource) { - try { - return Payloads.newStringPayload(Resources.toString(Resources.getResource(getClass(), resource), Charsets.UTF_8)); - } catch (IOException ex) { - throw Throwables.propagate(ex); - } - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/a4acb11f/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageParseTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageParseTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageParseTest.java deleted file mode 100644 index 52820e6..0000000 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/internal/BaseGoogleCloudStorageParseTest.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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.jclouds.googlecloudstorage.internal; - -import java.util.Date; - -import org.jclouds.date.internal.SimpleDateFormatDateService; -import org.jclouds.googlecloudstorage.config.GoogleCloudStorageParserModule; -import org.jclouds.json.BaseItemParserTest; -import org.jclouds.json.config.GsonModule; - -import com.google.inject.Guice; -import com.google.inject.Injector; - -public abstract class BaseGoogleCloudStorageParseTest<T> extends BaseItemParserTest<T> { - - @Override protected Injector injector() { - return Guice.createInjector(new GsonModule(), new GoogleCloudStorageParserModule()); - } - - protected static Date parse(String iso8601) { - return new SimpleDateFormatDateService().iso8601DateParse(iso8601); - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/a4acb11f/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketAclGetTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketAclGetTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketAclGetTest.java deleted file mode 100644 index 4544128..0000000 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketAclGetTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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.jclouds.googlecloudstorage.parse; - -import javax.ws.rs.Consumes; -import javax.ws.rs.core.MediaType; - -import org.jclouds.googlecloudstorage.domain.BucketAccessControls; -import org.jclouds.googlecloudstorage.domain.BucketAccessControls.Role; -import org.jclouds.googlecloudstorage.internal.BaseGoogleCloudStorageParseTest; - -public class BucketAclGetTest extends BaseGoogleCloudStorageParseTest<BucketAccessControls> { - - @Override - public String resource() { - return "/bucket_acl_get.json"; - } - - @Override - @Consumes(MediaType.APPLICATION_JSON) - public BucketAccessControls expected() { - return BucketAccessControls.builder().bucket("jcloudstestbucket").entity("allUsers").role(Role.READER) - .id("jcloudstestbucket/allUsers").build(); - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/a4acb11f/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketAclInsertTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketAclInsertTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketAclInsertTest.java deleted file mode 100644 index d7cac85..0000000 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketAclInsertTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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.jclouds.googlecloudstorage.parse; - -import javax.ws.rs.Consumes; -import javax.ws.rs.core.MediaType; - -import org.jclouds.googlecloudstorage.domain.BucketAccessControls; -import org.jclouds.googlecloudstorage.domain.BucketAccessControls.Role; -import org.jclouds.googlecloudstorage.internal.BaseGoogleCloudStorageParseTest; - -public class BucketAclInsertTest extends BaseGoogleCloudStorageParseTest<BucketAccessControls> { - - @Override - public String resource() { - return "/bucket_acl_insert_response.json"; - } - - @Override - @Consumes(MediaType.APPLICATION_JSON) - public BucketAccessControls expected() { - return BucketAccessControls - .builder() - .id("jcloudstestbucket/allAuthenticatedUsers") - .bucket("jcloudstestbucket").entity("allAuthenticatedUsers").role(Role.WRITER).build(); - - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/a4acb11f/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketAclListTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketAclListTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketAclListTest.java deleted file mode 100644 index 3f6a0d4..0000000 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketAclListTest.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * 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.jclouds.googlecloudstorage.parse; - -import java.util.List; - -import javax.ws.rs.Consumes; -import javax.ws.rs.core.MediaType; - -import org.jclouds.googlecloudstorage.domain.BucketAccessControls; -import org.jclouds.googlecloudstorage.domain.BucketAccessControls.Role; -import org.jclouds.googlecloudstorage.domain.ProjectTeam; -import org.jclouds.googlecloudstorage.domain.ProjectTeam.Team; -import org.jclouds.googlecloudstorage.internal.BaseGoogleCloudStorageParseTest; -import org.jclouds.rest.annotations.SelectJson; - -import com.google.common.collect.ImmutableList; - -public class BucketAclListTest extends BaseGoogleCloudStorageParseTest<List<BucketAccessControls>> { - - private BucketAccessControls item_1 = BucketAccessControls.builder().id("jcloudstestbucket/allUsers") - .bucket("jcloudstestbucket").entity("allUsers").role(Role.READER).build(); - - private BucketAccessControls item_2 = BucketAccessControls - .builder() - .id("jcloudstestbucket/project-owners-1082289308625") - .projectTeam(ProjectTeam.create("1082289308625", Team.OWNERS)) - .bucket("jcloudstestbucket").entity("project-owners-1082289308625").role(Role.OWNER).build(); - - @Override - public String resource() { - return "/bucket_acl_list.json"; - } - - @Override - @Consumes(MediaType.APPLICATION_JSON) - @SelectJson("items") - public List<BucketAccessControls> expected() { - return ImmutableList.of(item_1, item_2); - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/a4acb11f/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketAclUpdateTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketAclUpdateTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketAclUpdateTest.java deleted file mode 100644 index b3548f2..0000000 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketAclUpdateTest.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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.jclouds.googlecloudstorage.parse; - -import javax.ws.rs.Consumes; -import javax.ws.rs.core.MediaType; - -import org.jclouds.googlecloudstorage.domain.BucketAccessControls; -import org.jclouds.googlecloudstorage.domain.BucketAccessControls.Role; -import org.jclouds.googlecloudstorage.internal.BaseGoogleCloudStorageParseTest; - -public class BucketAclUpdateTest extends BaseGoogleCloudStorageParseTest<BucketAccessControls> { - - @Override - public String resource() { - return "/bucket_acl_update_response.json"; - } - - @Override - @Consumes(MediaType.APPLICATION_JSON) - public BucketAccessControls expected() { - return BucketAccessControls.builder().id("jcloudstestbucket/allUsers") - .bucket("jcloudstestbucket").entity("allUsers").role(Role.OWNER).build(); - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/a4acb11f/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketUpdateTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketUpdateTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketUpdateTest.java deleted file mode 100644 index df28169..0000000 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/BucketUpdateTest.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * 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.jclouds.googlecloudstorage.parse; - -import javax.ws.rs.Consumes; -import javax.ws.rs.core.MediaType; - -import org.jclouds.date.internal.SimpleDateFormatDateService; -import org.jclouds.googlecloudstorage.domain.Bucket; -import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.Location; -import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.StorageClass; -import org.jclouds.googlecloudstorage.domain.Owner; -import org.jclouds.googlecloudstorage.internal.BaseGoogleCloudStorageParseTest; - -public class BucketUpdateTest extends BaseGoogleCloudStorageParseTest<Bucket> { - - @Override - public String resource() { - return "/bucket_update_response.json"; - } - - @Override - @Consumes(MediaType.APPLICATION_JSON) - public Bucket expected() { - return Bucket.create( - "bhashbucket", // id - "bhashbucket", // name - 1082289308625L, // projectNumber - new SimpleDateFormatDateService().iso8601DateParse("2014-06-02T19:19:41.112z"), // timeCreated - 204L, // metageneration - null, // acl - null, // defaultObjectAcl - Owner.create("project-owners-1082289308625", null), // owner - Location.US, // location - null, // website - null, // logging - null, // versioning - null, // cors - null, // lifeCycle - StorageClass.STANDARD // storageClass - ); - } -} http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/a4acb11f/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/DefaultObjectAclGetTest.java ---------------------------------------------------------------------- diff --git a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/DefaultObjectAclGetTest.java b/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/DefaultObjectAclGetTest.java deleted file mode 100644 index 0183d71..0000000 --- a/google-cloud-storage/src/test/java/org/jclouds/googlecloudstorage/parse/DefaultObjectAclGetTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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.jclouds.googlecloudstorage.parse; - -import javax.ws.rs.Consumes; -import javax.ws.rs.core.MediaType; - -import org.jclouds.googlecloudstorage.domain.DomainResourceReferences.ObjectRole; -import org.jclouds.googlecloudstorage.domain.ObjectAccessControls; -import org.jclouds.googlecloudstorage.domain.ProjectTeam; -import org.jclouds.googlecloudstorage.domain.ProjectTeam.Team; -import org.jclouds.googlecloudstorage.internal.BaseGoogleCloudStorageParseTest; - -public class DefaultObjectAclGetTest extends BaseGoogleCloudStorageParseTest<ObjectAccessControls> { - - @Override - public String resource() { - return "/default_object_acl_get.json"; - } - - @Override - @Consumes(MediaType.APPLICATION_JSON) - public ObjectAccessControls expected() { - return ObjectAccessControls.builder().entity("project-owners-1082289308625").role(ObjectRole.OWNER) - .projectTeam(ProjectTeam.create("1082289308625", Team.OWNERS)) - .build(); - } -}
