@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(); }
/** * 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 enabledResponse() { return new MockResponse() .addHeader(CDN_ENABLED, "true") .addHeader(CDN_LOG_RETENTION, "false") .addHeader(CDN_TTL, "777777") .addHeader(CDN_URI, "http://id-1.cdn.rackspace.com") .addHeader(CDN_SSL_URI, "https://ssl-id-1.ssl.rackspace.com") .addHeader(CDN_STREAMING_URI, "http://streaming-id-1.stream.rackspace.com") .addHeader(CDN_IOS_URI, "http://ios-id-1.iosr.rackspace.com") .addHeader(CONTENT_LENGTH, "0") .addHeader(CONTENT_TYPE, "text/plain; charset=UTF-8"); }
private static MockResponse updatedResponse() { return new MockResponse() .addHeader(CDN_ENABLED, "false") .addHeader(CDN_LOG_RETENTION, "true") .addHeader(CDN_TTL, "7654321") .addHeader(CDN_URI, "http://id-1.cdn.rackspace.com") .addHeader(CDN_SSL_URI, "https://ssl-id-1.ssl.rackspace.com") .addHeader(CDN_STREAMING_URI, "http://streaming-id-1.stream.rackspace.com") .addHeader(CDN_IOS_URI, "http://ios-id-1.iosr.rackspace.com") .addHeader(CONTENT_LENGTH, "0") .addHeader(CONTENT_TYPE, "text/plain; charset=UTF-8"); }
static MockResponse objectResponse() { return new MockResponse() .addHeader("Last-Modified", "Fri, 12 Jun 2010 13:40:18 GMT") .addHeader("ETag", "8a964ee2a5e88be344f36c22562a6486") // TODO: MWS doesn't allow you to return content length w/o content // on HEAD! .setBody("ABCD".getBytes(US_ASCII)) .addHeader("Content-Length", "4") .addHeader("Content-Type", "text/plain; charset=UTF-8") .addHeader(EXPIRES, "Wed, 23 Jul 2014 14:00:00 GMT"); }
/** * Ensure json headers are included * */ public MockResponse addCommonHeaders(MockResponse mockResponse) { mockResponse.addHeader(HttpHeaders.ACCEPT, MediaType.JSON_UTF_8.withoutParameters()); return mockResponse; }
protected void enqueueAuthentication(MockWebServer server) { authToken = UUID.randomUUID().toString(); server.enqueue(jsonResponse("/v3/token.json").addHeader("X-Subject-Token", authToken)); }
protected MockResponse response202WithHeader() { return new MockResponse() .setStatus("HTTP/1.1 202 Accepted") .addHeader( "Location", "https://management.azure.com/subscriptions/SUBSCRIPTIONID/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1SVEVTVC1DRU5UUkFMVVMiLCJqb2JMb2NhdGlvbiI6ImNlbnRyYWx1cyJ9?api-version=2014-04-01"); }
protected MockResponse response200WithHeader() { return new MockResponse() .setStatus("HTTP/1.1 200 O") .addHeader("Location", "https://management.azure.com/subscriptions/SUBSCRIPTIONID/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1SVEVTVC1DRU5UUkFMVVMiLCJqb2JMb2NhdGlvbiI6ImNlbnRyYWx1cyJ9?api-version=2014-04-01"); }
@Test public void getCookieReturnsValue() { server().enqueue(new MockResponse().addHeader("Set-Cookie", "x=y")); String actual = newBrowser().get(url(server())) .getCookie("x"); assertThat("cookie", actual, is("y")); }
@Test public void getSetsCookie() { server().enqueue(new MockResponse().addHeader("Set-Cookie", "x=y")); String actual = newBrowser().get(url(server())) .getCookie("x"); assertThat("cookie", actual, is("y")); }
protected MockResponse jsonResponse(String resource) { return new MockResponse().addHeader("Content-Type", "application/json").setBody(stringFromResource(resource)); }
protected void enqueueXml(Response.Status status, String region, String resource) { enqueue(region, new MockResponse() .setStatus("HTTP/1.1 " + status.getStatusCode() + " " + status.getReasonPhrase()) .addHeader(CONTENT_TYPE, APPLICATION_XML) .setBody(stringFromResource(resource))); }
protected void enqueueXml(String region, String resource) { enqueue(region, new MockResponse().addHeader(CONTENT_TYPE, APPLICATION_XML).setBody(stringFromResource(resource))); }
protected void enqueueXml(String region, String resource) { enqueue(region, new MockResponse().addHeader(CONTENT_TYPE, APPLICATION_XML).setBody(stringFromResource(resource))); }
@Test public void followWhenAnchorSetsCookie() { server().enqueue(new MockResponse().setBody("<html><body>" + "<a rel='r' href='/a'>a</a>" + "</body></html>")); server().enqueue(new MockResponse().addHeader("Set-Cookie", "x=y")); String actual = newBrowser().get(url(server())) .getLink("r") .follow() .getCookie("x"); assertThat("cookie", actual, is("y")); }
@Test public void followWhenAnchorSendsCookie() throws InterruptedException { server().enqueue(new MockResponse().addHeader("Set-Cookie", "x=y").setBody("<html><body>" + "<a rel='r' href='/a'>a</a>" + "</body></html>")); server().enqueue(new MockResponse()); newBrowser().get(url(server())) .getLink("r") .follow(); server().takeRequest(); assertThat("cookie", takeRequest(server()).getHeader("Cookie"), is("x=y")); }
@Override public MockResponse dispatch(RecordedRequest request) { switch (request.getPath()) { case "/v1/agent/self": return new MockResponse().setResponseCode(200).setBody(PING_RESPONSE); case "/v1/kv/?recurse=true": return new MockResponse() .setResponseCode(200) .addHeader("Content-Type", "application/json; charset=utf-8") .setBody("[{\"CreateIndex\":1,\"ModifyIndex\":1,\"LockIndex\":0,\"Key\":\"us-west-1/featureA.toggle\",\"Flags\":0,\"Value\":\"ZGlzYWJsZWQ=\"}]"); } return new MockResponse().setResponseCode(404); } }