From 5a5cf8082009fa0acb2f8060f9ead37ee0e3762a Mon Sep 17 00:00:00 2001 From: kimhyun5u <22kimhyun5u@gmail.com> Date: Wed, 14 Aug 2024 21:43:41 +0900 Subject: [PATCH 01/10] =?UTF-8?q?[feat]=20Customer=20ID=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20-=20=EB=85=BC=EC=9D=98=20-=20#36=20=EB=B0=98?= =?UTF-8?q?=EC=98=81=20-=20Long=20=EC=97=90=EC=84=9C=20UUID=20=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/camp/woowak/lab/customer/domain/Customer.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/camp/woowak/lab/customer/domain/Customer.java b/src/main/java/camp/woowak/lab/customer/domain/Customer.java index be53fb4f..4bf75642 100644 --- a/src/main/java/camp/woowak/lab/customer/domain/Customer.java +++ b/src/main/java/camp/woowak/lab/customer/domain/Customer.java @@ -1,5 +1,7 @@ package camp.woowak.lab.customer.domain; +import java.util.UUID; + import camp.woowak.lab.customer.exception.InvalidCreationException; import camp.woowak.lab.payaccount.domain.PayAccount; import camp.woowak.lab.web.authentication.PasswordEncoder; @@ -10,14 +12,16 @@ import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.OneToOne; +import jakarta.persistence.Table; import lombok.Getter; @Entity @Getter +@Table(name = "Customers") public class Customer { @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; + @GeneratedValue(strategy = GenerationType.UUID) + private UUID id; @Column(nullable = false, length = 50) private String name; @Column(unique = true, nullable = false, length = 100) From 21e06d66e84c401ad7119ded6fed5dea19a9a214 Mon Sep 17 00:00:00 2001 From: kimhyun5u <22kimhyun5u@gmail.com> Date: Wed, 14 Aug 2024 21:54:22 +0900 Subject: [PATCH 02/10] =?UTF-8?q?[fix]=20Customer=20ID=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=EC=9C=BC=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20-=20=EB=85=BC=EC=9D=98=20-=20#36=20=EB=B0=98?= =?UTF-8?q?=EC=98=81=20-=20Long=20=EC=97=90=EC=84=9C=20UUID=20=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lab/customer/service/SignUpCustomerService.java | 12 +++++++----- .../lab/web/api/customer/CustomerApiController.java | 2 +- .../woowak/lab/web/authentication/LoginCustomer.java | 8 +++++--- .../response/customer/SignUpCustomerResponse.java | 2 +- .../customer/service/SignUpCustomerServiceTest.java | 10 ++++++---- .../web/api/customer/CustomerApiControllerTest.java | 5 ++++- 6 files changed, 24 insertions(+), 15 deletions(-) diff --git a/src/main/java/camp/woowak/lab/customer/service/SignUpCustomerService.java b/src/main/java/camp/woowak/lab/customer/service/SignUpCustomerService.java index d43aad29..7231bb06 100644 --- a/src/main/java/camp/woowak/lab/customer/service/SignUpCustomerService.java +++ b/src/main/java/camp/woowak/lab/customer/service/SignUpCustomerService.java @@ -12,7 +12,9 @@ import camp.woowak.lab.payaccount.repository.PayAccountRepository; import camp.woowak.lab.web.authentication.PasswordEncoder; import jakarta.transaction.Transactional; +import lombok.extern.slf4j.Slf4j; +@Slf4j @Service public class SignUpCustomerService { private final CustomerRepository customerRepository; @@ -20,7 +22,7 @@ public class SignUpCustomerService { private final PasswordEncoder passwordEncoder; public SignUpCustomerService(CustomerRepository customerRepository, PayAccountRepository payAccountRepository, - PasswordEncoder passwordEncoder) { + PasswordEncoder passwordEncoder) { this.customerRepository = customerRepository; this.payAccountRepository = payAccountRepository; this.passwordEncoder = passwordEncoder; @@ -31,8 +33,8 @@ public SignUpCustomerService(CustomerRepository customerRepository, PayAccountRe * @throws InvalidCreationException 구매자 생성에 오류가 나는 경우 * @throws DuplicateEmailException 이메일이 중복되는 경우 */ - @Transactional - public Long signUp(SignUpCustomerCommand cmd) { + @Transactional() + public String signUp(SignUpCustomerCommand cmd) { PayAccount payAccount = new PayAccount(); payAccountRepository.save(payAccount); @@ -40,10 +42,10 @@ public Long signUp(SignUpCustomerCommand cmd) { passwordEncoder); try { - customerRepository.save(newCustomer); + return customerRepository.saveAndFlush(newCustomer).getId().toString(); } catch (DataIntegrityViolationException e) { + log.error("데이터 무결성 위반"); throw new DuplicateEmailException(); } - return newCustomer.getId(); } } diff --git a/src/main/java/camp/woowak/lab/web/api/customer/CustomerApiController.java b/src/main/java/camp/woowak/lab/web/api/customer/CustomerApiController.java index 6dbb9f9b..4097e2f5 100644 --- a/src/main/java/camp/woowak/lab/web/api/customer/CustomerApiController.java +++ b/src/main/java/camp/woowak/lab/web/api/customer/CustomerApiController.java @@ -28,7 +28,7 @@ public SignUpCustomerResponse signUp(@Valid @RequestBody SignUpCustomerRequest r SignUpCustomerCommand command = new SignUpCustomerCommand(request.name(), request.email(), request.password(), request.phone()); - Long registeredId = signUpCustomerService.signUp(command); + String registeredId = signUpCustomerService.signUp(command); response.setHeader("Location", "/customers/" + registeredId); diff --git a/src/main/java/camp/woowak/lab/web/authentication/LoginCustomer.java b/src/main/java/camp/woowak/lab/web/authentication/LoginCustomer.java index 0a55c31d..b0d57ee9 100644 --- a/src/main/java/camp/woowak/lab/web/authentication/LoginCustomer.java +++ b/src/main/java/camp/woowak/lab/web/authentication/LoginCustomer.java @@ -1,14 +1,16 @@ package camp.woowak.lab.web.authentication; +import java.util.UUID; + public class LoginCustomer implements LoginMember { - private final Long id; + private final UUID id; - public LoginCustomer(Long id) { + public LoginCustomer(UUID id) { this.id = id; } @Override - public Long getId() { + public UUID getId() { return id; } } diff --git a/src/main/java/camp/woowak/lab/web/dto/response/customer/SignUpCustomerResponse.java b/src/main/java/camp/woowak/lab/web/dto/response/customer/SignUpCustomerResponse.java index 87b9a605..63c4c238 100644 --- a/src/main/java/camp/woowak/lab/web/dto/response/customer/SignUpCustomerResponse.java +++ b/src/main/java/camp/woowak/lab/web/dto/response/customer/SignUpCustomerResponse.java @@ -1,4 +1,4 @@ package camp.woowak.lab.web.dto.response.customer; -public record SignUpCustomerResponse(Long id) { +public record SignUpCustomerResponse(String id) { } diff --git a/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceTest.java b/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceTest.java index f3bbb0d9..e6c42b33 100644 --- a/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceTest.java +++ b/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceTest.java @@ -2,6 +2,8 @@ import static org.mockito.BDDMockito.*; +import java.util.UUID; + import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -20,7 +22,6 @@ import camp.woowak.lab.fixture.CustomerFixture; import camp.woowak.lab.payaccount.domain.PayAccount; import camp.woowak.lab.payaccount.repository.PayAccountRepository; -import camp.woowak.lab.web.authentication.NoOpPasswordEncoder; import camp.woowak.lab.web.authentication.PasswordEncoder; @ExtendWith(MockitoExtension.class) @@ -44,9 +45,10 @@ void testSignUp() throws InvalidCreationException, DuplicateEmailException { // given given(passwordEncoder.encode(Mockito.anyString())).willReturn("password"); PayAccount payAccount = createPayAccount(); - Customer customer = createCustomer(payAccount, new NoOpPasswordEncoder()); + Customer customerMock = Mockito.mock(Customer.class); given(payAccountRepository.save(Mockito.any(PayAccount.class))).willReturn(payAccount); - given(customerRepository.save(Mockito.any(Customer.class))).willReturn(customer); + given(customerRepository.save(Mockito.any(Customer.class))).willReturn(customerMock); + when(customerMock.getId()).thenReturn(UUID.randomUUID()); // when SignUpCustomerCommand command = @@ -75,4 +77,4 @@ void testSignUpWithExistingEmail() { then(payAccountRepository).should().save(Mockito.any(PayAccount.class)); then(customerRepository).should().save(Mockito.any(Customer.class)); } -} \ No newline at end of file +} diff --git a/src/test/java/camp/woowak/lab/web/api/customer/CustomerApiControllerTest.java b/src/test/java/camp/woowak/lab/web/api/customer/CustomerApiControllerTest.java index 4d55fbe2..d303ac00 100644 --- a/src/test/java/camp/woowak/lab/web/api/customer/CustomerApiControllerTest.java +++ b/src/test/java/camp/woowak/lab/web/api/customer/CustomerApiControllerTest.java @@ -5,6 +5,8 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; +import java.util.UUID; + import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -38,9 +40,10 @@ class CustomerApiControllerTest { @DisplayName("구매자 회원가입 테스트 - 성공") void testSignUpCustomer() throws Exception { // given + String customerId = UUID.randomUUID().toString(); SignUpCustomerRequest request = new SignUpCustomerRequest("name", "email@test.com", "password123", "010-1234-5678"); - given(signUpCustomerService.signUp(any())).willReturn(1L); + given(signUpCustomerService.signUp(any())).willReturn(customerId); // when & then mockMvc.perform(post("/customers") From e280c79910f806831665bf75c301ec1adf07a744 Mon Sep 17 00:00:00 2001 From: kimhyun5u <22kimhyun5u@gmail.com> Date: Wed, 14 Aug 2024 21:55:21 +0900 Subject: [PATCH 03/10] =?UTF-8?q?[test]=20SignUpCustomerServiceIntegration?= =?UTF-8?q?Test=20=EC=88=98=EC=A0=95=20-=20DataIntegrityViolationException?= =?UTF-8?q?=20=EB=A5=BC=20=EC=84=9C=EB=B9=84=EC=8A=A4=20=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EC=97=90=EC=84=9C=20=EC=9E=A1=EC=A7=80=20=EB=AA=BB?= =?UTF-8?q?=ED=95=98=EB=A9=B4=20=EC=97=90=EB=9F=AC=20=EB=AA=85=EC=8B=9C?= =?UTF-8?q?=EB=90=9C=20=EC=B6=9C=EB=9F=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/SignUpCustomerServiceIntegrationTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceIntegrationTest.java b/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceIntegrationTest.java index afb237b4..3a8ea264 100644 --- a/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceIntegrationTest.java +++ b/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceIntegrationTest.java @@ -6,6 +6,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.dao.DataIntegrityViolationException; import camp.woowak.lab.customer.exception.DuplicateEmailException; import camp.woowak.lab.customer.exception.InvalidCreationException; @@ -43,10 +44,11 @@ void testRollbackOnDuplicateEmail() throws InvalidCreationException, DuplicateEm // then try { service.signUp(command2); - fail("중복 이메일 예외가 발생해야 합니다."); } catch (DuplicateEmailException e) { assertEquals(1, customerRepository.count()); assertEquals(1, payAccountRepository.count()); + } catch (DataIntegrityViolationException e) { + fail("DataIntegrityViolationException이 발생했습니다."); } } -} \ No newline at end of file +} From 44f72485eb147c925faca248577001f236bfebf9 Mon Sep 17 00:00:00 2001 From: kimhyun5u <22kimhyun5u@gmail.com> Date: Thu, 15 Aug 2024 11:49:40 +0900 Subject: [PATCH 04/10] =?UTF-8?q?[chore]=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20throws=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/service/SignUpCustomerServiceIntegrationTest.java | 3 +-- .../woowak/lab/customer/service/SignUpCustomerServiceTest.java | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceIntegrationTest.java b/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceIntegrationTest.java index 3a8ea264..3deaf454 100644 --- a/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceIntegrationTest.java +++ b/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceIntegrationTest.java @@ -9,7 +9,6 @@ import org.springframework.dao.DataIntegrityViolationException; import camp.woowak.lab.customer.exception.DuplicateEmailException; -import camp.woowak.lab.customer.exception.InvalidCreationException; import camp.woowak.lab.customer.repository.CustomerRepository; import camp.woowak.lab.customer.service.command.SignUpCustomerCommand; import camp.woowak.lab.payaccount.repository.PayAccountRepository; @@ -28,7 +27,7 @@ class SignUpCustomerServiceIntegrationTest { @Test @DisplayName("이메일 중복 시 롤백 테스트") - void testRollbackOnDuplicateEmail() throws InvalidCreationException, DuplicateEmailException { + void testRollbackOnDuplicateEmail() { // given SignUpCustomerCommand command1 = new SignUpCustomerCommand("name1", "email@example.com", "password", "010-1234-5678"); diff --git a/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceTest.java b/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceTest.java index e6c42b33..8609e2b6 100644 --- a/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceTest.java +++ b/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceTest.java @@ -41,7 +41,7 @@ class SignUpCustomerServiceTest implements CustomerFixture { @Test @DisplayName("구매자 회원가입 테스트") - void testSignUp() throws InvalidCreationException, DuplicateEmailException { + void testSignUp() { // given given(passwordEncoder.encode(Mockito.anyString())).willReturn("password"); PayAccount payAccount = createPayAccount(); From 58ea28fd5dc86a324bad3767c25fe8fdf6a3a0f1 Mon Sep 17 00:00:00 2001 From: kimhyun5u <22kimhyun5u@gmail.com> Date: Thu, 15 Aug 2024 11:51:42 +0900 Subject: [PATCH 05/10] =?UTF-8?q?[fix]=20SignUpCustomerService.signUp=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=EC=97=90=20=EC=9D=98=ED=95=9C=20=EA=B2=80?= =?UTF-8?q?=EC=A6=9D=20=EB=B3=80=EA=B2=BD=20-=20then().save()=20->=20then(?= =?UTF-8?q?).saveAndFlush()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/service/SignUpCustomerServiceTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceTest.java b/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceTest.java index 8609e2b6..2bf04d9a 100644 --- a/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceTest.java +++ b/src/test/java/camp/woowak/lab/customer/service/SignUpCustomerServiceTest.java @@ -16,7 +16,6 @@ import camp.woowak.lab.customer.domain.Customer; import camp.woowak.lab.customer.exception.DuplicateEmailException; -import camp.woowak.lab.customer.exception.InvalidCreationException; import camp.woowak.lab.customer.repository.CustomerRepository; import camp.woowak.lab.customer.service.command.SignUpCustomerCommand; import camp.woowak.lab.fixture.CustomerFixture; @@ -47,7 +46,7 @@ void testSignUp() { PayAccount payAccount = createPayAccount(); Customer customerMock = Mockito.mock(Customer.class); given(payAccountRepository.save(Mockito.any(PayAccount.class))).willReturn(payAccount); - given(customerRepository.save(Mockito.any(Customer.class))).willReturn(customerMock); + given(customerRepository.saveAndFlush(Mockito.any(Customer.class))).willReturn(customerMock); when(customerMock.getId()).thenReturn(UUID.randomUUID()); // when @@ -57,7 +56,7 @@ void testSignUp() { // then then(payAccountRepository).should().save(Mockito.any(PayAccount.class)); - then(customerRepository).should().save(Mockito.any(Customer.class)); + then(customerRepository).should().saveAndFlush(Mockito.any(Customer.class)); } @Test @@ -66,7 +65,8 @@ void testSignUpWithExistingEmail() { // given given(passwordEncoder.encode(Mockito.anyString())).willReturn("password"); given(payAccountRepository.save(Mockito.any(PayAccount.class))).willReturn(createPayAccount()); - when(customerRepository.save(Mockito.any(Customer.class))).thenThrow(DataIntegrityViolationException.class); + when(customerRepository.saveAndFlush(Mockito.any(Customer.class))).thenThrow( + DataIntegrityViolationException.class); // when SignUpCustomerCommand command = @@ -75,6 +75,6 @@ void testSignUpWithExistingEmail() { // then Assertions.assertThrows(DuplicateEmailException.class, () -> service.signUp(command)); then(payAccountRepository).should().save(Mockito.any(PayAccount.class)); - then(customerRepository).should().save(Mockito.any(Customer.class)); + then(customerRepository).should().saveAndFlush(Mockito.any(Customer.class)); } } From 951c6bcc3e2930a7dc8c084cfb56490154f06e7a Mon Sep 17 00:00:00 2001 From: kimhyun5u <22kimhyun5u@gmail.com> Date: Thu, 15 Aug 2024 13:11:53 +0900 Subject: [PATCH 06/10] =?UTF-8?q?[fix]=20Customer=20id=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=EC=97=90=20=EC=9D=98=ED=95=9C=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?-=20Customer=20id:=20Long=20->=20UUID=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lab/payaccount/repository/PayAccountRepository.java | 3 ++- .../payaccount/service/command/PayAccountChargeCommand.java | 4 +++- .../lab/payaccount/service/PayAccountChargeServiceTest.java | 3 ++- .../camp/woowak/lab/web/api/PayAccountApiControllerTest.java | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/camp/woowak/lab/payaccount/repository/PayAccountRepository.java b/src/main/java/camp/woowak/lab/payaccount/repository/PayAccountRepository.java index 22120a4c..597fef70 100644 --- a/src/main/java/camp/woowak/lab/payaccount/repository/PayAccountRepository.java +++ b/src/main/java/camp/woowak/lab/payaccount/repository/PayAccountRepository.java @@ -1,6 +1,7 @@ package camp.woowak.lab.payaccount.repository; import java.util.Optional; +import java.util.UUID; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Lock; @@ -13,5 +14,5 @@ public interface PayAccountRepository extends JpaRepository { @Lock(LockModeType.PESSIMISTIC_WRITE) @Query("SELECT pa FROM PayAccount pa LEFT JOIN Customer c on c.payAccount = pa where c.id = :customerId") - Optional findByCustomerIdForUpdate(@Param("customerId") Long customerId); + Optional findByCustomerIdForUpdate(@Param("customerId") UUID customerId); } diff --git a/src/main/java/camp/woowak/lab/payaccount/service/command/PayAccountChargeCommand.java b/src/main/java/camp/woowak/lab/payaccount/service/command/PayAccountChargeCommand.java index a1c46ff8..3be63f5c 100644 --- a/src/main/java/camp/woowak/lab/payaccount/service/command/PayAccountChargeCommand.java +++ b/src/main/java/camp/woowak/lab/payaccount/service/command/PayAccountChargeCommand.java @@ -1,6 +1,8 @@ package camp.woowak.lab.payaccount.service.command; +import java.util.UUID; + public record PayAccountChargeCommand( - Long customerId, + UUID customerId, long amount) { } \ No newline at end of file diff --git a/src/test/java/camp/woowak/lab/payaccount/service/PayAccountChargeServiceTest.java b/src/test/java/camp/woowak/lab/payaccount/service/PayAccountChargeServiceTest.java index 2131d9ea..2239e193 100644 --- a/src/test/java/camp/woowak/lab/payaccount/service/PayAccountChargeServiceTest.java +++ b/src/test/java/camp/woowak/lab/payaccount/service/PayAccountChargeServiceTest.java @@ -3,6 +3,7 @@ import static org.assertj.core.api.Assertions.*; import java.util.Optional; +import java.util.UUID; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -71,7 +72,7 @@ void withdrawAccount() { @DisplayName("없는 AccountId를 호출하면 NotFoundAccountException을 던진다. 잔고는 유지된다.") void withdrawAccountNotFound() { //given - Long unknownAccountId = Long.MAX_VALUE; + UUID unknownAccountId = UUID.randomUUID(); long amount = 100L; PayAccountChargeCommand command = new PayAccountChargeCommand(unknownAccountId, amount); diff --git a/src/test/java/camp/woowak/lab/web/api/PayAccountApiControllerTest.java b/src/test/java/camp/woowak/lab/web/api/PayAccountApiControllerTest.java index 16a09cfb..5106aaaf 100644 --- a/src/test/java/camp/woowak/lab/web/api/PayAccountApiControllerTest.java +++ b/src/test/java/camp/woowak/lab/web/api/PayAccountApiControllerTest.java @@ -136,7 +136,7 @@ void dailyLimitExceededTest() throws Exception { void notExistsAccountIdTest() throws Exception { //given long amount = 1000L; - Long notExistsId = Long.MAX_VALUE; + UUID notExistsId = UUID.randomUUID(); MockHttpSession notExistsSession = new MockHttpSession(); notExistsSession.setAttribute(SessionConst.SESSION_CUSTOMER_KEY, new LoginCustomer(notExistsId)); PayAccountChargeRequest command = new PayAccountChargeRequest(amount); From e7ad01cbda5c73d1859917fe924af94758005200 Mon Sep 17 00:00:00 2001 From: kimhyun5u <22kimhyun5u@gmail.com> Date: Thu, 15 Aug 2024 13:12:38 +0900 Subject: [PATCH 07/10] =?UTF-8?q?[fix]=20Customer=20id=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=EC=97=90=20=EC=9D=98=ED=95=9C=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?-=20Customer=20id:=20Long=20->=20UUID=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/api/PayAccountApiControllerTest.java | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/test/java/camp/woowak/lab/web/api/PayAccountApiControllerTest.java b/src/test/java/camp/woowak/lab/web/api/PayAccountApiControllerTest.java index 5106aaaf..e8735cd3 100644 --- a/src/test/java/camp/woowak/lab/web/api/PayAccountApiControllerTest.java +++ b/src/test/java/camp/woowak/lab/web/api/PayAccountApiControllerTest.java @@ -6,6 +6,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; import java.util.Optional; +import java.util.UUID; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -102,9 +103,9 @@ void successTest() throws Exception { //when & then mvc.perform(post(BASE_URL) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(objectMapper.writeValueAsBytes(command)) - .session(session)) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .content(objectMapper.writeValueAsBytes(command)) + .session(session)) .andExpect(status().isOk()) .andExpect(jsonPath("$.status").value(HttpStatus.OK.value())) .andExpect(jsonPath("$.data.balance").value(amount + originBalance)); @@ -122,9 +123,9 @@ void dailyLimitExceededTest() throws Exception { //when & then ResultActions actions = mvc.perform(post(BASE_URL) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(objectMapper.writeValueAsBytes(command)) - .session(session)) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .content(objectMapper.writeValueAsBytes(command)) + .session(session)) .andDo(print()) .andExpect(status().isBadRequest()); @@ -143,9 +144,9 @@ void notExistsAccountIdTest() throws Exception { //when & then ResultActions actions = mvc.perform(post(BASE_URL) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(objectMapper.writeValueAsBytes(command)) - .session(notExistsSession)) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .content(objectMapper.writeValueAsBytes(command)) + .session(notExistsSession)) .andExpect(status().isNotFound()); validateErrorResponseWithErrorCode(actions, PayAccountErrorCode.ACCOUNT_NOT_FOUND); @@ -159,9 +160,9 @@ void nullAmountTest() throws Exception { //when & then ResultActions actions = mvc.perform(post(BASE_URL) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(objectMapper.writeValueAsBytes(command)) - .session(session)) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .content(objectMapper.writeValueAsBytes(command)) + .session(session)) .andExpect(status().isBadRequest()); verificationPersistedBalance(payAccount.getId(), originBalance); @@ -176,9 +177,9 @@ void negativeAmountTest() throws Exception { //when & then ResultActions actions = mvc.perform(post(BASE_URL) - .contentType(MediaType.APPLICATION_JSON_VALUE) - .content(objectMapper.writeValueAsBytes(command)) - .session(session)) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .content(objectMapper.writeValueAsBytes(command)) + .session(session)) .andExpect(status().isBadRequest()); validateErrorResponseWithErrorCode(actions, PayAccountErrorCode.INVALID_TRANSACTION_AMOUNT); From 6ca2ed04689942c64a65c8429bc4f1360a9c765c Mon Sep 17 00:00:00 2001 From: kimhyun5u <22kimhyun5u@gmail.com> Date: Thu, 15 Aug 2024 13:15:31 +0900 Subject: [PATCH 08/10] =?UTF-8?q?[feat]=20LoginMember=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=20-=20getId()=20=EC=9D=98=20=EB=B0=98=ED=99=98=EA=B0=92=20UUID?= =?UTF-8?q?=20=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/camp/woowak/lab/web/authentication/LoginMember.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/camp/woowak/lab/web/authentication/LoginMember.java b/src/main/java/camp/woowak/lab/web/authentication/LoginMember.java index 27cffece..3621d8fb 100644 --- a/src/main/java/camp/woowak/lab/web/authentication/LoginMember.java +++ b/src/main/java/camp/woowak/lab/web/authentication/LoginMember.java @@ -1,5 +1,7 @@ package camp.woowak.lab.web.authentication; +import java.util.UUID; + public interface LoginMember { - Object getId(); + UUID getId(); } From dc494b1c10492aa44d4bb1e3f49d501531f4096e Mon Sep 17 00:00:00 2001 From: kimhyun5u <22kimhyun5u@gmail.com> Date: Thu, 15 Aug 2024 13:31:38 +0900 Subject: [PATCH 09/10] =?UTF-8?q?[feat]=20LoginMember=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=20-=20getId()=20=EC=9D=98=20=EB=B0=98=ED=99=98=EA=B0=92=20Obje?= =?UTF-8?q?ct=20=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/camp/woowak/lab/web/authentication/LoginMember.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/camp/woowak/lab/web/authentication/LoginMember.java b/src/main/java/camp/woowak/lab/web/authentication/LoginMember.java index 3621d8fb..27cffece 100644 --- a/src/main/java/camp/woowak/lab/web/authentication/LoginMember.java +++ b/src/main/java/camp/woowak/lab/web/authentication/LoginMember.java @@ -1,7 +1,5 @@ package camp.woowak.lab.web.authentication; -import java.util.UUID; - public interface LoginMember { - UUID getId(); + Object getId(); } From 9b899885919d64c1b644aaceb9527157590eec19 Mon Sep 17 00:00:00 2001 From: kimhyun5u <22kimhyun5u@gmail.com> Date: Thu, 15 Aug 2024 13:31:51 +0900 Subject: [PATCH 10/10] =?UTF-8?q?[chore]=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20()=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../woowak/lab/customer/service/SignUpCustomerService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/camp/woowak/lab/customer/service/SignUpCustomerService.java b/src/main/java/camp/woowak/lab/customer/service/SignUpCustomerService.java index 7231bb06..e6f8c634 100644 --- a/src/main/java/camp/woowak/lab/customer/service/SignUpCustomerService.java +++ b/src/main/java/camp/woowak/lab/customer/service/SignUpCustomerService.java @@ -22,7 +22,7 @@ public class SignUpCustomerService { private final PasswordEncoder passwordEncoder; public SignUpCustomerService(CustomerRepository customerRepository, PayAccountRepository payAccountRepository, - PasswordEncoder passwordEncoder) { + PasswordEncoder passwordEncoder) { this.customerRepository = customerRepository; this.payAccountRepository = payAccountRepository; this.passwordEncoder = passwordEncoder; @@ -33,7 +33,7 @@ public SignUpCustomerService(CustomerRepository customerRepository, PayAccountRe * @throws InvalidCreationException 구매자 생성에 오류가 나는 경우 * @throws DuplicateEmailException 이메일이 중복되는 경우 */ - @Transactional() + @Transactional public String signUp(SignUpCustomerCommand cmd) { PayAccount payAccount = new PayAccount(); payAccountRepository.save(payAccount);