/** * Removes all headers named {@code name}, then adds a new header with the name and value. */ public MockResponse setHeader(String name, Object value) { removeHeader(name); return addHeader(name, value); }
private MockResponse directoryToResponse(String basePath, File directory) { if (!basePath.endsWith("/")) basePath += "/"; StringBuilder response = new StringBuilder(); response.append(String.format("<html><head><title>%s</title></head><body>", basePath)); response.append(String.format("<h1>%s</h1>", basePath)); for (String file : directory.list()) { response.append(String.format("<div class='file'><a href='%s'>%s</a></div>", basePath + file, file)); } response.append("</body></html>"); return new MockResponse() .setStatus("HTTP/1.1 200") .addHeader("content-type: text/html; charset=utf-8") .setBody(response.toString()); }
@Override public MockResponse dispatch(RecordedRequest request) { String path = request.getPath(); try { if (!path.startsWith("/") || path.contains("..")) throw new FileNotFoundException(); File file = new File(root + path); return file.isDirectory() ? directoryToResponse(path, file) : fileToResponse(path, file); } catch (FileNotFoundException e) { return new MockResponse() .setStatus("HTTP/1.1 404") .addHeader("content-type: text/plain; charset=utf-8") .setBody("NOT FOUND: " + path); } catch (IOException e) { return new MockResponse() .setStatus("HTTP/1.1 500") .addHeader("content-type: text/plain; charset=utf-8") .setBody("SERVER ERROR: " + e); } }
private MockResponse fileToResponse(String path, File file) throws IOException { return new MockResponse() .setStatus("HTTP/1.1 200") .setBody(fileToBytes(file)) .addHeader("content-type: " + contentType(path)); }
.addHeader(CONTENT_TYPE, "application/json") .setBody(result));
.addHeader("Location", "https://twitter.com/CuteEmergency/status/789457462864863232");
@Test public void testGetServerInfo() throws Exception { ServerInfo expected = new ServerInfo(UNKNOWN, "test", true, false, Optional.of(Duration.valueOf("2m"))); server.enqueue(new MockResponse() .addHeader(CONTENT_TYPE, "application/json") .setBody(SERVER_INFO_CODEC.toJson(expected))); QueryExecutor executor = new QueryExecutor(new OkHttpClient()); ServerInfo actual = executor.getServerInfo(server.url("/v1/info").uri()); assertEquals(actual.getEnvironment(), "test"); assertEquals(actual.getUptime(), Optional.of(Duration.valueOf("2m"))); assertEquals(server.getRequestCount(), 1); assertEquals(server.takeRequest().getPath(), "/v1/info"); } }
@Test public void testWithResponseCompression() throws IOException { ByteArrayOutputStream capturedOutput = hookAlmostRealInterpretResponseStream(mMockEventReporter); byte[] uncompressedData = repeat(".", 1024).getBytes(); byte[] compressedData = compress(uncompressedData); MockWebServer server = new MockWebServer(); server.start(); server.enqueue(new MockResponse() .setBody(new Buffer().write(compressedData)) .addHeader("Content-Encoding: gzip")); Request request = new Request.Builder() .url(server.url("/")) .build(); Response response = mClientWithInterceptor.newCall(request).execute(); // Verify that the final output and the caller both saw the uncompressed stream. assertArrayEquals(uncompressedData, response.body().bytes()); assertArrayEquals(uncompressedData, capturedOutput.toByteArray()); // And verify that the StethoInterceptor was able to see both. Mockito.verify(mMockEventReporter) .dataReceived( anyString(), eq(compressedData.length), eq(uncompressedData.length)); server.shutdown(); }
@Test public void redirect() throws Exception { Tracer tracer = httpTracing.tracing().tracer(); server.enqueue(new MockResponse().setResponseCode(302) .addHeader("Location: " + url("/bar"))); server.enqueue(new MockResponse().setResponseCode(404)); // hehe to a bad location! ScopedSpan parent = tracer.startScopedSpan("test"); try { get(client, "/foo"); } catch (RuntimeException e) { // some think 404 is an exception } finally { parent.finish(); } Span client1 = takeSpan(); Span client2 = takeSpan(); assertThat(Arrays.asList(client1.tags().get("http.path"), client2.tags().get("http.path"))) .contains("/foo", "/bar"); assertThat(takeSpan().kind()).isNull(); // local }
@Test public void requestWhenAttributeExchangeConfiguredThenFetchAttributesPassedToIdp() throws Exception { this.spring.configLocations(this.xml("WithOpenIDAttributes")).autowire(); OpenIDAuthenticationFilter openIDFilter = getFilter(OpenIDAuthenticationFilter.class); OpenID4JavaConsumer consumer = getFieldValue(openIDFilter, "consumer"); ConsumerManager manager = getFieldValue(consumer, "consumerManager"); manager.setMaxAssocAttempts(0); try ( MockWebServer server = new MockWebServer() ) { String endpoint = server.url("/").toString(); server.enqueue(new MockResponse() .addHeader(YADIS_XRDS_LOCATION, endpoint)); server.enqueue(new MockResponse() .setBody(String.format( "<XRDS><XRD><Service><URI>%s</URI></Service></XRD></XRDS>", endpoint))); this.mvc.perform(get("/login/openid") .param(OpenIDAuthenticationFilter.DEFAULT_CLAIMED_IDENTITY_FIELD, endpoint)) .andExpect(status().isFound()) .andExpect(result -> result.getResponse().getRedirectedUrl().endsWith( "openid.ext1.type.nickname=http%3A%2F%2Fschema.openid.net%2FnamePerson%2Ffriendly&" + "openid.ext1.if_available=nickname&" + "openid.ext1.type.email=http%3A%2F%2Fschema.openid.net%2Fcontact%2Femail&" + "openid.ext1.required=email&" + "openid.ext1.count.email=2")); } }
/** * Removes all headers named {@code name}, then adds a new header with the name and value. */ public MockResponse setHeader(String name, Object value) { removeHeader(name); return addHeader(name, value); }
private static MockResponse toResponse(ClientHttpResponse clientResponse) throws IOException { MockResponse mockResponse = new MockResponse(); mockResponse.setResponseCode(clientResponse.getStatusCode().value()); clientResponse.getHeaders().forEach((name, values) -> values.forEach(value -> mockResponse.addHeader(name, value))); mockResponse.setBody(IOUtils.toString(clientResponse.getBody(), Charset.defaultCharset())); return mockResponse; } }
/** * Create a MockResponse with JSON content type and the object serialized to JSON as body. * * @param body the body * @return the mock response */ protected static MockResponse jsonResponse(Object body) { return new MockResponse().addHeader(CONTENT_TYPE, HttpMediaType.APPLICATION_JSON).setBody(GSON.toJson(body)); }
private void enqueueResponse(String fileName, Map<String, String> headers) throws IOException { InputStream inputStream = getClass().getClassLoader() .getResourceAsStream("api-response/" + fileName); BufferedSource source = Okio.buffer(Okio.source(inputStream)); MockResponse mockResponse = new MockResponse(); for (Map.Entry<String, String> header : headers.entrySet()) { mockResponse.addHeader(header.getKey(), header.getValue()); } mockWebServer.enqueue(mockResponse .setBody(source.readString(StandardCharsets.UTF_8))); }
private void enqueueResponse(String fileName, Map<String, String> headers) throws IOException { InputStream inputStream = ApiAbstract.class.getClassLoader().getResourceAsStream(String.format("api-response/%s", fileName)); Source source = Okio.buffer(Okio.source(inputStream)); MockResponse mockResponse = new MockResponse(); for (Map.Entry<String, String> entry : headers.entrySet()) { mockResponse.addHeader(entry.getKey(), entry.getValue()); } mockWebServer.enqueue(mockResponse.setBody(((BufferedSource) source).readString(StandardCharsets.UTF_8))); }
@Test public void handlesQos_redirectsToOtherUrlThenRetriesAnotherUrl() throws Exception { // First hits server, then 308 redirects to server2, then 503 redirects back to server. server.enqueue(new MockResponse().setResponseCode(308).addHeader(HttpHeaders.LOCATION, url2)); server2.enqueue(new MockResponse().setResponseCode(503)); server.enqueue(new MockResponse().setResponseCode(200).setBody("foo")); OkHttpClient client = createRetryingClient(1, url, url2); Call call = client.newCall(new Request.Builder().url(url).build()); assertThat(call.execute().body().string()).isEqualTo("foo"); assertThat(server.getRequestCount()).isEqualTo(2); assertThat(server2.getRequestCount()).isEqualTo(1); }
private void setUpMockServerResponse(int responseCode, String responseMessage, String responseBody) { MockResponse mockResponse = new MockResponse() .addHeader("Content-Type", "application/json; charset=utf-8") .setBody(responseBody) .setStatus(String.format("HTTP/1.1 %s %s", responseCode, responseMessage)); mockServer.enqueue(mockResponse); }
public void jsonResponse(String path, int statusCode) throws IOException { MockResponse response = new MockResponse() .setResponseCode(statusCode) .addHeader("Content-Type", "application/json") .setBody(readTextFile(path)); server.enqueue(response); }
@Test public void testUnregisterCallback() throws InterruptedException { String callbackUrl = "http://testurl.com"; server.enqueue(new MockResponse().addHeader(CONTENT_TYPE, HttpMediaType.APPLICATION_JSON).setBody("{}")); UnregisterCallbackOptions unregisterOptions = new UnregisterCallbackOptions.Builder() .callbackUrl(callbackUrl) .build(); service.unregisterCallback(unregisterOptions).execute(); final RecordedRequest unregisterRequest = server.takeRequest(); assertEquals("POST", unregisterRequest.getMethod()); assertEquals(String.format(UNREGISTER_CALLBACK, RequestUtils.encode(callbackUrl)), unregisterRequest.getPath()); }