From 9e25275a42a3e6e2c9c9c39c60c8b1f18b3f0705 Mon Sep 17 00:00:00 2001 From: naekang Date: Sat, 3 Dec 2022 17:33:36 +0900 Subject: [PATCH 01/11] =?UTF-8?q?feat:=20=EC=82=AC=EC=9A=A9=EC=9E=90=20?= =?UTF-8?q?=ED=9A=8C=EC=9B=90=20=EA=B0=80=EC=9E=85=20Controller=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 --- .../modulemember/controller/MemberController.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/module-member/src/main/java/com/gaethering/modulemember/controller/MemberController.java b/module-member/src/main/java/com/gaethering/modulemember/controller/MemberController.java index 04198f1..b697330 100644 --- a/module-member/src/main/java/com/gaethering/modulemember/controller/MemberController.java +++ b/module-member/src/main/java/com/gaethering/modulemember/controller/MemberController.java @@ -19,6 +19,14 @@ public class MemberController { private final MemberService memberService; + @PostMapping("/sign-up") + public ResponseEntity signUp(@RequestBody SignUpRequest signUpRequest) { + + memberService.signUp(signUpRequest); + + return new ResponseEntity<>(HttpStatus.CREATED); + } + @PostMapping("/email-auth") public ResponseEntity sendEmailAuthCode(@RequestBody EmailAuthRequest emailAuthRequest) { memberService.sendEmailAuthCode(emailAuthRequest.getEmail()); From f7110b99e8871f26b17a15539bdeb2b95c51d49d Mon Sep 17 00:00:00 2001 From: naekang Date: Sat, 3 Dec 2022 17:37:43 +0900 Subject: [PATCH 02/11] =?UTF-8?q?feat:=20=EC=82=AC=EC=9A=A9=EC=9E=90=20?= =?UTF-8?q?=ED=9A=8C=EC=9B=90=20=EA=B0=80=EC=9E=85=20Request=20DTO=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 --- .../controller/MemberController.java | 1 + .../modulemember/dto/SignUpRequest.java | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 module-member/src/main/java/com/gaethering/modulemember/dto/SignUpRequest.java diff --git a/module-member/src/main/java/com/gaethering/modulemember/controller/MemberController.java b/module-member/src/main/java/com/gaethering/modulemember/controller/MemberController.java index b697330..b22a2bc 100644 --- a/module-member/src/main/java/com/gaethering/modulemember/controller/MemberController.java +++ b/module-member/src/main/java/com/gaethering/modulemember/controller/MemberController.java @@ -3,6 +3,7 @@ import com.gaethering.modulemember.dto.ConfirmEmailRequest; import com.gaethering.modulemember.dto.ConfirmEmailResponse; import com.gaethering.modulemember.dto.EmailAuthRequest; +import com.gaethering.modulemember.dto.SignUpRequest; import com.gaethering.modulemember.service.MemberService; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; diff --git a/module-member/src/main/java/com/gaethering/modulemember/dto/SignUpRequest.java b/module-member/src/main/java/com/gaethering/modulemember/dto/SignUpRequest.java new file mode 100644 index 0000000..60cba67 --- /dev/null +++ b/module-member/src/main/java/com/gaethering/modulemember/dto/SignUpRequest.java @@ -0,0 +1,32 @@ +package com.gaethering.modulemember.dto; + +import com.gaethering.moduledomain.domain.type.Gender; +import java.time.LocalDate; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class SignUpRequest { + + private String email; + + private String nickname; + + private String password; + + private String passwordCheck; + + private String name; + + private String phone; + + private LocalDate birth; + + private Gender gender; + +} From 76ae2a9de60b87c537ef82b645b115af93909b89 Mon Sep 17 00:00:00 2001 From: naekang Date: Sat, 3 Dec 2022 17:46:42 +0900 Subject: [PATCH 03/11] =?UTF-8?q?feat:=20=EB=B9=84=EB=B0=80=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=EC=9D=B8=EC=BD=94=EB=94=A9=EC=9D=84=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20Security=20=EC=9D=98=EC=A1=B4=EC=84=B1=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 --- module-member/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/module-member/build.gradle b/module-member/build.gradle index 7c9ca4f..d0be785 100644 --- a/module-member/build.gradle +++ b/module-member/build.gradle @@ -1,6 +1,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-mail' + implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-data-redis' runtimeOnly 'com.h2database:h2' From 6901465fc42344184508e6bd7619ace1b4915433 Mon Sep 17 00:00:00 2001 From: naekang Date: Sat, 3 Dec 2022 18:41:51 +0900 Subject: [PATCH 04/11] =?UTF-8?q?feat:=20Member=20->=20MemberProfile=20cas?= =?UTF-8?q?cade=20=EC=98=B5=EC=85=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gaethering/moduledomain/domain/member/Member.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/module-domain/src/main/java/com/gaethering/moduledomain/domain/member/Member.java b/module-domain/src/main/java/com/gaethering/moduledomain/domain/member/Member.java index 2a7020c..9e567fe 100644 --- a/module-domain/src/main/java/com/gaethering/moduledomain/domain/member/Member.java +++ b/module-domain/src/main/java/com/gaethering/moduledomain/domain/member/Member.java @@ -6,6 +6,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; @@ -51,7 +52,7 @@ public class Member extends BaseTimeEntity { @Enumerated(EnumType.STRING) private MemberRole role; - @OneToOne(fetch = FetchType.LAZY) + @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "member_profile_id") private MemberProfile memberProfile; From 96d11a712270d9ec7d793a85a21506cb2a9072dc Mon Sep 17 00:00:00 2001 From: naekang Date: Sat, 3 Dec 2022 18:48:41 +0900 Subject: [PATCH 05/11] =?UTF-8?q?feat:=20=ED=9A=8C=EC=9B=90=20=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20Service=20=EC=9E=91=EC=84=B1=20=EB=B0=8F=20Request?= =?UTF-8?q?=20=EC=9D=B4=EB=A9=94=EC=9D=BC=20=EC=9D=B8=EC=A6=9D=20=EC=97=AC?= =?UTF-8?q?=EB=B6=80=20=ED=95=84=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modulemember/dto/SignUpRequest.java | 4 +++ .../modulemember/service/MemberService.java | 4 +++ .../service/MemberServiceImpl.java | 25 +++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/module-member/src/main/java/com/gaethering/modulemember/dto/SignUpRequest.java b/module-member/src/main/java/com/gaethering/modulemember/dto/SignUpRequest.java index 60cba67..b7f87c1 100644 --- a/module-member/src/main/java/com/gaethering/modulemember/dto/SignUpRequest.java +++ b/module-member/src/main/java/com/gaethering/modulemember/dto/SignUpRequest.java @@ -1,5 +1,6 @@ package com.gaethering.modulemember.dto; +import com.fasterxml.jackson.annotation.JsonProperty; import com.gaethering.moduledomain.domain.type.Gender; import java.time.LocalDate; import lombok.AllArgsConstructor; @@ -29,4 +30,7 @@ public class SignUpRequest { private Gender gender; + @JsonProperty("isEmailAuth") + private boolean isEmailAuth; + } diff --git a/module-member/src/main/java/com/gaethering/modulemember/service/MemberService.java b/module-member/src/main/java/com/gaethering/modulemember/service/MemberService.java index 336112f..832a448 100644 --- a/module-member/src/main/java/com/gaethering/modulemember/service/MemberService.java +++ b/module-member/src/main/java/com/gaethering/modulemember/service/MemberService.java @@ -1,9 +1,13 @@ package com.gaethering.modulemember.service; +import com.gaethering.modulemember.dto.SignUpRequest; + public interface MemberService { void sendEmailAuthCode(String email); void confirmEmailAuthCode(String code); + void signUp(SignUpRequest signUpRequest); + } diff --git a/module-member/src/main/java/com/gaethering/modulemember/service/MemberServiceImpl.java b/module-member/src/main/java/com/gaethering/modulemember/service/MemberServiceImpl.java index c1ae8cd..9963422 100644 --- a/module-member/src/main/java/com/gaethering/modulemember/service/MemberServiceImpl.java +++ b/module-member/src/main/java/com/gaethering/modulemember/service/MemberServiceImpl.java @@ -1,10 +1,16 @@ package com.gaethering.modulemember.service; +import com.gaethering.moduledomain.domain.member.Member; +import com.gaethering.moduledomain.domain.member.MemberProfile; +import com.gaethering.moduledomain.domain.type.MemberRole; +import com.gaethering.moduledomain.domain.type.MemberStatus; import com.gaethering.moduledomain.repository.member.MemberRepository; +import com.gaethering.modulemember.dto.SignUpRequest; import com.gaethering.modulemember.exception.member.DuplicatedEmailException; import java.util.UUID; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -14,6 +20,7 @@ @Transactional(readOnly = true) public class MemberServiceImpl implements MemberService { + private final PasswordEncoder passwordEncoder; private final EmailService emailService; private final MemberRepository memberRepository; @@ -39,4 +46,22 @@ public void confirmEmailAuthCode(String code) { } + @Override + @Transactional + public void signUp(SignUpRequest signUpRequest) { + + memberRepository.save(Member.builder() + .email(signUpRequest.getEmail()) + .nickname(signUpRequest.getNickname()) + .password(passwordEncoder.encode(signUpRequest.getPassword())) + .role(MemberRole.ROLE_USER) + .status(MemberStatus.ACTIVE) + .isEmailAuth(signUpRequest.isEmailAuth()) + .memberProfile(MemberProfile.builder() + .phoneNumber(signUpRequest.getPhone()) + .gender(signUpRequest.getGender()) + .build()) + .build()); + } + } From 01383b02f0d7901a1c2d39d31d5f83b677176765 Mon Sep 17 00:00:00 2001 From: naekang Date: Sun, 4 Dec 2022 15:58:58 +0900 Subject: [PATCH 06/11] =?UTF-8?q?feat:=20=ED=9A=8C=EC=9B=90=20=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EC=8B=9C=20=EC=9D=B4=EB=A9=94=EC=9D=BC=20=EC=A4=91?= =?UTF-8?q?=EB=B3=B5=20=EC=97=90=EB=9F=AC=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gaethering/modulemember/service/MemberServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/module-member/src/main/java/com/gaethering/modulemember/service/MemberServiceImpl.java b/module-member/src/main/java/com/gaethering/modulemember/service/MemberServiceImpl.java index 9963422..032245c 100644 --- a/module-member/src/main/java/com/gaethering/modulemember/service/MemberServiceImpl.java +++ b/module-member/src/main/java/com/gaethering/modulemember/service/MemberServiceImpl.java @@ -50,6 +50,10 @@ public void confirmEmailAuthCode(String code) { @Transactional public void signUp(SignUpRequest signUpRequest) { + if (memberRepository.existsByEmail(signUpRequest.getEmail())) { + throw new DuplicatedEmailException(); + } + memberRepository.save(Member.builder() .email(signUpRequest.getEmail()) .nickname(signUpRequest.getNickname()) From 07ea34bc6531c9e3e0a802cc7ad9b66e192ff27d Mon Sep 17 00:00:00 2001 From: naekang Date: Sun, 4 Dec 2022 16:04:57 +0900 Subject: [PATCH 07/11] =?UTF-8?q?feat:=20=ED=9A=8C=EC=9B=90=20=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EC=8B=9C=20=EB=B9=84=EB=B0=80=EB=B2=88=ED=98=B8,?= =?UTF-8?q?=20=ED=99=95=EC=9D=B8=20=EB=B9=84=EB=B0=80=EB=B2=88=ED=98=B8=20?= =?UTF-8?q?=EC=9D=BC=EC=B9=98=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=EC=97=90=EB=9F=AC=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exception/errorcode/MemberErrorCode.java | 3 ++- .../exception/member/NotMatchPasswordException.java | 10 ++++++++++ .../modulemember/service/MemberServiceImpl.java | 5 +++++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 module-member/src/main/java/com/gaethering/modulemember/exception/member/NotMatchPasswordException.java diff --git a/module-member/src/main/java/com/gaethering/modulemember/exception/errorcode/MemberErrorCode.java b/module-member/src/main/java/com/gaethering/modulemember/exception/errorcode/MemberErrorCode.java index 028600f..8a7e598 100644 --- a/module-member/src/main/java/com/gaethering/modulemember/exception/errorcode/MemberErrorCode.java +++ b/module-member/src/main/java/com/gaethering/modulemember/exception/errorcode/MemberErrorCode.java @@ -9,7 +9,8 @@ public enum MemberErrorCode { MEMBER_NOT_FOUND("E001", "존재하지 않는 회원입니다."), INVALID_EMAIL_AUTH_CODE("E901", "이메일 인증 코드가 유효하지 않습니다."), DUPLICATED_EMAIL("E902", "중복된 이메일입니다."), - FAILED_SEND_EMAIL("E903", "이메일 전송에 실패하였습니다."); + FAILED_SEND_EMAIL("E903", "이메일 전송에 실패하였습니다."), + NOT_MATCH_PASSWORD("E904", "비밀번호가 서로 일치하지 않습니다."); private final String code; private final String message; diff --git a/module-member/src/main/java/com/gaethering/modulemember/exception/member/NotMatchPasswordException.java b/module-member/src/main/java/com/gaethering/modulemember/exception/member/NotMatchPasswordException.java new file mode 100644 index 0000000..2f8446a --- /dev/null +++ b/module-member/src/main/java/com/gaethering/modulemember/exception/member/NotMatchPasswordException.java @@ -0,0 +1,10 @@ +package com.gaethering.modulemember.exception.member; + +import com.gaethering.modulemember.exception.errorcode.MemberErrorCode; + +public class NotMatchPasswordException extends MemberException { + + public NotMatchPasswordException() { + super(MemberErrorCode.NOT_MATCH_PASSWORD); + } +} diff --git a/module-member/src/main/java/com/gaethering/modulemember/service/MemberServiceImpl.java b/module-member/src/main/java/com/gaethering/modulemember/service/MemberServiceImpl.java index 032245c..3685167 100644 --- a/module-member/src/main/java/com/gaethering/modulemember/service/MemberServiceImpl.java +++ b/module-member/src/main/java/com/gaethering/modulemember/service/MemberServiceImpl.java @@ -7,6 +7,7 @@ import com.gaethering.moduledomain.repository.member.MemberRepository; import com.gaethering.modulemember.dto.SignUpRequest; import com.gaethering.modulemember.exception.member.DuplicatedEmailException; +import com.gaethering.modulemember.exception.member.NotMatchPasswordException; import java.util.UUID; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -54,6 +55,10 @@ public void signUp(SignUpRequest signUpRequest) { throw new DuplicatedEmailException(); } + if (!signUpRequest.getPassword().equals(signUpRequest.getPasswordCheck())) { + throw new NotMatchPasswordException(); + } + memberRepository.save(Member.builder() .email(signUpRequest.getEmail()) .nickname(signUpRequest.getNickname()) From 39ab3135f10282259cbafc60027caa26181272bd Mon Sep 17 00:00:00 2001 From: naekang Date: Sun, 4 Dec 2022 19:29:17 +0900 Subject: [PATCH 08/11] =?UTF-8?q?feat:=20=ED=9A=8C=EC=9B=90=20=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EC=84=B1=EA=B3=B5=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modulemember/service/MemberService.java | 2 +- .../service/MemberServiceImpl.java | 10 ++- .../service/MemberServiceTest.java | 71 +++++++++++++++++++ 3 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 module-member/src/test/java/com/gaethering/modulemember/service/MemberServiceTest.java diff --git a/module-member/src/main/java/com/gaethering/modulemember/service/MemberService.java b/module-member/src/main/java/com/gaethering/modulemember/service/MemberService.java index 832a448..b8321c8 100644 --- a/module-member/src/main/java/com/gaethering/modulemember/service/MemberService.java +++ b/module-member/src/main/java/com/gaethering/modulemember/service/MemberService.java @@ -8,6 +8,6 @@ public interface MemberService { void confirmEmailAuthCode(String code); - void signUp(SignUpRequest signUpRequest); + String signUp(SignUpRequest signUpRequest); } diff --git a/module-member/src/main/java/com/gaethering/modulemember/service/MemberServiceImpl.java b/module-member/src/main/java/com/gaethering/modulemember/service/MemberServiceImpl.java index 3685167..99a16d6 100644 --- a/module-member/src/main/java/com/gaethering/modulemember/service/MemberServiceImpl.java +++ b/module-member/src/main/java/com/gaethering/modulemember/service/MemberServiceImpl.java @@ -49,7 +49,7 @@ public void confirmEmailAuthCode(String code) { @Override @Transactional - public void signUp(SignUpRequest signUpRequest) { + public String signUp(SignUpRequest signUpRequest) { if (memberRepository.existsByEmail(signUpRequest.getEmail())) { throw new DuplicatedEmailException(); @@ -59,7 +59,7 @@ public void signUp(SignUpRequest signUpRequest) { throw new NotMatchPasswordException(); } - memberRepository.save(Member.builder() + Member newMember = Member.builder() .email(signUpRequest.getEmail()) .nickname(signUpRequest.getNickname()) .password(passwordEncoder.encode(signUpRequest.getPassword())) @@ -70,7 +70,11 @@ public void signUp(SignUpRequest signUpRequest) { .phoneNumber(signUpRequest.getPhone()) .gender(signUpRequest.getGender()) .build()) - .build()); + .build(); + + memberRepository.save(newMember); + + return newMember.getNickname(); } } diff --git a/module-member/src/test/java/com/gaethering/modulemember/service/MemberServiceTest.java b/module-member/src/test/java/com/gaethering/modulemember/service/MemberServiceTest.java new file mode 100644 index 0000000..7be32ed --- /dev/null +++ b/module-member/src/test/java/com/gaethering/modulemember/service/MemberServiceTest.java @@ -0,0 +1,71 @@ +package com.gaethering.modulemember.service; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +import com.gaethering.moduledomain.domain.member.Member; +import com.gaethering.moduledomain.domain.type.Gender; +import com.gaethering.moduledomain.repository.member.MemberProfileRepository; +import com.gaethering.moduledomain.repository.member.MemberRepository; +import com.gaethering.modulemember.dto.SignUpRequest; +import java.time.LocalDate; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.security.crypto.password.PasswordEncoder; + +@ExtendWith(MockitoExtension.class) +class MemberServiceTest { + + @Mock + private MemberRepository memberRepository; + + @Mock + private MemberProfileRepository memberProfileRepository; + + @Mock + private PasswordEncoder passwordEncoder; + + @InjectMocks + private MemberServiceImpl memberService; + + @Test + @DisplayName("회원 가입 성공") + void signUp_Success() { + //given + SignUpRequest request = SignUpRequest.builder() + .email("gaethering@gmail.com") + .nickname("개더링") + .password("1234qwer!") + .passwordCheck("1234qwer!") + .name("김진호") + .phone("010-3230-2498") + .birth(LocalDate.of(2022, 02, 15)) + .gender(Gender.MALE) + .isEmailAuth(true) + .build(); + + given(memberRepository.existsByEmail(anyString())) + .willReturn(false); + + given(passwordEncoder.encode(anyString())) + .willReturn(anyString()); + + ArgumentCaptor captor = ArgumentCaptor.forClass(Member.class); + + //when + String nickname = memberService.signUp(request); + + //then + assertEquals(request.getNickname(), nickname); + verify(memberRepository, times(1)).save(captor.capture()); + } + +} \ No newline at end of file From 73f31ebbf35e111b5d1d4e18f7c640aa552cadeb Mon Sep 17 00:00:00 2001 From: naekang Date: Sun, 4 Dec 2022 22:05:20 +0900 Subject: [PATCH 09/11] =?UTF-8?q?feat:=20=ED=9A=8C=EC=9B=90=20=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EC=8B=A4=ED=8C=A8=20=ED=85=8C=EC=8A=A4=ED=8A=B8=5F?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=EB=90=9C=20=EC=9D=B4=EB=A9=94=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/MemberServiceTest.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/module-member/src/test/java/com/gaethering/modulemember/service/MemberServiceTest.java b/module-member/src/test/java/com/gaethering/modulemember/service/MemberServiceTest.java index 7be32ed..f028e68 100644 --- a/module-member/src/test/java/com/gaethering/modulemember/service/MemberServiceTest.java +++ b/module-member/src/test/java/com/gaethering/modulemember/service/MemberServiceTest.java @@ -1,6 +1,7 @@ package com.gaethering.modulemember.service; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.times; @@ -11,6 +12,8 @@ import com.gaethering.moduledomain.repository.member.MemberProfileRepository; import com.gaethering.moduledomain.repository.member.MemberRepository; import com.gaethering.modulemember.dto.SignUpRequest; +import com.gaethering.modulemember.exception.errorcode.MemberErrorCode; +import com.gaethering.modulemember.exception.member.DuplicatedEmailException; import java.time.LocalDate; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -68,4 +71,32 @@ void signUp_Success() { verify(memberRepository, times(1)).save(captor.capture()); } + @Test + @DisplayName("회원가입 실패_중복된 이메일이 있을 경우") + void signUp_ExceptionThrown_DuplicatedEmail() { + //given + SignUpRequest request = SignUpRequest.builder() + .email("gaethering@gmail.com") + .nickname("개더링") + .password("1234qwer!") + .passwordCheck("1234qwer!") + .name("김진호") + .phone("010-3230-2498") + .birth(LocalDate.of(2022, 02, 15)) + .gender(Gender.MALE) + .isEmailAuth(true) + .build(); + + given(memberRepository.existsByEmail(anyString())) + .willReturn(true); + + //when + DuplicatedEmailException exception = assertThrows( + DuplicatedEmailException.class, () -> memberService.signUp(request)); + + //then + assertEquals(MemberErrorCode.DUPLICATED_EMAIL.getCode(), + exception.getErrorCode().getCode()); + } + } \ No newline at end of file From ba7f84cc573d9a6ae17511168249333554cd10ae Mon Sep 17 00:00:00 2001 From: naekang Date: Sun, 4 Dec 2022 22:18:27 +0900 Subject: [PATCH 10/11] =?UTF-8?q?feat:=20=ED=9A=8C=EC=9B=90=20=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EC=8B=A4=ED=8C=A8=20=ED=85=8C=EC=8A=A4=ED=8A=B8=5F?= =?UTF-8?q?=EB=B9=84=EB=B0=80=EB=B2=88=ED=98=B8=20=EC=9D=BC=EC=B9=98?= =?UTF-8?q?=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EA=B2=BD=EC=9A=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/MemberServiceTest.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/module-member/src/test/java/com/gaethering/modulemember/service/MemberServiceTest.java b/module-member/src/test/java/com/gaethering/modulemember/service/MemberServiceTest.java index f028e68..3f4a189 100644 --- a/module-member/src/test/java/com/gaethering/modulemember/service/MemberServiceTest.java +++ b/module-member/src/test/java/com/gaethering/modulemember/service/MemberServiceTest.java @@ -14,6 +14,7 @@ import com.gaethering.modulemember.dto.SignUpRequest; import com.gaethering.modulemember.exception.errorcode.MemberErrorCode; import com.gaethering.modulemember.exception.member.DuplicatedEmailException; +import com.gaethering.modulemember.exception.member.NotMatchPasswordException; import java.time.LocalDate; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -99,4 +100,32 @@ void signUp_ExceptionThrown_DuplicatedEmail() { exception.getErrorCode().getCode()); } + @Test + @DisplayName("회원가입 실패_비밀번호가 일치하지 않는 경우") + void signUp_ExceptionThrown_NotMatchPassword() { + //given + SignUpRequest request = SignUpRequest.builder() + .email("gaethering@gmail.com") + .nickname("개더링") + .password("1234qwer!") + .passwordCheck("1234qwer") + .name("김진호") + .phone("010-3230-2498") + .birth(LocalDate.of(2022, 02, 15)) + .gender(Gender.MALE) + .isEmailAuth(true) + .build(); + + given(memberRepository.existsByEmail(anyString())) + .willReturn(false); + + //when + NotMatchPasswordException exception = assertThrows( + NotMatchPasswordException.class, () -> memberService.signUp(request)); + + //then + assertEquals(MemberErrorCode.NOT_MATCH_PASSWORD.getCode(), + exception.getErrorCode().getCode()); + } + } \ No newline at end of file From aa3f2b0207d72e1b848f11e53ddfdae8b45096a0 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 4 Dec 2022 15:01:33 +0000 Subject: [PATCH 11/11] commit badge --- .github/badges/branches.svg | 2 +- .github/badges/jacoco.svg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/badges/branches.svg b/.github/badges/branches.svg index 2e69d9c..154eea8 100644 --- a/.github/badges/branches.svg +++ b/.github/badges/branches.svg @@ -1 +1 @@ -branches0% \ No newline at end of file +branches50% \ No newline at end of file diff --git a/.github/badges/jacoco.svg b/.github/badges/jacoco.svg index a944a8d..d6f2758 100644 --- a/.github/badges/jacoco.svg +++ b/.github/badges/jacoco.svg @@ -1 +1 @@ -coverage25.1% \ No newline at end of file +coverage44.6% \ No newline at end of file