From 33d0cc1482cb4e998339a38910159a33342678f4 Mon Sep 17 00:00:00 2001 From: JeongeunChoi Date: Mon, 11 Jul 2022 17:06:25 +0900 Subject: [PATCH 1/4] =?UTF-8?q?Issue=20#8=20feat:=20RegisterRequest.class?= =?UTF-8?q?=20@Builder=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=EC=BB=A8?= =?UTF-8?q?=ED=8A=B8=EB=A1=A4=EB=9F=AC=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=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 --- build.gradle | 3 + .../controller/user/MemberRestController.java | 4 +- .../controller/user/RegisterRequest.java | 2 + .../gdsc/pknu/backend/domain/member/Role.java | 5 + src/main/resources/application.yml | 18 +++ .../user/MemberRestControllerTest.java | 103 ++++++++++++++++++ src/test/resources/application.yml | 16 +++ 7 files changed, 149 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/application.yml create mode 100644 src/test/java/com/gdsc/pknu/backend/controller/user/MemberRestControllerTest.java create mode 100644 src/test/resources/application.yml diff --git a/build.gradle b/build.gradle index 942fd7f..3f314f7 100644 --- a/build.gradle +++ b/build.gradle @@ -24,6 +24,8 @@ dependencies { implementation 'com.h2database:h2' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-jdbc' + implementation 'junit:junit:4.13.1' + implementation 'junit:junit:4.13.1' runtimeOnly 'mysql:mysql-connector-java' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' @@ -36,6 +38,7 @@ dependencies { implementation group: 'com.auth0', name: 'auth0', version: "$auth0_auth0_version" implementation group: 'com.auth0', name: 'java-jwt', version: "$auth0_java_jwt_version" implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.4' + implementation 'com.google.code.gson:gson:2.9.0' } tasks.named('test') { diff --git a/src/main/java/com/gdsc/pknu/backend/controller/user/MemberRestController.java b/src/main/java/com/gdsc/pknu/backend/controller/user/MemberRestController.java index 64a8aaa..c5f8c7c 100644 --- a/src/main/java/com/gdsc/pknu/backend/controller/user/MemberRestController.java +++ b/src/main/java/com/gdsc/pknu/backend/controller/user/MemberRestController.java @@ -25,7 +25,7 @@ public MemberRestController(MemberService memberService, Jwt jwt) { public ApiRes register( @ModelAttribute RegisterRequest request, @RequestPart(required = false)MultipartFile imageFile - ){ + ){ Member member = memberService.register(Member.builder() .email(new Email(request.getEmail())) @@ -43,4 +43,4 @@ public ApiRes register( return ApiRes.SUCCESS(new RegisterResult(new MemberDto(member), token)); } -} +} \ No newline at end of file diff --git a/src/main/java/com/gdsc/pknu/backend/controller/user/RegisterRequest.java b/src/main/java/com/gdsc/pknu/backend/controller/user/RegisterRequest.java index c3b3057..cae06d0 100644 --- a/src/main/java/com/gdsc/pknu/backend/controller/user/RegisterRequest.java +++ b/src/main/java/com/gdsc/pknu/backend/controller/user/RegisterRequest.java @@ -1,5 +1,6 @@ package com.gdsc.pknu.backend.controller.user; +import lombok.Builder; import lombok.Getter; import lombok.Setter; import org.apache.commons.lang3.builder.ToStringBuilder; @@ -7,6 +8,7 @@ @Getter @Setter +@Builder public class RegisterRequest { private String email; private String password; diff --git a/src/main/java/com/gdsc/pknu/backend/domain/member/Role.java b/src/main/java/com/gdsc/pknu/backend/domain/member/Role.java index 5814d6c..38c2b31 100644 --- a/src/main/java/com/gdsc/pknu/backend/domain/member/Role.java +++ b/src/main/java/com/gdsc/pknu/backend/domain/member/Role.java @@ -1,9 +1,14 @@ package com.gdsc.pknu.backend.domain.member; +import com.google.gson.annotations.SerializedName; + +import java.io.Serial; import java.util.Arrays; public enum Role { + @SerializedName("ROLE_USER") USER("ROLE_USER"), + @SerializedName("ROLE_ADMIN") ADMIN("ROLE_ADMIN"); private final String value; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..37d19e7 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,18 @@ +cloud: +aws: + credentials: + secret-key: zv5BNLeXj9SMqxi5DJ0saQRYze9zGWWlGS/e0obb + access-key: AKIAUDWVDN7CRA3S3IOO + s3: + bucket: gdscpknubucket + region: + static: ap-northeast-2 + stack: + auto: 'false' +jwt: + token: + header: Authorization + issuer: test + secret: dbUzAdBo/+T1eXO9B2d+eWRgRx/EhzZ1GVsgPRNsxkawSw7W93mRxr0C3cswHKw0np03mLiqNgoJClH0XulECg== + algorithm: "HS256" + expirySeconds: 1800 \ No newline at end of file diff --git a/src/test/java/com/gdsc/pknu/backend/controller/user/MemberRestControllerTest.java b/src/test/java/com/gdsc/pknu/backend/controller/user/MemberRestControllerTest.java new file mode 100644 index 0000000..c97cb58 --- /dev/null +++ b/src/test/java/com/gdsc/pknu/backend/controller/user/MemberRestControllerTest.java @@ -0,0 +1,103 @@ +package com.gdsc.pknu.backend.controller.user; + +import com.gdsc.pknu.backend.controller.ApiRes; +import com.gdsc.pknu.backend.domain.authentication.Jwt; +import com.gdsc.pknu.backend.domain.member.Email; +import com.gdsc.pknu.backend.domain.member.Member; +import com.gdsc.pknu.backend.domain.member.MemberRepository; +import com.gdsc.pknu.backend.domain.member.Role; +import com.gdsc.pknu.backend.service.MemberService; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonObject; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Bean; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.web.servlet.MockMvc; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.contains; +import static org.mockito.Mockito.verify; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +@WebMvcTest(MemberRestController.class) +class MemberRestControllerTest { + + @Autowired + MockMvc mvc; + + @MockBean + MemberService memberService; + + @MockBean + Jwt jwt; + + @Test + @DisplayName("MemberRestControllerTest") + void register() throws Exception { + // given + RegisterRequest reg = RegisterRequest.builder() + .email("gdsc@gmail.com") + .password("asdfgdsc") + .name("최정은") + .studentNumber("202012345") + .majorId(1L) + .phoneNumber("01012345678") + .generation(1) + .imagePath("asdfghjk") + .githubUrl("pkgdsc123") + .build(); + + Member member = Member.builder() + .email(new Email(reg.getEmail())) + .id(1L) + .password(reg.getPassword()) + .studentNumber(reg.getStudentNumber()) + .name(reg.getName()) + .phoneNumber(reg.getPhoneNumber()) + .majorId(reg.getMajorId()) + .imagePath(reg.getImagePath()) + .githubUrl(reg.getGithubUrl()) + .build(); + + String token = member.generateApiToken(jwt, new String[]{"ROLE_USER"}); + + // when + ApiRes apiRes = ApiRes.SUCCESS(new RegisterResult(new MemberDto(member), token)); + + // then + assertEquals(true, apiRes.isSuccess()); + +// // given +// RegisterRequest reg = RegisterRequest.builder() +// .email("gdsc@gmail.com") +// .password("asdfgdsc") +// .name("최정은") +// .studentNumber("202012345") +// .majorId(1L) +// .phoneNumber("01012345678") +// .generation(1) +// .imagePath("asdfghjk") +// .githubUrl("pkgdsc123") +// .build(); +// Gson gson = new GsonBuilder().create(); +// String registerRequest = gson.toJson(reg); +// +// // when +// this.mvc.perform(post("/") +// .contentType(MediaType.MULTIPART_FORM_DATA) +// .content(registerRequest)) +// // then +// .andExpect(jsonPath("success", true).exists()); + } +} \ No newline at end of file diff --git a/src/test/resources/application.yml b/src/test/resources/application.yml new file mode 100644 index 0000000..0ced088 --- /dev/null +++ b/src/test/resources/application.yml @@ -0,0 +1,16 @@ +cloud: +aws: + credentials: + secret-key: zv5BNLeXj9SMqxi5DJ0saQRYze9zGWWlGS/e0obb + access-key: AKIAUDWVDN7CRA3S3IOO + s3: + bucket: gdscpknubucket + region: + static: ap-northeast-2 + stack: + auto: 'false' + jwt: + header: Authorization + issuer: test + secretKey: dbUzAdBo/+T1eXO9B2d+eWRgRx/EhzZ1GVsgPRNsxkawSw7W93mRxr0C3cswHKw0np03mLiqNgoJClH0XulECg== + algorithm: "HS256" \ No newline at end of file From 007917805b64d2335dda365ad05b2548abc9972d Mon Sep 17 00:00:00 2001 From: JeongeunChoi Date: Mon, 11 Jul 2022 21:06:27 +0900 Subject: [PATCH 2/4] =?UTF-8?q?Issue=20#8=20rename:=20=ED=9A=8C=EC=9B=90?= =?UTF-8?q?=EA=B0=80=EC=9E=85=20=EC=BB=A8=ED=8A=B8=EB=A1=A4=EB=9F=AC=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=ED=95=A8=EC=88=98=20=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pknu/backend/controller/user/MemberRestControllerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/gdsc/pknu/backend/controller/user/MemberRestControllerTest.java b/src/test/java/com/gdsc/pknu/backend/controller/user/MemberRestControllerTest.java index c97cb58..d367ff6 100644 --- a/src/test/java/com/gdsc/pknu/backend/controller/user/MemberRestControllerTest.java +++ b/src/test/java/com/gdsc/pknu/backend/controller/user/MemberRestControllerTest.java @@ -44,7 +44,7 @@ class MemberRestControllerTest { @Test @DisplayName("MemberRestControllerTest") - void register() throws Exception { + void 회원가입_테스트() throws Exception { // given RegisterRequest reg = RegisterRequest.builder() .email("gdsc@gmail.com") From 8a778787547c8effc2ded7bc78fc095eb52aa53e Mon Sep 17 00:00:00 2001 From: JeongeunChoi Date: Tue, 12 Jul 2022 22:20:30 +0900 Subject: [PATCH 3/4] =?UTF-8?q?Issue=20#8=20chore:=20gitignore=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 04c5090..6dda0cf 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,4 @@ out/ ### VS Code ### .vscode/ src/main/resources/application.properties +/src/main/resources/ From 27721818798fb8e7b3c11c9ebd11682f3a486352 Mon Sep 17 00:00:00 2001 From: JeongeunChoi Date: Tue, 12 Jul 2022 22:24:40 +0900 Subject: [PATCH 4/4] =?UTF-8?q?Issue=20#8=20chore:=20gitignore=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application.yml | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 src/main/resources/application.yml diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml deleted file mode 100644 index 37d19e7..0000000 --- a/src/main/resources/application.yml +++ /dev/null @@ -1,18 +0,0 @@ -cloud: -aws: - credentials: - secret-key: zv5BNLeXj9SMqxi5DJ0saQRYze9zGWWlGS/e0obb - access-key: AKIAUDWVDN7CRA3S3IOO - s3: - bucket: gdscpknubucket - region: - static: ap-northeast-2 - stack: - auto: 'false' -jwt: - token: - header: Authorization - issuer: test - secret: dbUzAdBo/+T1eXO9B2d+eWRgRx/EhzZ1GVsgPRNsxkawSw7W93mRxr0C3cswHKw0np03mLiqNgoJClH0XulECg== - algorithm: "HS256" - expirySeconds: 1800 \ No newline at end of file