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()); + } +}