Skip to content

Commit 02b3cb5

Browse files
committed
TDD PutResponder
1 parent 4ad92cc commit 02b3cb5

File tree

4 files changed

+68
-1
lines changed

4 files changed

+68
-1
lines changed

src/main/java/httpserver/Method.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import httpserver.responder.GetResponder;
44
import httpserver.responder.PostResponder;
5+
import httpserver.responder.PutResponder;
56
import httpserver.responder.Responder;
67
import httpserver.response.Response;
78

@@ -11,7 +12,7 @@ public enum Method {
1112
GET(new GetResponder()),
1213
HEAD(null),
1314
POST(new PostResponder()),
14-
PUT(null),
15+
PUT(new PutResponder()),
1516
DELETE(null),
1617
OPTIONS(null);
1718

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package httpserver.responder;
2+
3+
import httpserver.Request;
4+
import httpserver.response.MethodNotAllowedResponse;
5+
import httpserver.response.OkResponse;
6+
import httpserver.response.Response;
7+
8+
import java.nio.file.Path;
9+
10+
public class PutResponder implements Responder {
11+
@Override
12+
public Response respond(Path root, Request request) {
13+
if (request.getPath() == "/form") {
14+
return new OkResponse(new byte[0]);
15+
}
16+
return new MethodNotAllowedResponse();
17+
}
18+
}

src/test/java/httpserver/SocketHandlerTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,18 @@ public void returns405ForPOST() throws Exception {
6868
String expected = "HTTP/1.1 405 Method Not Allowed\r\nContent-Length: 0\r\n\r\n";
6969
assertEquals(expected, outputStream.toString());
7070
}
71+
72+
@Test
73+
public void returns405ForPUT() throws Exception {
74+
Path root = tempDir();
75+
byte[] request = ("PUT /example HTTP/1.1\r\nHost: 127.0.0.1:5000\r\n\r\n").getBytes();
76+
InputStream inputStream = new ByteArrayInputStream(request);
77+
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
78+
SocketHandler socketHandler = new SocketHandler(root);
79+
80+
socketHandler.process(inputStream, outputStream);
81+
82+
String expected = "HTTP/1.1 405 Method Not Allowed\r\nContent-Length: 0\r\n\r\n";
83+
assertEquals(expected, outputStream.toString());
84+
}
7185
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package httpserver.responder;
2+
3+
import httpserver.Request;
4+
import httpserver.response.Response;
5+
import org.junit.Ignore;
6+
import org.junit.Test;
7+
8+
import java.nio.file.Path;
9+
import java.nio.file.Paths;
10+
import java.util.HashMap;
11+
12+
import static org.junit.Assert.*;
13+
14+
public class PutResponderTest {
15+
@Test
16+
public void gets200StatusCode() throws Exception {
17+
Path root = Paths.get("test");
18+
Request request = new Request("PUT", "/form", new HashMap<>());
19+
PutResponder putResponder = new PutResponder();
20+
21+
Response response = putResponder.respond(root, request);
22+
assertEquals(200, response.getStatusCode());
23+
}
24+
25+
@Test
26+
public void returns405IfNotFormUrl() throws Exception {
27+
Path root = Paths.get("test");
28+
Request request = new Request("POST", "/file1.txt", new HashMap<>());
29+
PostResponder postResponder = new PostResponder();
30+
31+
Response response = postResponder.respond(root, request);
32+
assertEquals(405, response.getStatusCode());
33+
}
34+
}

0 commit comments

Comments
 (0)