diff --git a/src/main/java/webserver/RequestHandler.java b/src/main/java/webserver/RequestHandler.java index 1edcd62..71079b5 100644 --- a/src/main/java/webserver/RequestHandler.java +++ b/src/main/java/webserver/RequestHandler.java @@ -45,7 +45,7 @@ public void run() { HttpRequestBody body = requestMessage.body(); registerNewUser(body); - responseDynamic(out); + responseRedirect(out, URI.create("/index.html")); } } catch (IOException e) { @@ -81,6 +81,13 @@ private void responseDynamic(OutputStream out) { responseBody(dos, body); } + private void responseRedirect(OutputStream out, URI uri) { + DataOutputStream dos = new DataOutputStream(out); + byte[] body = new byte[]{}; + response302Header(dos, uri); + responseBody(dos, body); + } + private boolean isStaticResourceRequest(URI uri) { return !uri.getPath().equals(USER_CREATE_URI_PATH); } @@ -96,6 +103,16 @@ private void response200Header(DataOutputStream dos, int lengthOfBodyContent) { } } + private void response302Header(DataOutputStream dos, URI uri) { + try { + dos.writeBytes("HTTP/1.1 302 FOUND \r\n"); + dos.writeBytes("Location: " + uri.getPath() + "\r\n"); + dos.writeBytes("\r\n"); + } catch (IOException e) { + log.error(e.getMessage()); + } + } + private void responseBody(DataOutputStream dos, byte[] body) { try { dos.write(body, 0, body.length); diff --git a/src/test/java/webserver/HttpRequestMessageTest.java b/src/test/java/webserver/HttpRequestMessageTest.java index e384009..bed13ad 100644 --- a/src/test/java/webserver/HttpRequestMessageTest.java +++ b/src/test/java/webserver/HttpRequestMessageTest.java @@ -74,11 +74,4 @@ void parseTest() throws IOException { assertThat(body.get("password")).isEqualTo("1234"); } } - - @Test - void test() { - String str = "userId=jay&password=1234"; - System.out.println(str.length()); - System.out.println(str.getBytes().length); - } } \ No newline at end of file diff --git a/src/test/java/webserver/RequestHandlerTest.java b/src/test/java/webserver/RequestHandlerTest.java index da431d1..f1fbdce 100644 --- a/src/test/java/webserver/RequestHandlerTest.java +++ b/src/test/java/webserver/RequestHandlerTest.java @@ -13,11 +13,13 @@ import java.net.ServerSocket; import java.net.URI; import java.net.http.HttpClient; +import java.net.http.HttpHeaders; import java.net.http.HttpRequest; import java.net.http.HttpRequest.BodyPublisher; import java.net.http.HttpRequest.BodyPublishers; import java.net.http.HttpResponse; import java.net.http.HttpResponse.BodyHandlers; +import java.util.Optional; import java.util.Random; import static org.assertj.core.api.Assertions.assertThat; @@ -61,7 +63,15 @@ void createUserTest() throws IOException, InterruptedException { User savedUser = DataBase.findUserById(expectedUser.getUserId()); // then - assertThat(response.statusCode()).isEqualTo(200); + assertThat(response.statusCode()).isEqualTo(302); + + HttpHeaders headers = response.headers(); + assertThat(headers).isNotNull(); + + Optional locationHeader = headers.firstValue("Location"); + assertThat(locationHeader.isPresent()).isTrue(); + assertThat(locationHeader.orElseThrow()).isEqualTo("/index.html"); + assertThat(savedUser).isNotNull(); assertThat(savedUser).isEqualTo(expectedUser); }