From 90a8be7fe70b32312bb028ce7cd913aeb946bd68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AA=85=EC=A4=80?= <86913355+mjj111@users.noreply.github.com> Date: Fri, 12 Jan 2024 23:15:01 +0900 Subject: [PATCH 1/9] =?UTF-8?q?chore=20:=20Spring=20REST=20Docs=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=EC=9D=84=20=EC=9C=84=ED=95=9C=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/build.gradle b/build.gradle index ce35e2c5..7d6c47c2 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,8 @@ plugins { id 'java' id 'org.springframework.boot' version '3.2.1' id 'io.spring.dependency-management' version '1.1.4' + id "org.asciidoctor.convert" version "1.5.9.2" + } group = 'com.aliens' @@ -18,6 +20,28 @@ repositories { dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' + asciidoctor 'org.springframework.restdocs:spring-restdocs-asciidoctor' + testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc' +} + +ext { + snippetsDir = file('build/generated-snippets') +} + +test { + outputs.dir snippetsDir +} + +asciidoctor { + inputs.dir snippetsDir + dependsOn test +} + +bootJar { + dependsOn asciidoctor + from ("${asciidoctor.outputDir}/html5") { + into 'static/docs' + } } tasks.named('test') { From a7ba3d266521e1b157833106e2f1c72f3bbae351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AA=85=EC=A4=80?= <86913355+mjj111@users.noreply.github.com> Date: Fri, 12 Jan 2024 23:16:43 +0900 Subject: [PATCH 2/9] =?UTF-8?q?feat(AuthController)=20:=20Spring=20REST=20?= =?UTF-8?q?Docs=20=EC=A0=81=EC=9A=A9=EC=9D=84=20=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?=EC=9E=84=EC=8B=9C=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=BB=A8?= =?UTF-8?q?=ED=8A=B8=EB=A1=A4=EB=9F=AC=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/controller/AuthController.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/main/java/com/aliens/backend/auth/controller/AuthController.java diff --git a/src/main/java/com/aliens/backend/auth/controller/AuthController.java b/src/main/java/com/aliens/backend/auth/controller/AuthController.java new file mode 100644 index 00000000..de915c3a --- /dev/null +++ b/src/main/java/com/aliens/backend/auth/controller/AuthController.java @@ -0,0 +1,25 @@ +package com.aliens.backend.auth.controller; + +import com.aliens.backend.auth.service.AuthService; +import com.aliens.backend.auth.controller.dto.AuthToken; +import com.aliens.backend.auth.controller.dto.LoginRequest; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + + +@RequestMapping("/authentication") +@RestController +public class AuthController { + + private final AuthService authService; + + public AuthController(final AuthService authService) { + this.authService = authService; + } + + @PostMapping + public ResponseEntity login(@RequestBody final LoginRequest loginRequest) { + AuthToken authToken = authService.login(loginRequest); + return ResponseEntity.ok(authToken); + } +} \ No newline at end of file From b94f1acffe011343a3081f4197921ff3231d6cae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AA=85=EC=A4=80?= <86913355+mjj111@users.noreply.github.com> Date: Fri, 12 Jan 2024 23:19:36 +0900 Subject: [PATCH 3/9] =?UTF-8?q?feat(LoginRequest)=20:=20=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=9D=B8=20=EC=BB=A8=ED=8A=B8=EB=A1=A4=EB=9F=AC?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EC=82=AC=EC=9A=A9=EB=90=98=EB=8A=94=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=9A=94=EC=B2=AD=20DTO=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/aliens/backend/auth/controller/dto/LoginRequest.java | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 src/main/java/com/aliens/backend/auth/controller/dto/LoginRequest.java diff --git a/src/main/java/com/aliens/backend/auth/controller/dto/LoginRequest.java b/src/main/java/com/aliens/backend/auth/controller/dto/LoginRequest.java new file mode 100644 index 00000000..69a1cdf7 --- /dev/null +++ b/src/main/java/com/aliens/backend/auth/controller/dto/LoginRequest.java @@ -0,0 +1,4 @@ +package com.aliens.backend.auth.controller.dto; + +public record LoginRequest(String email, String password) { +} From c4326180dfb65bdfaf4f04270a36ee520765d8bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AA=85=EC=A4=80?= <86913355+mjj111@users.noreply.github.com> Date: Fri, 12 Jan 2024 23:20:17 +0900 Subject: [PATCH 4/9] =?UTF-8?q?feat(AuthToken)=20:=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=ED=9B=84=20=EB=B0=9C=EA=B8=89=EB=90=98=EB=8A=94=20?= =?UTF-8?q?=ED=86=A0=ED=81=B0=20=EA=B0=9D=EC=B2=B4DTO=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/aliens/backend/auth/controller/dto/AuthToken.java | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 src/main/java/com/aliens/backend/auth/controller/dto/AuthToken.java diff --git a/src/main/java/com/aliens/backend/auth/controller/dto/AuthToken.java b/src/main/java/com/aliens/backend/auth/controller/dto/AuthToken.java new file mode 100644 index 00000000..cdac15c7 --- /dev/null +++ b/src/main/java/com/aliens/backend/auth/controller/dto/AuthToken.java @@ -0,0 +1,4 @@ +package com.aliens.backend.auth.controller.dto; + +public record AuthToken(String accessToken, String refreshToken) { +} From fb7a571df93b6d4b4fda1560b3594b419cf5db61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AA=85=EC=A4=80?= <86913355+mjj111@users.noreply.github.com> Date: Fri, 12 Jan 2024 23:21:40 +0900 Subject: [PATCH 5/9] =?UTF-8?q?feat(AuthService)=20:=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EA=B8=B0=EB=8A=A5=EC=9D=84=20=EA=B0=80=EC=A7=84=20?= =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=20=EB=A9=94=EC=84=9C=EB=93=9C=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/aliens/backend/auth/service/AuthService.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/main/java/com/aliens/backend/auth/service/AuthService.java diff --git a/src/main/java/com/aliens/backend/auth/service/AuthService.java b/src/main/java/com/aliens/backend/auth/service/AuthService.java new file mode 100644 index 00000000..046c41d5 --- /dev/null +++ b/src/main/java/com/aliens/backend/auth/service/AuthService.java @@ -0,0 +1,12 @@ +package com.aliens.backend.auth.service; + +import com.aliens.backend.auth.controller.dto.AuthToken; +import com.aliens.backend.auth.controller.dto.LoginRequest; +import org.springframework.stereotype.Service; + +@Service +public class AuthService { + public AuthToken login(LoginRequest loginRequest) { + return new AuthToken("accessToken", "refreshToken"); + } +} From a7f7c70b3af080e5a100a9232977aed68355a167 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AA=85=EC=A4=80?= <86913355+mjj111@users.noreply.github.com> Date: Fri, 12 Jan 2024 23:22:22 +0900 Subject: [PATCH 6/9] =?UTF-8?q?test(AuthDocTest)=20:=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EA=B8=B0=EB=8A=A5=EC=9D=84=20API=20=EB=AC=B8?= =?UTF-8?q?=EC=84=9C=ED=99=94=20=ED=95=98=EB=8F=84=EB=A1=9D=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/aliens/backend/docs/AuthDocTest.java | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/test/java/com/aliens/backend/docs/AuthDocTest.java diff --git a/src/test/java/com/aliens/backend/docs/AuthDocTest.java b/src/test/java/com/aliens/backend/docs/AuthDocTest.java new file mode 100644 index 00000000..c2cf97a1 --- /dev/null +++ b/src/test/java/com/aliens/backend/docs/AuthDocTest.java @@ -0,0 +1,52 @@ +package com.aliens.backend.docs; + +import com.aliens.backend.auth.controller.dto.AuthToken; +import com.aliens.backend.auth.controller.dto.LoginRequest; +import com.aliens.backend.auth.service.AuthService; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDocs; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; +import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; +import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.post; +import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; +import static org.springframework.restdocs.payload.PayloadDocumentation.requestFields; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@AutoConfigureMockMvc +@AutoConfigureRestDocs +@SpringBootTest +class AuthDocTest { + + @Autowired + private MockMvc mockMvc; + + @MockBean + private AuthService authService; + @Test + void create() throws Exception { + final LoginRequest request = new LoginRequest("email","password"); + final AuthToken response = new AuthToken("accessToken", "refreshToken"); + when(authService.login(any())).thenReturn(response); + + ObjectMapper objectMapper = new ObjectMapper(); + this.mockMvc.perform(post("/authentication") + .content(objectMapper.writeValueAsString(request)) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andDo(document("auth-login", + requestFields( + fieldWithPath("email").description("이메일"), + fieldWithPath("password").description("비밀번호") + ) + )); + } +} From 6095a7d83cf7a4519826b48f537ba322e6bbb3cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AA=85=EC=A4=80?= <86913355+mjj111@users.noreply.github.com> Date: Fri, 12 Jan 2024 23:23:41 +0900 Subject: [PATCH 7/9] =?UTF-8?q?docs(index.adoc)=20:=20API=20=EB=AC=B8?= =?UTF-8?q?=EC=84=9C=ED=99=94=20=ED=8B=80=EC=9D=84=20=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?=EB=AC=B8=EC=84=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/docs/asciidoc/index.adoc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/docs/asciidoc/index.adoc diff --git a/src/docs/asciidoc/index.adoc b/src/docs/asciidoc/index.adoc new file mode 100644 index 00000000..5f6e3acd --- /dev/null +++ b/src/docs/asciidoc/index.adoc @@ -0,0 +1,18 @@ += Spring REST Docs +:toc: left +:toclevels: 2 +:sectlinks: + +[[resources-post]] +== Post + +[[resources-post-create]] +=== Post 생성 + +==== HTTP request + +include::{snippets}/auth-login/http-request.adoc[] + +==== HTTP response + +include::{snippets}/auth-login/http-response.adoc[] \ No newline at end of file From 2b93b52d24b7fc85e458438af090d283ca9efe94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AA=85=EC=A4=80?= <86913355+mjj111@users.noreply.github.com> Date: Fri, 12 Jan 2024 23:42:37 +0900 Subject: [PATCH 8/9] =?UTF-8?q?test(AuthDocTest)=20:=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EB=84=A4=EC=9D=B4=EB=B0=8D=20login=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/com/aliens/backend/docs/AuthDocTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/aliens/backend/docs/AuthDocTest.java b/src/test/java/com/aliens/backend/docs/AuthDocTest.java index c2cf97a1..bba4f61d 100644 --- a/src/test/java/com/aliens/backend/docs/AuthDocTest.java +++ b/src/test/java/com/aliens/backend/docs/AuthDocTest.java @@ -31,8 +31,9 @@ class AuthDocTest { @MockBean private AuthService authService; + @Test - void create() throws Exception { + void login() throws Exception { final LoginRequest request = new LoginRequest("email","password"); final AuthToken response = new AuthToken("accessToken", "refreshToken"); when(authService.login(any())).thenReturn(response); From f1989745ac16f9742f57e83f840b673a2d4793cc Mon Sep 17 00:00:00 2001 From: Oniqued Date: Sat, 13 Jan 2024 16:31:04 +0900 Subject: [PATCH 9/9] =?UTF-8?q?chore=20:=20Dockerfile=20=EA=B5=AC=EC=84=B1?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..943c1858 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,4 @@ +FROM openjdk:17-ea-11-jdk-slim +VOLUME /tmp +COPY build/libs/backend-0.0.1-SNAPSHOT.jar FriendShip.jar +ENTRYPOINT ["java", "-jar", "FriendShip.jar"] \ No newline at end of file