Skip to content

Commit fa6a213

Browse files
committed
Make the LogsResponder return 500 when Logger errors
1 parent 0412f90 commit fa6a213

File tree

3 files changed

+23
-11
lines changed

3 files changed

+23
-11
lines changed

src/main/java/httpserver/Logger.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,7 @@ private void createFileIfDoesntExist(Path path) {
3030
} catch (IOException e) {}
3131
}
3232

33-
public byte[] readLog() {
34-
try {
35-
return fileOperator.readContents(logPath);
36-
} catch (IOException e) {}
37-
return null;
33+
public byte[] readLog() throws IOException {
34+
return fileOperator.readContents(logPath);
3835
}
3936
}

src/main/java/httpserver/responder/special/LogsResponder.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,11 @@
66
import httpserver.responder.Responder;
77
import httpserver.response.OkResponse;
88
import httpserver.response.Response;
9+
import httpserver.response.ServerErrorResponse;
910
import httpserver.response.UnauthorizedResponse;
1011

12+
import java.io.IOException;
13+
1114
public class LogsResponder implements Responder {
1215
@Override
1316
public Response respond(AppConfig appConfig, Request request) {
@@ -17,8 +20,12 @@ public Response respond(AppConfig appConfig, Request request) {
1720
return new UnauthorizedResponse();
1821
}
1922

20-
byte[] log = appConfig.getLogger().readLog();
21-
return new OkResponse(log);
23+
try {
24+
byte[] log = appConfig.getLogger().readLog();
25+
return new OkResponse(log);
26+
} catch (IOException e) {
27+
return new ServerErrorResponse();
28+
}
2229
}
2330

2431
@Override

src/test/java/httpserver/responder/special/LogsResponderTest.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import httpserver.response.Response;
88
import org.junit.Test;
99

10+
import java.io.IOException;
11+
1012
import static org.junit.Assert.*;
1113
import static org.mockito.Mockito.*;
1214

@@ -25,7 +27,7 @@ public LogsResponderTest() {
2527
}
2628

2729
@Test
28-
public void callsReadLogOnAppConfigLogger() {
30+
public void callsReadLogOnAppConfigLogger() throws Exception {
2931
Header[] headers = new Header[]{new Header("Authorization", "Basic YWRtaW46aHVudGVyMg==")};
3032
Request request = new Request("GET", "test", headers, "");
3133

@@ -36,14 +38,20 @@ public void callsReadLogOnAppConfigLogger() {
3638
}
3739

3840
@Test
39-
public void returnsUnauthorizedResponseWhenIncorrectAuthHeader() {
40-
Request request = new Request("GET", "test", new Header[0], "");
41+
public void returnsUnauthorizedResponseWhenIncorrectAuthHeader() throws Exception {
42+
Header[] headers = new Header[]{new Header("Authorization", "Basic YWRtaW46aHVudGVyMg==")};
43+
Request request = new Request("GET", "test", headers, "");
44+
when(loggerMock.readLog()).thenThrow(new IOException());
4145

4246
Response response = logsResponder.respond(appConfigMock, request);
4347

44-
assertEquals(401, response.getStatusCode());
48+
assertEquals(500, response.getStatusCode());
4549
}
4650

51+
@Test
52+
public void returns500ResponseWhenLogErrors() throws Exception {
53+
Request request = new Request("GET", "test", new Header[0], "");
54+
}
4755
@Test
4856
public void handlesLogs() throws Exception {
4957
assertTrue(logsResponder.handles("/logs"));

0 commit comments

Comments
 (0)