mirror of
https://github.com/square/okhttp.git
synced 2025-11-30 18:01:29 +03:00
Merge pull request #1274 from square/jwilson_0102_expect_continue
Test Expect: 100-continue with OkHttp, not HttpURLConnection.
This commit is contained in:
@@ -97,61 +97,6 @@ public final class MockWebServerTest {
|
||||
assertEquals(Arrays.asList("Cookies: delicious", "cookie: r=robot"), response.getHeaders());
|
||||
}
|
||||
|
||||
/**
|
||||
* Clients who adhere to <a
|
||||
* href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3">100
|
||||
* Status</a> expect the server to send an interim response with status code
|
||||
* 100 before they send their payload.
|
||||
*
|
||||
* <h4>Note</h4>
|
||||
*
|
||||
* JRE 6 only passes this test if
|
||||
* {@code -Dsun.net.http.allowRestrictedHeaders=true} is set.
|
||||
*/
|
||||
@Test public void expect100ContinueWithBody() throws Exception {
|
||||
server.enqueue(new MockResponse());
|
||||
|
||||
URL url = server.getUrl("/");
|
||||
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||
connection.setRequestMethod("PUT");
|
||||
connection.setAllowUserInteraction(false);
|
||||
connection.setRequestProperty("Expect", "100-continue");
|
||||
connection.setDoOutput(true);
|
||||
connection.getOutputStream().write("hello".getBytes());
|
||||
assertEquals(HttpURLConnection.HTTP_OK, connection.getResponseCode());
|
||||
|
||||
assertEquals(server.getRequestCount(), 1);
|
||||
RecordedRequest request = server.takeRequest();
|
||||
assertEquals(request.getRequestLine(), "PUT / HTTP/1.1");
|
||||
assertEquals("5", request.getHeader("Content-Length"));
|
||||
assertEquals(5, request.getBodySize());
|
||||
assertEquals("hello", request.getBody().readUtf8());
|
||||
// below fails on JRE 6 unless -Dsun.net.http.allowRestrictedHeaders=true is set
|
||||
assertEquals("100-continue", request.getHeader("Expect"));
|
||||
}
|
||||
|
||||
@Test public void expect100ContinueWithNoBody() throws Exception {
|
||||
server.enqueue(new MockResponse());
|
||||
|
||||
URL url = server.getUrl("/");
|
||||
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||
connection.setRequestMethod("PUT");
|
||||
connection.setAllowUserInteraction(false);
|
||||
connection.setRequestProperty("Expect", "100-continue");
|
||||
connection.setRequestProperty("Content-Length", "0");
|
||||
connection.setDoOutput(true);
|
||||
connection.setFixedLengthStreamingMode(0);
|
||||
assertEquals(HttpURLConnection.HTTP_OK, connection.getResponseCode());
|
||||
|
||||
assertEquals(server.getRequestCount(), 1);
|
||||
RecordedRequest request = server.takeRequest();
|
||||
assertEquals(request.getRequestLine(), "PUT / HTTP/1.1");
|
||||
assertEquals("0", request.getHeader("Content-Length"));
|
||||
assertEquals(0, request.getBodySize());
|
||||
// below fails on JRE 6 unless -Dsun.net.http.allowRestrictedHeaders=true is set
|
||||
assertEquals("100-continue", request.getHeader("Expect"));
|
||||
}
|
||||
|
||||
@Test public void regularResponse() throws Exception {
|
||||
server.enqueue(new MockResponse().setBody("hello world"));
|
||||
|
||||
|
||||
@@ -1617,6 +1617,36 @@ public final class CallTest {
|
||||
.assertCode(302);
|
||||
}
|
||||
|
||||
@Test public void expect100ContinueNonEmptyRequestBody() throws Exception {
|
||||
server.enqueue(new MockResponse());
|
||||
|
||||
Request request = new Request.Builder()
|
||||
.url(server.getUrl("/"))
|
||||
.header("Expect", "100-continue")
|
||||
.post(RequestBody.create(MediaType.parse("text/plain"), "abc"))
|
||||
.build();
|
||||
|
||||
executeSynchronously(request)
|
||||
.assertCode(200)
|
||||
.assertSuccessful();
|
||||
|
||||
assertEquals("abc", server.takeRequest().getUtf8Body());
|
||||
}
|
||||
|
||||
@Test public void expect100ContinueEmptyRequestBody() throws Exception {
|
||||
server.enqueue(new MockResponse());
|
||||
|
||||
Request request = new Request.Builder()
|
||||
.url(server.getUrl("/"))
|
||||
.header("Expect", "100-continue")
|
||||
.post(RequestBody.create(MediaType.parse("text/plain"), ""))
|
||||
.build();
|
||||
|
||||
executeSynchronously(request)
|
||||
.assertCode(200)
|
||||
.assertSuccessful();
|
||||
}
|
||||
|
||||
private RecordedResponse executeSynchronously(Request request) throws IOException {
|
||||
Response response = client.newCall(request).execute();
|
||||
return new RecordedResponse(request, response, null, response.body().string(), null);
|
||||
|
||||
Reference in New Issue
Block a user