JCLOUDS-1005: Factor out common test code
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/2f1e3696 Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/2f1e3696 Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/2f1e3696 Branch: refs/heads/master Commit: 2f1e3696fb90e4e7b7f33e334475d7fd24e978e5 Parents: 38ce54b Author: Andrew Gaul <[email protected]> Authored: Thu Jun 16 15:15:50 2016 -0700 Committer: Andrew Gaul <[email protected]> Committed: Thu Jun 16 16:12:32 2016 -0700 ---------------------------------------------------------------------- .../org/jclouds/b2/features/B2TestUtils.java | 139 +++++++++++++++++++ .../jclouds/b2/features/BucketApiMockTest.java | 120 +--------------- .../jclouds/b2/features/ObjectApiMockTest.java | 119 +--------------- 3 files changed, 149 insertions(+), 229 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/2f1e3696/b2/src/test/java/org/jclouds/b2/features/B2TestUtils.java ---------------------------------------------------------------------- diff --git a/b2/src/test/java/org/jclouds/b2/features/B2TestUtils.java b/b2/src/test/java/org/jclouds/b2/features/B2TestUtils.java new file mode 100644 index 0000000..8d3e3a0 --- /dev/null +++ b/b2/src/test/java/org/jclouds/b2/features/B2TestUtils.java @@ -0,0 +1,139 @@ +/* + * 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.b2.features; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.IOException; +import java.net.URL; +import java.util.Set; +import java.util.Properties; + +import org.jclouds.ContextBuilder; +import org.jclouds.concurrent.config.ExecutorServiceModule; +import org.jclouds.b2.B2Api; +import org.jclouds.util.Strings2; + +import com.google.common.base.Charsets; +import com.google.common.base.Throwables; +import com.google.common.collect.ImmutableSet; +import com.google.common.util.concurrent.MoreExecutors; +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; +import com.google.inject.Module; +import com.squareup.okhttp.mockwebserver.MockWebServer; +import com.squareup.okhttp.mockwebserver.RecordedRequest; + +final class B2TestUtils { + static B2Api api(String uri, String provider, Properties overrides) { + Set<Module> modules = ImmutableSet.<Module> of( + new ExecutorServiceModule(MoreExecutors.sameThreadExecutor())); + + return ContextBuilder.newBuilder(provider) + .credentials("ACCOUNT_ID", "APPLICATION_KEY") + .endpoint(uri) + .overrides(overrides) + .modules(modules) + .buildApi(B2Api.class); + } + + static B2Api api(String uri, String provider) { + return api(uri, provider, new Properties()); + } + + static MockWebServer createMockWebServer() throws IOException { + MockWebServer server = new MockWebServer(); + server.play(); + URL url = server.getUrl(""); + return server; + } + + static void assertAuthentication(MockWebServer server) { + assertThat(server.getRequestCount()).isGreaterThanOrEqualTo(1); + try { + assertThat(server.takeRequest().getRequestLine()).isEqualTo("GET /b2api/v1/b2_authorize_account HTTP/1.1"); + } catch (InterruptedException e) { + throw Throwables.propagate(e); + } + } + + /** + * Ensures the request has a json header for the proper REST methods. + * + * @param request + * @param method + * The request method (such as GET). + * @param path + * The path requested for this REST call. + * @see RecordedRequest + */ + static void assertRequest(RecordedRequest request, String method, String path) { + assertThat(request.getMethod()).isEqualTo(method); + assertThat(request.getPath()).isEqualTo(path); + } + + /** + * Ensures the request is json and has the same contents as the resource + * file provided. + * + * @param request + * @param method + * The request method (such as GET). + * @param resourceLocation + * The location of the resource file. Contents will be compared to + * the request body as JSON. + * @see RecordedRequest + */ + static void assertRequest(RecordedRequest request, String method, String path, String resourceLocation) { + assertRequest(request, method, path); + assertContentTypeIsJson(request); + JsonParser parser = new JsonParser(); + JsonElement requestJson; + try { + requestJson = parser.parse(new String(request.getBody(), Charsets.UTF_8)); + } catch (Exception e) { + throw Throwables.propagate(e); + } + JsonElement resourceJson = parser.parse(stringFromResource(resourceLocation)); + assertThat(requestJson).isEqualTo(resourceJson); + } + + /** + * Ensures the request has a json header. + * + * @param request + * @see RecordedRequest + */ + private static void assertContentTypeIsJson(RecordedRequest request) { + assertThat(request.getHeaders()).contains("Content-Type: application/json"); + } + + /** + * Get a string from a resource + * + * @param resourceName + * The name of the resource. + * @return The content of the resource + */ + static String stringFromResource(String resourceName) { + try { + return Strings2.toStringAndClose(BucketApiMockTest.class.getResourceAsStream(resourceName)); + } catch (IOException e) { + throw Throwables.propagate(e); + } + } +} http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/2f1e3696/b2/src/test/java/org/jclouds/b2/features/BucketApiMockTest.java ---------------------------------------------------------------------- diff --git a/b2/src/test/java/org/jclouds/b2/features/BucketApiMockTest.java b/b2/src/test/java/org/jclouds/b2/features/BucketApiMockTest.java index 09eb58a..5a6bf85 100644 --- a/b2/src/test/java/org/jclouds/b2/features/BucketApiMockTest.java +++ b/b2/src/test/java/org/jclouds/b2/features/BucketApiMockTest.java @@ -17,37 +17,22 @@ package org.jclouds.b2.features; import static org.assertj.core.api.Assertions.assertThat; +import static org.jclouds.b2.features.B2TestUtils.api; +import static org.jclouds.b2.features.B2TestUtils.assertAuthentication; +import static org.jclouds.b2.features.B2TestUtils.assertRequest; +import static org.jclouds.b2.features.B2TestUtils.createMockWebServer; +import static org.jclouds.b2.features.B2TestUtils.stringFromResource; -import java.io.IOException; -import java.net.URL; -import java.util.Set; -import java.util.Properties; - -import org.jclouds.ContextBuilder; -import org.jclouds.concurrent.config.ExecutorServiceModule; -import org.jclouds.b2.B2Api; import org.jclouds.b2.domain.Bucket; import org.jclouds.b2.domain.BucketList; import org.jclouds.b2.domain.BucketType; -import org.jclouds.util.Strings2; import org.testng.annotations.Test; -import com.google.common.base.Charsets; -import com.google.common.base.Throwables; -import com.google.common.collect.ImmutableSet; -import com.google.common.util.concurrent.MoreExecutors; -import com.google.gson.JsonElement; -import com.google.gson.JsonParser; -import com.google.inject.Module; import com.squareup.okhttp.mockwebserver.MockResponse; import com.squareup.okhttp.mockwebserver.MockWebServer; -import com.squareup.okhttp.mockwebserver.RecordedRequest; @Test(groups = "unit", testName = "BucketApiMockTest") public final class BucketApiMockTest { - private final Set<Module> modules = ImmutableSet.<Module> of( - new ExecutorServiceModule(MoreExecutors.sameThreadExecutor())); - public void testCreateBucket() throws Exception { MockWebServer server = createMockWebServer(); server.enqueue(new MockResponse().setBody(stringFromResource("/authorize_account_response.json"))); @@ -153,99 +138,4 @@ public final class BucketApiMockTest { server.shutdown(); } } - - public B2Api api(String uri, String provider, Properties overrides) { - return ContextBuilder.newBuilder(provider) - .credentials("ACCOUNT_ID", "APPLICATION_KEY") - .endpoint(uri) - .overrides(overrides) - .modules(modules) - .buildApi(B2Api.class); - } - - public B2Api api(String uri, String provider) { - return api(uri, provider, new Properties()); - } - - public static MockWebServer createMockWebServer() throws IOException { - MockWebServer server = new MockWebServer(); - server.play(); - URL url = server.getUrl(""); - return server; - } - - public void assertAuthentication(MockWebServer server) { - assertThat(server.getRequestCount()).isGreaterThanOrEqualTo(1); - try { - assertThat(server.takeRequest().getRequestLine()).isEqualTo("GET /b2api/v1/b2_authorize_account HTTP/1.1"); - } catch (InterruptedException e) { - throw Throwables.propagate(e); - } - } - - /** - * Ensures the request has a json header for the proper REST methods. - * - * @param request - * @param method - * The request method (such as GET). - * @param path - * The path requested for this REST call. - * @see RecordedRequest - */ - public void assertRequest(RecordedRequest request, String method, String path) { - assertThat(request.getMethod()).isEqualTo(method); - assertThat(request.getPath()).isEqualTo(path); - } - - /** - * Ensures the request is json and has the same contents as the resource - * file provided. - * - * @param request - * @param method - * The request method (such as GET). - * @param resourceLocation - * The location of the resource file. Contents will be compared to - * the request body as JSON. - * @see RecordedRequest - */ - public void assertRequest(RecordedRequest request, String method, String path, String resourceLocation) { - assertRequest(request, method, path); - assertContentTypeIsJson(request); - JsonParser parser = new JsonParser(); - JsonElement requestJson; - try { - requestJson = parser.parse(new String(request.getBody(), Charsets.UTF_8)); - } catch (Exception e) { - throw Throwables.propagate(e); - } - JsonElement resourceJson = parser.parse(stringFromResource(resourceLocation)); - assertThat(requestJson).isEqualTo(resourceJson); - } - - /** - * Ensures the request has a json header. - * - * @param request - * @see RecordedRequest - */ - private void assertContentTypeIsJson(RecordedRequest request) { - assertThat(request.getHeaders()).contains("Content-Type: application/json"); - } - - /** - * Get a string from a resource - * - * @param resourceName - * The name of the resource. - * @return The content of the resource - */ - public String stringFromResource(String resourceName) { - try { - return Strings2.toStringAndClose(getClass().getResourceAsStream(resourceName)); - } catch (IOException e) { - throw Throwables.propagate(e); - } - } } http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/2f1e3696/b2/src/test/java/org/jclouds/b2/features/ObjectApiMockTest.java ---------------------------------------------------------------------- diff --git a/b2/src/test/java/org/jclouds/b2/features/ObjectApiMockTest.java b/b2/src/test/java/org/jclouds/b2/features/ObjectApiMockTest.java index 100f909..8524210 100644 --- a/b2/src/test/java/org/jclouds/b2/features/ObjectApiMockTest.java +++ b/b2/src/test/java/org/jclouds/b2/features/ObjectApiMockTest.java @@ -18,23 +18,21 @@ package org.jclouds.b2.features; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.failBecauseExceptionWasNotThrown; +import static org.jclouds.b2.features.B2TestUtils.api; +import static org.jclouds.b2.features.B2TestUtils.assertAuthentication; +import static org.jclouds.b2.features.B2TestUtils.assertRequest; +import static org.jclouds.b2.features.B2TestUtils.createMockWebServer; +import static org.jclouds.b2.features.B2TestUtils.stringFromResource; -import java.io.IOException; import java.net.URI; -import java.net.URL; import java.util.Date; import java.util.Map; -import java.util.Set; -import java.util.Properties; -import org.jclouds.ContextBuilder; import org.jclouds.blobstore.ContainerNotFoundException; import org.jclouds.blobstore.KeyNotFoundException; -import org.jclouds.concurrent.config.ExecutorServiceModule; import org.jclouds.http.options.GetOptions; import org.jclouds.io.Payload; import org.jclouds.io.Payloads; -import org.jclouds.b2.B2Api; import org.jclouds.b2.domain.Action; import org.jclouds.b2.domain.B2Object; import org.jclouds.b2.domain.B2ObjectList; @@ -43,28 +41,16 @@ import org.jclouds.b2.domain.HideFileResponse; import org.jclouds.b2.domain.UploadFileResponse; import org.jclouds.b2.domain.UploadUrlResponse; import org.jclouds.b2.reference.B2Headers; -import org.jclouds.util.Strings2; import org.testng.annotations.Test; -import com.google.common.base.Charsets; -import com.google.common.base.Throwables; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; import com.google.common.net.HttpHeaders; -import com.google.common.reflect.TypeToken; -import com.google.common.util.concurrent.MoreExecutors; -import com.google.gson.JsonElement; -import com.google.gson.JsonParser; -import com.google.inject.Module; import com.squareup.okhttp.mockwebserver.MockResponse; import com.squareup.okhttp.mockwebserver.MockWebServer; import com.squareup.okhttp.mockwebserver.RecordedRequest; @Test(groups = "unit", testName = "ObjectApiMockTest") public final class ObjectApiMockTest { - private final Set<Module> modules = ImmutableSet.<Module> of( - new ExecutorServiceModule(MoreExecutors.sameThreadExecutor())); - private static final String BUCKET_NAME = "BUCKET_NAME"; private static final String BUCKET_ID = "4a48fe8875c6214145260818"; private static final String FILE_ID = "4_h4a48fe8875c6214145260818_f000000000000472a_d20140104_m032022_c001_v0000123_t0104"; @@ -447,99 +433,4 @@ public final class ObjectApiMockTest { server.shutdown(); } } - - public B2Api api(String uri, String provider, Properties overrides) { - return ContextBuilder.newBuilder(provider) - .credentials("ACCOUNT_ID", "APPLICATION_KEY") - .endpoint(uri) - .overrides(overrides) - .modules(modules) - .buildApi(new TypeToken<B2Api>(getClass()) {}); - } - - public B2Api api(String uri, String provider) { - return api(uri, provider, new Properties()); - } - - public static MockWebServer createMockWebServer() throws IOException { - MockWebServer server = new MockWebServer(); - server.play(); - URL url = server.getUrl(""); - return server; - } - - public void assertAuthentication(MockWebServer server) { - assertThat(server.getRequestCount()).isGreaterThanOrEqualTo(1); - try { - assertThat(server.takeRequest().getRequestLine()).isEqualTo("GET /b2api/v1/b2_authorize_account HTTP/1.1"); - } catch (InterruptedException e) { - throw Throwables.propagate(e); - } - } - - /** - * Ensures the request has a json header for the proper REST methods. - * - * @param request - * @param method - * The request method (such as GET). - * @param path - * The path requested for this REST call. - * @see RecordedRequest - */ - public void assertRequest(RecordedRequest request, String method, String path) { - assertThat(request.getMethod()).isEqualTo(method); - assertThat(request.getPath()).isEqualTo(path); - } - - /** - * Ensures the request is json and has the same contents as the resource - * file provided. - * - * @param request - * @param method - * The request method (such as GET). - * @param resourceLocation - * The location of the resource file. Contents will be compared to - * the request body as JSON. - * @see RecordedRequest - */ - public void assertRequest(RecordedRequest request, String method, String path, String resourceLocation) { - assertRequest(request, method, path); - assertContentTypeIsJson(request); - JsonParser parser = new JsonParser(); - JsonElement requestJson; - try { - requestJson = parser.parse(new String(request.getBody(), Charsets.UTF_8)); - } catch (Exception e) { - throw Throwables.propagate(e); - } - JsonElement resourceJson = parser.parse(stringFromResource(resourceLocation)); - assertThat(requestJson).isEqualTo(resourceJson); - } - - /** - * Ensures the request has a json header. - * - * @param request - * @see RecordedRequest - */ - private void assertContentTypeIsJson(RecordedRequest request) { - assertThat(request.getHeaders()).contains("Content-Type: application/json"); - } - - /** - * Get a string from a resource - * - * @param resourceName - * The name of the resource. - * @return The content of the resource - */ - public String stringFromResource(String resourceName) { - try { - return Strings2.toStringAndClose(getClass().getResourceAsStream(resourceName)); - } catch (IOException e) { - throw Throwables.propagate(e); - } - } }
