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();
-   }
-}

Reply via email to