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/ 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/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..d367ff6 --- /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 회원가입_테스트() 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