Skip to content

Commit 5665135

Browse files
committed
Change Request constructor to use Method enum instead of Strings
1 parent 08ab02a commit 5665135

15 files changed

+58
-65
lines changed

src/main/java/httpserver/request/Request.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ public class Request {
1414
private final String queryString;
1515
private final String body;
1616

17-
public Request(String method, String pathString, Header[] headers, String queryString) {
17+
public Request(Method method, String pathString, Header[] headers, String queryString) {
1818
this(method, pathString, headers, queryString, "");
1919
}
2020

21-
public Request(String method, String pathString, Header[] headers, String queryString, String body) {
22-
this.method = method;
21+
public Request(Method method, String pathString, Header[] headers, String queryString, String body) {
22+
this.method = method.toString();
2323
this.pathString = pathString;
2424
this.headers = headers;
2525
this.queryString = queryString;

src/main/java/httpserver/request/RequestParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public Request parse(InputStream inputStream) throws IOException {
3333

3434
String body = getBody(bufferedReader);
3535

36-
return new Request(requestLine.getMethod(),
36+
return new Request(Method.valueOf(requestLine.getMethod()),
3737
requestLine.getPath(),
3838
headers,
3939
requestLine.getQueryString(),

src/test/java/httpserver/AuthorizerTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,22 @@ public AuthorizerTest() {
1717
@Test
1818
public void authorizesRequest() throws Exception {
1919
Header[] headers = new Header[]{new Header("Authorization", "Basic YWRtaW46aHVudGVyMg==")};
20-
Request request = new Request("GET", "test", headers, "");
20+
Request request = new Request(Method.GET, "test", headers, "");
2121

2222
assertTrue(authorizer.authorize(request));
2323
}
2424

2525
@Test
2626
public void doesntAuthorizeRequestWithInvalidCredentials() throws Exception {
2727
Header[] headers = new Header[]{new Header("Authorization", "Basic aaabbb")};
28-
Request request = new Request("GET", "test", headers, "");
28+
Request request = new Request(Method.GET, "test", headers, "");
2929

3030
assertFalse(authorizer.authorize(request));
3131
}
3232

3333
@Test
3434
public void doesntAuthorizeRequestWithNoAuthHeader() throws Exception {
35-
Request request = new Request("GET", "test", new Header[0], "");
35+
Request request = new Request(Method.GET, "test", new Header[0], "");
3636

3737
assertFalse(authorizer.authorize(request));
3838
}

src/test/java/httpserver/MethodResponderSupplierTest.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,23 +30,14 @@ public MethodResponderSupplierTest() {
3030

3131
@Test
3232
public void returnsResponderForMethod() throws Exception {
33-
Request request = new Request("GET", null, null, null);
33+
Request request = new Request(Method.GET, null, null, null);
3434
when(getResponderMock.handles(any())).thenReturn(true);
3535

3636
MethodResponder methodResponder = methodResponderSupplier.supplyResponder(request);
3737

3838
assertEquals(getResponderMock, methodResponder);
3939
}
4040

41-
@Test
42-
public void returnsInvalidMethodIfNotPresent() throws Exception {
43-
Request request = new Request("AAA", null, null, null);
44-
45-
MethodResponder methodResponder = methodResponderSupplier.supplyResponder(request);
46-
47-
assertEquals(invalidMethodResponderMock, methodResponder);
48-
}
49-
5041
@Test
5142
public void returnsAllRespondersRegistered() throws Exception {
5243
List<MethodResponder> actual = methodResponderSupplier.allResponders();

src/test/java/httpserver/request/RequestTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public RequestTest() {
1919

2020
@Test
2121
public void hasCorrectMethodPathHeadersAndQueryString() throws Exception {
22-
Request request = new Request("GET", "/example.txt", headers, "example=test");
22+
Request request = new Request(Method.GET, "/example.txt", headers, "example=test");
2323

2424
assertEquals(Method.GET, request.getMethod());
2525
assertEquals("/example.txt", request.getPathString());
@@ -31,7 +31,7 @@ public void hasCorrectMethodPathHeadersAndQueryString() throws Exception {
3131

3232
@Test
3333
public void canGetHeaderValue() throws Exception {
34-
Request request = new Request("GET", "/example.txt", headers, "");
34+
Request request = new Request(Method.GET, "/example.txt", headers, "");
3535

3636
String headerValue = request.getHeaderValue("test-header");
3737

@@ -40,29 +40,29 @@ public void canGetHeaderValue() throws Exception {
4040

4141
@Test
4242
public void testsIfHeaderPresent() throws Exception {
43-
Request request = new Request("GET", "/example.txt", headers, "");
43+
Request request = new Request(Method.GET, "/example.txt", headers, "");
4444

4545
assertTrue(request.hasHeader("test-header"));
4646
assertFalse(request.hasHeader("no-header"));
4747
}
4848

4949
@Test
5050
public void getsNullForEmptyHeader() throws Exception {
51-
Request request = new Request("GET", "/example.txt", new Header[0], "");
51+
Request request = new Request(Method.GET, "/example.txt", new Header[0], "");
5252

5353
assertNull(request.getHeaderValue("test-header"));
5454
}
5555

5656
@Test
5757
public void getsEmptyStringForNoQueryString() throws Exception {
58-
Request request = new Request("GET", "/example.txt", headers, "");
58+
Request request = new Request(Method.GET, "/example.txt", headers, "");
5959

6060
assertEquals("", request.getQueryString());
6161
}
6262

6363
@Test
6464
public void getsParams() throws Exception {
65-
Request request = new Request("GET", "/example", new Header[0], "key1=value1%3C%2C%3F&key2=value2");
65+
Request request = new Request(Method.GET, "/example", new Header[0], "key1=value1%3C%2C%3F&key2=value2");
6666

6767
Parameter[] expected = new Parameter[]{new Parameter("key1", "value1<,?"), new Parameter("key2", "value2")};
6868
Parameter[] actual = request.getParams();
@@ -71,7 +71,7 @@ public void getsParams() throws Exception {
7171

7272
@Test
7373
public void getsBody() throws Exception {
74-
Request request = new Request("GET", "/example", new Header[0], "", "body content");
74+
Request request = new Request(Method.GET, "/example", new Header[0], "", "body content");
7575

7676
assertEquals("body content", request.getBody());
7777
}

src/test/java/httpserver/responder/DeleteResponderTest.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package httpserver.responder;
22

33
import httpserver.AppConfig;
4+
import httpserver.Method;
45
import httpserver.request.Request;
56
import httpserver.file.FileOperator;
67
import httpserver.file.PathExaminer;
@@ -36,7 +37,7 @@ public void returns200DeletesFileWhenExists() throws Exception {
3637
String pathString = "/form";
3738
when(pathExaminerMock.pathExists(any())).thenReturn(true);
3839
when(pathExaminerMock.getFullPath(rootMock, pathString)).thenReturn(fullPathMock);
39-
Request request = new Request("DELETE", pathString, new Header[0], "", "data=example");
40+
Request request = new Request(Method.DELETE, pathString, new Header[0], "", "data=example");
4041

4142
Response response = deleteResponder.respond(appConfigMock, request);
4243

@@ -49,7 +50,7 @@ public void returns404WhenAllowedButDoesntExist() throws Exception {
4950
String pathString = "/form";
5051
when(pathExaminerMock.pathExists(any())).thenReturn(false);
5152
when(pathExaminerMock.getFullPath(rootMock, pathString)).thenReturn(fullPathMock);
52-
Request request = new Request("DELETE", pathString, new Header[0], "", "data=example");
53+
Request request = new Request(Method.DELETE, pathString, new Header[0], "", "data=example");
5354

5455
Response response = deleteResponder.respond(appConfigMock, request);
5556

@@ -58,7 +59,7 @@ public void returns404WhenAllowedButDoesntExist() throws Exception {
5859

5960
@Test
6061
public void returns405WhenNotAllowed() throws Exception {
61-
Request request = new Request("DELETE", "/not_allowed", new Header[0], "");
62+
Request request = new Request(Method.DELETE, "/not_allowed", new Header[0], "");
6263

6364
Response response = deleteResponder.respond(appConfigMock, request);
6465

@@ -73,7 +74,7 @@ public void allowsForm() throws Exception {
7374

7475
@Test
7576
public void handlesDELETE() throws Exception {
76-
Request deleteRequest = new Request("DELETE", "", null, null);
77+
Request deleteRequest = new Request(Method.DELETE, "", null, null);
7778
assertTrue(deleteResponder.handles(deleteRequest));
7879
}
7980
}

src/test/java/httpserver/responder/FormGetResponderTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package httpserver.responder;
22

33
import httpserver.AppConfig;
4+
import httpserver.Method;
45
import httpserver.request.Request;
56
import httpserver.file.FileOperator;
67
import httpserver.file.PathExaminer;
@@ -42,7 +43,7 @@ public FormGetResponderTest() throws IOException {
4243
@Test
4344
public void returnsOkResponseWithPayload() throws Exception {
4445
when(pathExaminerMock.pathExists(any())).thenReturn(true);
45-
Request request = new Request("GET", pathString, new Header[0], "");
46+
Request request = new Request(Method.GET, pathString, new Header[0], "");
4647

4748
Response response = formGetResponder.respond(appConfigMock, request);
4849

@@ -57,7 +58,7 @@ public void returnsOkResponseWithPayload() throws Exception {
5758
@Test
5859
public void createsFormFileIfDoesntExist() throws Exception {
5960
when(pathExaminerMock.pathExists(any())).thenReturn(false);
60-
Request request = new Request("GET", pathString, new Header[0], "");
61+
Request request = new Request(Method.GET, pathString, new Header[0], "");
6162

6263
Response response = formGetResponder.respond(appConfigMock, request);
6364

src/test/java/httpserver/responder/GetResponderTest.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package httpserver.responder;
22

33
import httpserver.AppConfig;
4+
import httpserver.Method;
45
import httpserver.Range;
56
import httpserver.file.Html;
67
import httpserver.file.PathExaminer;
@@ -44,7 +45,7 @@ public GetResponderTest() throws IOException {
4445

4546
@Test
4647
public void returns404ForBadPath() throws Exception {
47-
Request request = new Request("GET",
48+
Request request = new Request(Method.GET,
4849
"nonexistentfile123", new Header[0], "");
4950

5051
Response response = getResponder.respond(appConfigMock, request);
@@ -60,7 +61,7 @@ public void ifPathInRouteMapGetsResponderAndCallsRespond() throws Exception {
6061
Responder responderMock = mock(Responder.class);
6162
when(routeMapMock.hasRoute("/example_route")).thenReturn(true);
6263
when(routeMapMock.getResponderForRoute("/example_route")).thenReturn(responderMock);
63-
Request request = new Request("GET", "/example_route", new Header[0], "");
64+
Request request = new Request(Method.GET, "/example_route", new Header[0], "");
6465

6566
getResponder.respond(appConfigMock, request);
6667

@@ -77,7 +78,7 @@ public void getsFileContentsForPath() throws Exception {
7778
when(pathExaminerMock.isFile(fullPathMock)).thenReturn(true);
7879
byte[] payloadMock = new byte[0];
7980
when(pathExaminerMock.fileContents(fullPathMock)).thenReturn(payloadMock);
80-
Request request = new Request("GET", "/filename", new Header[0], "");
81+
Request request = new Request(Method.GET, "/filename", new Header[0], "");
8182

8283
Response response = getResponder.respond(appConfigMock, request);
8384

@@ -107,7 +108,7 @@ public void respondsToRangeRequest() throws Exception {
107108
Range rangeMock = mock(Range.class);
108109
when(rangeHeaderValueParserMock.parse(rangeHeaderValue, payloadMock.length)).thenReturn(rangeMock);
109110

110-
Request request = new Request("GET", "/filename", headers, "");
111+
Request request = new Request(Method.GET, "/filename", headers, "");
111112

112113
Response response = getResponder.respond(appConfigMock, request);
113114

@@ -125,7 +126,7 @@ public void getsDirContentsForPath() throws Exception {
125126
Path path2 = mock(Path.class);
126127
Path[] pathArrayMock = new Path[]{path1, path2};
127128
when(pathExaminerMock.directoryContents(fullPathMock)).thenReturn(pathArrayMock);
128-
Request request = new Request("GET", "/", new Header[0], "");
129+
Request request = new Request(Method.GET, "/", new Header[0], "");
129130

130131
Response response = getResponder.respond(appConfigMock, request);
131132

@@ -144,7 +145,7 @@ public void allowsForm() throws Exception {
144145

145146
@Test
146147
public void handlesGET() throws Exception {
147-
Request getRequest = new Request("GET", "", null, null);
148+
Request getRequest = new Request(Method.GET, "", null, null);
148149
assertTrue(getResponder.handles(getRequest));
149150
}
150151
}

src/test/java/httpserver/responder/HeadResponderTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package httpserver.responder;
22

33
import httpserver.AppConfig;
4+
import httpserver.Method;
45
import httpserver.request.Request;
56
import httpserver.file.Html;
67
import httpserver.file.PathExaminer;
@@ -43,7 +44,7 @@ public void writePayloadWritesEmptyByteArrayButContentLengthHeaderIsFull() throw
4344
mock(Html.class),
4445
mock(RangeHeaderValueParser.class));
4546

46-
Request request = new Request("HEAD", "/filename", new Header[0], "");
47+
Request request = new Request(Method.HEAD, "/filename", new Header[0], "");
4748

4849
Response response = headResponder.respond(appConfigMock, request);
4950

@@ -56,8 +57,8 @@ public void writePayloadWritesEmptyByteArrayButContentLengthHeaderIsFull() throw
5657
@Test
5758
public void onlyHandlesHEAD() throws Exception {
5859
HeadResponder headResponder = new HeadResponder(null, null, null, null);
59-
Request headRequest = new Request("HEAD", "", null, null);
60-
Request getRequest = new Request("GET", "", null, null);
60+
Request headRequest = new Request(Method.HEAD, "", null, null);
61+
Request getRequest = new Request(Method.GET, "", null, null);
6162

6263
assertFalse(headResponder.handles(getRequest));
6364
assertTrue(headResponder.handles(headRequest));

src/test/java/httpserver/responder/InvalidMethodResponderTest.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,4 @@ public void allowsAllPaths() throws Exception {
2929
assertTrue(invalidMethodResponder.allows("/logs"));
3030
assertTrue(invalidMethodResponder.allows("/other"));
3131
}
32-
33-
@Test
34-
public void handlesAllRequests() throws Exception {
35-
Request request = new Request("XYVABC", null, null, null);
36-
assertTrue(invalidMethodResponder.handles(request));
37-
}
3832
}

0 commit comments

Comments
 (0)