1
0
mirror of https://github.com/square/okhttp.git synced 2026-01-17 08:42:25 +03:00

Merge pull request #2224 from square/jw/mock-reason

Change default mock reason.
This commit is contained in:
Jesse Wilson
2016-01-11 17:48:13 -08:00
3 changed files with 40 additions and 4 deletions

View File

@@ -28,7 +28,7 @@ import okio.Buffer;
public final class MockResponse implements Cloneable {
private static final String CHUNKED_BODY_HEADER = "Transfer-encoding: chunked";
private String status = "HTTP/1.1 200 OK";
private String status;
private Headers.Builder headers = new Headers.Builder();
private Buffer body;
@@ -48,6 +48,7 @@ public final class MockResponse implements Cloneable {
/** Creates a new mock response with an empty body. */
public MockResponse() {
setResponseCode(200);
setHeader("Content-Length", 0);
}
@@ -68,7 +69,19 @@ public final class MockResponse implements Cloneable {
}
public MockResponse setResponseCode(int code) {
return setStatus("HTTP/1.1 " + code + " OK");
String reason = "Mock Response";
if (code >= 100 && code < 200) {
reason = "Informational";
} else if (code >= 200 && code < 300) {
reason = "OK";
} else if (code >= 300 && code < 400) {
reason = "Redirection";
} else if (code >= 400 && code < 500) {
reason = "Client Error";
} else if (code >= 500 && code < 600) {
reason = "Server Error";
}
return setStatus("HTTP/1.1 " + code + " " + reason);
}
public MockResponse setStatus(String status) {

View File

@@ -55,11 +55,34 @@ public final class MockWebServerTest {
assertEquals("HTTP/1.1 200 OK", response.getStatus());
}
@Test public void setResponseMockReason() {
String[] reasons = {
"Mock Response",
"Informational",
"OK",
"Redirection",
"Client Error",
"Server Error",
"Mock Response"
};
for (int i = 0; i < 600; i++) {
MockResponse response = new MockResponse().setResponseCode(i);
String expectedReason = reasons[i / 100];
assertEquals("HTTP/1.1 " + i + " " + expectedReason, response.getStatus());
assertEquals(Arrays.asList("Content-Length: 0"), headersToList(response));
}
}
@Test public void setStatusControlsWholeStatusLine() {
MockResponse response = new MockResponse().setStatus("HTTP/1.1 202 That'll do pig");
assertEquals(Arrays.asList("Content-Length: 0"), headersToList(response));
assertEquals("HTTP/1.1 202 That'll do pig", response.getStatus());
}
@Test public void setBodyAdjustsHeaders() throws IOException {
MockResponse response = new MockResponse().setBody("ABC");
assertEquals(Arrays.asList("Content-Length: 3"), headersToList(response));
assertEquals("ABC", response.getBody().readUtf8());
assertEquals("HTTP/1.1 200 OK", response.getStatus());
}
@Test public void mockResponseAddHeader() {

View File

@@ -89,7 +89,7 @@ public final class WebSocketCallTest {
}
@Test public void okButNotOk() {
server.enqueue(new MockResponse());
server.enqueue(new MockResponse().setResponseCode(200));
awaitWebSocket();
listener.assertFailure(ProtocolException.class, "Expected HTTP 101 response but was '200 OK'");
}