private MockLowLevelHttpResponse makeErrorResponse() { MockLowLevelHttpResponse errorResponse = new MockLowLevelHttpResponse(); errorResponse.addHeader("custom_header", "value"); errorResponse.setStatusCode(HttpStatusCodes.STATUS_CODE_UNAUTHORIZED); errorResponse.setContentType(Json.MEDIA_TYPE); errorResponse.setContent("{\"error\":\"invalid credentials\"}"); return errorResponse; }
@Override public LowLevelHttpResponse execute() { MockLowLevelHttpResponse response = new MockLowLevelHttpResponse(); response.addHeader("Metadata-Flavor", "Google"); return response; } };
@Override protected MockLowLevelHttpResponse respond(final String method, final String url) { return new MockLowLevelHttpResponse().setContent("{}"); } }
/** * Returns a new {@link MockHttpTransport} with a sample {@link MockLowLevelHttpResponse}. The * response includes sample TokenResponse content as specified in DEFAULT_TOKEN_RESPONSE_JSON. This * is meant to produce a minimal implementation that allows methods such as * {@link GoogleCredential#executeRefreshToken()} to be called without failing abruptly. This * content is static. If you are making assertions based on the content of the request, then * MockTokenServerTransport should be used instead. * * @return mockHttpTransport */ public static MockHttpTransport newMockHttpTransportWithSampleTokenResponse() { MockLowLevelHttpResponse mockLowLevelHttpResponse = new MockLowLevelHttpResponse() .setContentType(Json.MEDIA_TYPE) .setContent(DEFAULT_TOKEN_RESPONSE_JSON); MockLowLevelHttpRequest request = new MockLowLevelHttpRequest() .setResponse(mockLowLevelHttpResponse); return new MockHttpTransport.Builder() .setLowLevelHttpRequest(request) .build(); }
@Override public LowLevelHttpResponse execute() throws IOException { lastRequestUrl = getUrl(); lastRequestContent = getContentAsString(); MockLowLevelHttpResponse mock = new MockLowLevelHttpResponse(); mock.setStatusCode(httpStatusCode); mock.setContent(httpResponseContent); return mock; } };
@Override public MockLowLevelHttpResponse getHttpResponse(String httpMethod, String targetUrl) { return new MockLowLevelHttpResponse().setStatusCode(200); } });
@Override public MockLowLevelHttpResponse getHttpResponse(String httpMethod, String targetUrl) { MockLowLevelHttpResponse httpResponse = new MockLowLevelHttpResponse(); httpResponse.setStatusCode(400); httpResponse.setContent(exception.toString().getBytes()); httpResponse.setContentEncoding("text/plain"); return httpResponse; } });
@Override protected MockLowLevelHttpResponse respond(final String method, final String url) { /* * * "location" header handles the redirect from first part to second part, otherwise API will throw NPE. the * value given is synthetic and has no relation to anything that Google may put there. */ return new MockLowLevelHttpResponse() .setContent(toJson(file)) .addHeader("Location", ROOT + "?id=" + file.getId() + "uploadType=resumable"); } }
/** * Builds a HttpResponse with the given string response. * * @param header header value to provide or null if none. * @param uploadId upload id to provide in the url upload id param or null if none. * @param uploadType upload type to provide in url upload type param or null if none. * @return HttpResponse with the given parameters * @throws IOException */ private HttpResponse buildHttpResponse(String header, String uploadId, String uploadType) throws IOException { MockHttpTransport.Builder builder = new MockHttpTransport.Builder(); MockLowLevelHttpResponse resp = new MockLowLevelHttpResponse(); builder.setLowLevelHttpResponse(resp); resp.setStatusCode(200); GenericUrl url = new GenericUrl(HttpTesting.SIMPLE_URL); if (header != null) { resp.addHeader("X-GUploader-UploadID", header); } if (uploadId != null) { url.put("upload_id", uploadId); } if (uploadType != null) { url.put("uploadType", uploadType); } return builder.build().createRequestFactory().buildGetRequest(url).execute(); }
int httpCode, String reasonPhrase) throws IOException { MockLowLevelHttpResponse otherServiceUnavaiableLowLevelResponse = new MockLowLevelHttpResponse() .setStatusCode(httpCode) .setReasonPhrase(reasonPhrase); MockHttpTransport otherTransport = new MockHttpTransport.Builder() .setLowLevelHttpResponse(otherServiceUnavaiableLowLevelResponse)
@Override public LowLevelHttpResponse execute() throws IOException { Map<String, String> parameters = TestUtils.parseQuery(query); String token = parameters.get("token"); if (token == null) { throw new IOException("Token to revoke not found."); } // Token could be access token or refresh token so remove keys and values refreshTokens.values().removeAll(Collections.singleton(token)); refreshTokens.remove(token); return new MockLowLevelHttpResponse().setContentType(Json.MEDIA_TYPE); } };
String refreshText = refreshContents.toPrettyString(); MockLowLevelHttpResponse response = new MockLowLevelHttpResponse() .setContentType(Json.MEDIA_TYPE) .setContent(refreshText); return response;
MockJsonFactory mockJsonFactory = new MockJsonFactory(); HttpTransport transport = new MockHttpTransport() { @Override public LowLevelHttpRequest buildRequest(String method, String url) throws IOException { return new MockLowLevelHttpRequest() { @Override public LowLevelHttpResponse execute() throws IOException { MockLowLevelHttpResponse response = new MockLowLevelHttpResponse(); response.setStatusCode(408); response.setContent("{\"error\":\"Timeout\"}"); return response; } }; } }; HttpRequest httpRequest = transport.createRequestFactory().buildGetRequest(HttpTesting.SIMPLE_GENERIC_URL); httpRequest.setThrowExceptionOnExecuteError(false); HttpResponse httpResponse = httpRequest.execute(); GoogleJsonResponseException googleJsonResponseException =
@Override protected MockLowLevelHttpResponse respond(final String method, final String url) { return new MockLowLevelHttpResponse() .setContent("{ " + "\"kind\": \"drive#fileList\"," + "\"incompleteSearch\": false," + "\"files\": [" + toJson(files) + "]}"); } }
HttpResponseException makeHttpException(int status) throws IOException { MockHttpTransport.Builder builder = new MockHttpTransport.Builder(); MockLowLevelHttpResponse resp = new MockLowLevelHttpResponse(); resp.setStatusCode(status); builder.setLowLevelHttpResponse(resp); try { HttpResponse res = builder.build() .createRequestFactory() .buildGetRequest(HttpTesting.SIMPLE_GENERIC_URL) .execute(); return new HttpResponseException(res); } catch (HttpResponseException exception) { return exception; // Throws the exception we want anyway, so just return it. } }
@Override protected MockLowLevelHttpResponse respond(final String method, final String url) { final File file = GoogleUtil.getFile(UUID.randomUUID().toString()); updater.accept(file); // inform other code that a new file has been created /* * * "location" header handles the redirect from first part to second part, otherwise API will throw NPE. the * value given is synthetic and has no relation to anything that Google may put there. */ return new MockLowLevelHttpResponse() .setContent(toJson(file)) .addHeader("Location", ROOT + "?id=" + file.getId() + "uploadType=resumable"); } }
@Override public LowLevelHttpResponse execute() { MockLowLevelHttpResponse response = new MockLowLevelHttpResponse(); response.addHeader("Metadata-Flavor", "Google"); return response; } };
private MockLowLevelHttpResponse makeSuccessResponse() { MockLowLevelHttpResponse successResponse = new MockLowLevelHttpResponse(); successResponse.addHeader("custom_header", "value"); successResponse.setStatusCode(HttpStatusCodes.STATUS_CODE_OK); successResponse.setContentType(Json.MEDIA_TYPE); successResponse.setContent(SUCCESS_CONTENT); return successResponse; }
@Override public LowLevelHttpResponse execute() throws IOException { // Create the JSON response GenericJson signContents = new GenericJson(); signContents.setFactory(OAuth2Utils.JSON_FACTORY); signContents.put("signature", BaseEncoding.base64().encode(signature)); String signature = signContents.toPrettyString(); return new MockLowLevelHttpResponse() .setContentType(Json.MEDIA_TYPE) .setContent(signature); } };
@Override public MockLowLevelHttpResponse getHttpResponse(String httpMethod, String fullTargetUrl) { MockLowLevelHttpResponse httpResponse = new MockLowLevelHttpResponse(); Preconditions.checkArgument( serviceMethodDescriptors != null, "MockHttpService has null serviceMethodDescriptors."); String relativePath = getRelativePath(fullTargetUrl); for (ApiMethodDescriptor methodDescriptor : serviceMethodDescriptors) { if (!httpMethod.equals(methodDescriptor.getHttpMethod())) { continue; } PathTemplate pathTemplate = methodDescriptor.getRequestFormatter().getPathTemplate(); // Server figures out which RPC method is called based on the endpoint path pattern. if (!pathTemplate.matches(relativePath)) { continue; } // Emulate the server's creation of an HttpResponse from the response message instance. String httpContent = methodDescriptor.getResponseParser().serialize(response); httpResponse.setContent(httpContent.getBytes()); httpResponse.setStatusCode(200); return httpResponse; } // Return 404 when none of this server's endpoint templates match the given URL. httpResponse.setContent( String.format("Method not found for path '%s'", relativePath).getBytes()); httpResponse.setStatusCode(404); return httpResponse; } });