From 99b7042167113093cd434ef97e67f0a074b8d1fa Mon Sep 17 00:00:00 2001 From: ujamdev Date: Sun, 10 Sep 2023 15:11:29 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=A1=9C=EA=B7=B8=EC=95=84=EC=9B=83=20?= =?UTF-8?q?API=20=ED=95=B8=EB=93=A4=EB=9F=AC=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AuthController.java AuthControllerTest.java - 로그아웃 핸들러 구현 - 로그아웃 API 호출 시 정상 작동하는지 검증 --- .../auth/presentation/AuthController.java | 19 +++++++ .../auth/presentation/AuthControllerTest.java | 50 +++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 src/main/java/io/devlabs/keytree/domains/auth/presentation/AuthController.java create mode 100644 src/test/java/io/devlabs/keytree/domains/auth/presentation/AuthControllerTest.java diff --git a/src/main/java/io/devlabs/keytree/domains/auth/presentation/AuthController.java b/src/main/java/io/devlabs/keytree/domains/auth/presentation/AuthController.java new file mode 100644 index 0000000..475fea9 --- /dev/null +++ b/src/main/java/io/devlabs/keytree/domains/auth/presentation/AuthController.java @@ -0,0 +1,19 @@ +package io.devlabs.keytree.domains.auth.presentation; + +import io.devlabs.keytree.domains.auth.application.AuthService; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController() +@RequiredArgsConstructor +public class AuthController { + + private final AuthService authService; + + @PostMapping("/logout") + public String logout (HttpServletRequest request) { + return authService.logout(request); + } +} diff --git a/src/test/java/io/devlabs/keytree/domains/auth/presentation/AuthControllerTest.java b/src/test/java/io/devlabs/keytree/domains/auth/presentation/AuthControllerTest.java new file mode 100644 index 0000000..3f0fe84 --- /dev/null +++ b/src/test/java/io/devlabs/keytree/domains/auth/presentation/AuthControllerTest.java @@ -0,0 +1,50 @@ +package io.devlabs.keytree.domains.auth.presentation; + +import io.restassured.RestAssured; +import io.restassured.response.ExtractableResponse; +import io.restassured.response.Response; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.test.annotation.DirtiesContext; + +import static org.assertj.core.api.Assertions.assertThat; + +@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public class AuthControllerTest { + + @LocalServerPort + private int port; + + @BeforeEach + void setUp() { + RestAssured.port = port; + } + + @DisplayName("로그아웃 API") + @Test + void logout() { + // given + + // when + ExtractableResponse response = + RestAssured.given() + .log() + .all() + .contentType(MediaType.APPLICATION_JSON_VALUE) + .when() + .post("/logout") + .then() + .log() + .all() + .extract(); + + // then + assertThat(response.statusCode()).isEqualTo(HttpStatus.OK.value()); + } +}