diff --git a/src/main/java/org/ays/auth/service/impl/AdminRegistrationApplicationServiceImpl.java b/src/main/java/org/ays/auth/service/impl/AdminRegistrationApplicationServiceImpl.java index d15cbab5c..44b6a470b 100644 --- a/src/main/java/org/ays/auth/service/impl/AdminRegistrationApplicationServiceImpl.java +++ b/src/main/java/org/ays/auth/service/impl/AdminRegistrationApplicationServiceImpl.java @@ -12,10 +12,11 @@ import org.ays.auth.port.AdminRegistrationApplicationSavePort; import org.ays.auth.port.AysUserSavePort; import org.ays.auth.service.AdminRegistrationApplicationService; +import org.ays.auth.util.exception.AdminRegistrationApplicationNotExistByIdException; +import org.ays.auth.util.exception.AdminRegistrationApplicationNotExistException; import org.ays.auth.util.exception.AysAdminRegistrationApplicationAlreadyApprovedException; import org.ays.auth.util.exception.AysAdminRegistrationApplicationAlreadyRejectedException; import org.ays.auth.util.exception.AysAdminRegistrationApplicationInCompleteException; -import org.ays.auth.util.exception.AysAdminRegistrationApplicationNotExistByIdException; import org.ays.common.model.AysPage; import org.ays.common.model.AysPageable; import org.ays.institution.port.InstitutionReadPort; @@ -67,7 +68,7 @@ public AysPage findAll(final AdminRegistrationAppl @Override public AdminRegistrationApplication findById(String id) { return adminRegistrationApplicationReadPort.findById(id) - .orElseThrow(() -> new AysAdminRegistrationApplicationNotExistByIdException(id)); + .orElseThrow(() -> new AdminRegistrationApplicationNotExistByIdException(id)); } /** @@ -82,7 +83,7 @@ public AdminRegistrationApplication findSummaryById(String id) { return adminRegistrationApplicationReadPort.findById(id) .filter(AdminRegistrationApplication::isWaiting) - .orElseThrow(() -> new AysAdminRegistrationApplicationNotExistByIdException(id)); + .orElseThrow(() -> new AdminRegistrationApplicationNotExistException(id)); } /** @@ -118,7 +119,7 @@ public AdminRegistrationApplication create(AdminRegistrationApplicationCreateReq public void approve(String id) { final AdminRegistrationApplication registrationApplication = adminRegistrationApplicationReadPort .findById(id) - .orElseThrow(() -> new AysAdminRegistrationApplicationNotExistByIdException(id)); + .orElseThrow(() -> new AdminRegistrationApplicationNotExistByIdException(id)); this.checkApplicationStatus(registrationApplication); @@ -141,7 +142,7 @@ public void approve(String id) { public void reject(final String id, final AdminRegistrationApplicationRejectRequest rejectRequest) { final AdminRegistrationApplication registrationApplication = adminRegistrationApplicationReadPort .findById(id) - .orElseThrow(() -> new AysAdminRegistrationApplicationNotExistByIdException(id)); + .orElseThrow(() -> new AdminRegistrationApplicationNotExistByIdException(id)); this.checkApplicationStatus(registrationApplication); diff --git a/src/main/java/org/ays/auth/service/impl/AdminRegistrationCompleteServiceImpl.java b/src/main/java/org/ays/auth/service/impl/AdminRegistrationCompleteServiceImpl.java index b4c39b4a7..282f0bc4e 100644 --- a/src/main/java/org/ays/auth/service/impl/AdminRegistrationCompleteServiceImpl.java +++ b/src/main/java/org/ays/auth/service/impl/AdminRegistrationCompleteServiceImpl.java @@ -18,7 +18,7 @@ import org.ays.auth.port.AysUserReadPort; import org.ays.auth.port.AysUserSavePort; import org.ays.auth.service.AdminRegistrationCompleteService; -import org.ays.auth.util.exception.AysAdminRegistrationApplicationNotExistByIdException; +import org.ays.auth.util.exception.AdminRegistrationApplicationNotExistException; import org.ays.auth.util.exception.AysUserAlreadyExistsByEmailAddressException; import org.ays.auth.util.exception.AysUserAlreadyExistsByPhoneNumberException; import org.ays.institution.model.Institution; @@ -58,19 +58,14 @@ class AdminRegistrationCompleteServiceImpl implements AdminRegistrationCompleteS * @param id The unique identifier of the admin registration application. * @param completeRequest The request containing necessary information to complete the registration. * This includes user details such as email, phone number, and password. - * @throws AysAdminRegistrationApplicationNotExistByIdException if the registration application does not exist or is not in a waiting state. - * @throws AysUserAlreadyExistsByEmailAddressException if a user with the given email already exists. - * @throws AysUserAlreadyExistsByPhoneNumberException if a user with the given phone number already exists. + * @throws AdminRegistrationApplicationNotExistException if the registration application does not exist or is not in a waiting state. + * @throws AysUserAlreadyExistsByEmailAddressException if a user with the given email already exists. + * @throws AysUserAlreadyExistsByPhoneNumberException if a user with the given phone number already exists. */ @Override public void complete(final String id, final AdminRegistrationApplicationCompleteRequest completeRequest) { - log.trace("Admin Register Flow call starting for email of {}", completeRequest.getEmailAddress()); - - final AdminRegistrationApplication application = adminRegistrationApplicationReadPort - .findById(id) - .filter(AdminRegistrationApplication::isWaiting) - .orElseThrow(() -> new AysAdminRegistrationApplicationNotExistByIdException(id)); + log.trace("Admin Register Flow call starting for email of {}", completeRequest.getEmailAddress()); final AysUser user = adminRegistrationApplicationCompleteRequestToUserMapper.map(completeRequest); @@ -85,6 +80,11 @@ public void complete(final String id, final AdminRegistrationApplicationComplete log.trace("Admin Registration Request checked successfully!"); + final AdminRegistrationApplication application = adminRegistrationApplicationReadPort + .findById(id) + .filter(AdminRegistrationApplication::isWaiting) + .orElseThrow(() -> new AdminRegistrationApplicationNotExistException(id)); + user.setInstitution(application.getInstitution()); user.notVerify(); diff --git a/src/main/java/org/ays/auth/util/exception/AysAdminRegistrationApplicationNotExistByIdException.java b/src/main/java/org/ays/auth/util/exception/AdminRegistrationApplicationNotExistByIdException.java similarity index 75% rename from src/main/java/org/ays/auth/util/exception/AysAdminRegistrationApplicationNotExistByIdException.java rename to src/main/java/org/ays/auth/util/exception/AdminRegistrationApplicationNotExistByIdException.java index fc3d8ce75..50e1ec3f2 100644 --- a/src/main/java/org/ays/auth/util/exception/AysAdminRegistrationApplicationNotExistByIdException.java +++ b/src/main/java/org/ays/auth/util/exception/AdminRegistrationApplicationNotExistByIdException.java @@ -11,7 +11,7 @@ * Typically, this exception is thrown when an operation or query is performed on an admin register application * entity using an ID that does not correspond to an existing admin register application. */ -public final class AysAdminRegistrationApplicationNotExistByIdException extends AysNotExistException { +public final class AdminRegistrationApplicationNotExistByIdException extends AysNotExistException { /** * Unique identifier for serialization. @@ -20,11 +20,11 @@ public final class AysAdminRegistrationApplicationNotExistByIdException extends private static final long serialVersionUID = 8416712253227498925L; /** - * Constructs a new {@link AysAdminRegistrationApplicationNotExistByIdException} with the specified ID. + * Constructs a new {@link AdminRegistrationApplicationNotExistByIdException} with the specified ID. * * @param id The ID of the admin registration application that does not exist. */ - public AysAdminRegistrationApplicationNotExistByIdException(String id) { + public AdminRegistrationApplicationNotExistByIdException(String id) { super("admin registration application not exist! id:" + id); } diff --git a/src/main/java/org/ays/auth/util/exception/AdminRegistrationApplicationNotExistException.java b/src/main/java/org/ays/auth/util/exception/AdminRegistrationApplicationNotExistException.java new file mode 100644 index 000000000..e272bf057 --- /dev/null +++ b/src/main/java/org/ays/auth/util/exception/AdminRegistrationApplicationNotExistException.java @@ -0,0 +1,30 @@ +package org.ays.auth.util.exception; + +import org.ays.common.util.exception.AysAuthException; + +import java.io.Serial; + +/** + * Exception indicating that an admin registration application does not exist with the specified ID. + * It extends {@link AysAuthException}, which provides the base exception for all authentication-related issues in the application. + * Typically, this exception is thrown when an operation or query is performed on an admin register application + * entity using an ID that does not correspond to an existing admin register application. + */ +public final class AdminRegistrationApplicationNotExistException extends AysAuthException { + + /** + * Unique identifier for serialization. + */ + @Serial + private static final long serialVersionUID = 8875043711494901525L; + + /** + * Constructs a new {@link AdminRegistrationApplicationNotExistException} with the specified ID. + * + * @param id The ID of the admin registration application that does not exist. + */ + public AdminRegistrationApplicationNotExistException(String id) { + super("admin registration application does not exist! id:" + id); + } + +} diff --git a/src/main/java/org/ays/common/util/AysUUID.java b/src/main/java/org/ays/common/util/AysUUID.java deleted file mode 100644 index e50762443..000000000 --- a/src/main/java/org/ays/common/util/AysUUID.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.ays.common.util; - -import lombok.experimental.UtilityClass; - -import java.util.UUID; - -@UtilityClass -public class AysUUID { - - /** - * Checks if the given string is a valid UUID (Universally Unique Identifier). - * The method attempts to create a UUID object from the given string and returns true if successful, false otherwise. - * - * @param value the string to check - * @return true if the string is a valid UUID, false otherwise - */ - public static boolean isValid(String value) { - try { - UUID.fromString(value); - return true; - } catch (IllegalArgumentException e) { - return false; - } - } - -} diff --git a/src/test/java/org/ays/AysMockMvc.java b/src/test/java/org/ays/AysMockMvc.java index 9aac4f1ae..6c4d5a3e3 100644 --- a/src/test/java/org/ays/AysMockMvc.java +++ b/src/test/java/org/ays/AysMockMvc.java @@ -43,7 +43,7 @@ public ResultActions perform(final MockHttpServletRequestBuilder mockHttpServlet .andExpect(AysMockResultMatchersBuilders.header() .value(mockErrorResponse.getHeader())) .andExpect(AysMockResultMatchersBuilders.response() - .doesNotExist()); + .doesNotHaveJsonPath()); } } diff --git a/src/test/java/org/ays/auth/controller/AdminRegistrationApplicationControllerTest.java b/src/test/java/org/ays/auth/controller/AdminRegistrationApplicationControllerTest.java index 5d9978a08..c8d304706 100644 --- a/src/test/java/org/ays/auth/controller/AdminRegistrationApplicationControllerTest.java +++ b/src/test/java/org/ays/auth/controller/AdminRegistrationApplicationControllerTest.java @@ -22,6 +22,7 @@ import org.ays.auth.model.response.AdminRegistrationApplicationsResponse; import org.ays.auth.service.AdminRegistrationApplicationService; import org.ays.auth.service.AdminRegistrationCompleteService; +import org.ays.auth.util.exception.AdminRegistrationApplicationNotExistException; import org.ays.common.model.AysPage; import org.ays.common.model.AysPageBuilder; import org.ays.common.model.request.AysPhoneNumberRequest; @@ -30,7 +31,6 @@ import org.ays.common.model.response.AysPageResponse; import org.ays.common.model.response.AysResponse; import org.ays.common.model.response.AysResponseBuilder; -import org.ays.common.util.AysRandomUtil; import org.ays.common.util.exception.model.response.AysErrorResponseBuilder; import org.ays.institution.model.Institution; import org.ays.institution.model.InstitutionBuilder; @@ -135,7 +135,7 @@ void givenValidAdminRegisterApplicationListRequest_whenUnauthorizedForListing_th void givenValidAdminRegisterApplicationId_whenAdminRegisterApplicationFound_thenReturnAdminRegisterApplicationResponse() throws Exception { // Given - String mockApplicationId = AysRandomUtil.generateUUID(); + String mockApplicationId = "a0c2351d-54ce-4019-8ffe-a2f8a2700824"; // When AdminRegistrationApplication mockRegisterApplication = new AdminRegistrationApplicationBuilder() @@ -170,7 +170,7 @@ void givenValidAdminRegisterApplicationId_whenAdminRegisterApplicationFound_then void givenValidAdminRegisterApplicationId_whenUnauthorizedForGettingAdminRegisterApplicationById_thenReturnAccessDeniedException() throws Exception { // Given - String mockApplicationId = AysRandomUtil.generateUUID(); + String mockApplicationId = "68c867b4-e84a-405c-b1ab-f8dcaa9c41f2"; // Then String endpoint = BASE_PATH.concat("/admin-registration-application/".concat(mockApplicationId)); @@ -304,11 +304,12 @@ void givenValidAdminRegisterApplicationCreateRequest_whenUnauthorizedForCreating .create(Mockito.any(AdminRegistrationApplicationCreateRequest.class)); } + @Test void givenValidAdminRegisterApplicationId_whenAdminApplicationFound_thenReturnAdminApplicationSummaryResponse() throws Exception { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "085fbe72-caa7-439d-8db1-166ed005e120"; AdminRegistrationApplication mockAdminRegistrationApplication = new AdminRegistrationApplicationBuilder() .withId(mockId) .build(); @@ -334,11 +335,36 @@ void givenValidAdminRegisterApplicationId_whenAdminApplicationFound_thenReturnAd .isNotEmpty()); } + @Test + void givenIdAndAdminRegisterApplication_whenAdminApplicationNotFound_thenReturnUnauthorizedError() throws Exception { + + // Given + String mockId = "181e8310-6dfd-444c-aa38-056ce8401345"; + + // When + Mockito.when(adminRegistrationApplicationService.findSummaryById(mockId)) + .thenThrow(new AdminRegistrationApplicationNotExistException(mockId)); + + // Then + String endpoint = BASE_PATH.concat("/admin-registration-application/".concat(mockId).concat("/summary")); + MockHttpServletRequestBuilder mockHttpServletRequestBuilder = AysMockMvcRequestBuilders + .get(endpoint); + + AysErrorResponse mockErrorResponse = AysErrorResponseBuilder.UNAUTHORIZED; + + aysMockMvc.perform(mockHttpServletRequestBuilder, mockErrorResponse) + .andExpect(AysMockResultMatchersBuilders.status() + .isUnauthorized()) + .andExpect(AysMockResultMatchersBuilders.subErrors() + .doesNotHaveJsonPath()); + } + + @Test void givenValidAdminRegisterRequest_whenAdminRegistered_thenReturnSuccessResponse() throws Exception { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "e8de09dc-a44e-40eb-bcc7-cf0141f8733c"; AdminRegistrationApplicationCompleteRequest mockRequest = new AdminRegistrationApplicationCompleteRequestBuilder() .withValidValues().build(); @@ -363,11 +389,43 @@ void givenValidAdminRegisterRequest_whenAdminRegistered_thenReturnSuccessRespons .complete(Mockito.anyString(), Mockito.any()); } + + @Test + void givenIdAndAdminRegisterRequest_whenAdminApplicationNotFound_thenReturnUnauthorizedError() throws Exception { + + // Given + String mockId = "181e8310-6dfd-444c-aa38-056ce8401345"; + AdminRegistrationApplicationCompleteRequest mockRequest = new AdminRegistrationApplicationCompleteRequestBuilder() + .withValidValues().build(); + + // When + Mockito.doThrow(new AdminRegistrationApplicationNotExistException(mockId)) + .when(adminRegistrationCompleteService) + .complete(Mockito.anyString(), Mockito.any()); + + // Then + String endpoint = BASE_PATH.concat("/admin-registration-application/").concat(mockId).concat("/complete"); + MockHttpServletRequestBuilder mockHttpServletRequestBuilder = AysMockMvcRequestBuilders + .post(endpoint, mockRequest); + + AysErrorResponse mockErrorResponse = AysErrorResponseBuilder.UNAUTHORIZED; + + aysMockMvc.perform(mockHttpServletRequestBuilder, mockErrorResponse) + .andExpect(AysMockResultMatchersBuilders.status() + .isUnauthorized()) + .andExpect(AysMockResultMatchersBuilders.subErrors() + .doesNotHaveJsonPath()); + + // Verify + Mockito.verify(adminRegistrationCompleteService, Mockito.times(1)) + .complete(Mockito.anyString(), Mockito.any()); + } + @Test void givenPhoneNumberWithAlphanumericCharacter_whenPhoneNumberIsNotValid_thenReturnValidationError() throws Exception { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "f1b789d0-6095-4860-85bb-e1a0b20f1d13"; AysPhoneNumberRequest mockPhoneNumber = new AysPhoneNumberRequestBuilder() .withCountryCode("ABC") .withLineNumber("ABC").build(); @@ -397,7 +455,7 @@ void givenPhoneNumberWithAlphanumericCharacter_whenPhoneNumberIsNotValid_thenRet void givenPhoneNumberWithInvalidLength_whenPhoneNumberIsNotValid_thenReturnValidationError() throws Exception { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "25930d3f-4cea-4147-a21a-0f22c9bf72de"; AysPhoneNumberRequest mockPhoneNumber = new AysPhoneNumberRequestBuilder() .withCountryCode("456786745645") .withLineNumber("6546467456435548676845321346656654").build(); @@ -427,7 +485,7 @@ void givenPhoneNumberWithInvalidLength_whenPhoneNumberIsNotValid_thenReturnValid void givenPhoneNumberWithInvalidOperator_whenPhoneNumberIsNotValid_thenReturnValidationError() throws Exception { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "2028b456-e06c-4ea1-9017-b45523529576"; final String invalidOperator = "123"; AysPhoneNumberRequest mockPhoneNumber = new AysPhoneNumberRequestBuilder() .withCountryCode("90") @@ -465,7 +523,7 @@ void givenPhoneNumberWithInvalidOperator_whenPhoneNumberIsNotValid_thenReturnVal void givenInvalidAdminRegisterApplicationCompleteRequestWithParametrizedInvalidNames_whenNamesAreNotValid_thenReturnValidationError(String invalidName) throws Exception { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "f423facc-36fe-4615-a68d-f7f1fe5cd860"; AdminRegistrationApplicationCompleteRequest mockRequest = new AdminRegistrationApplicationCompleteRequestBuilder() .withValidValues() .withFirstName(invalidName) @@ -501,7 +559,7 @@ void givenInvalidAdminRegisterApplicationCompleteRequestWithParametrizedInvalidN void givenInvalidAdminRegisterApplicationCompleteRequestWithParametrizedInvalidEmails_whenEmailsAreNotValid_thenReturnValidationError(String invalidEmail) throws Exception { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "53617d24-e32c-4249-b9e6-b10e63a439bd"; AdminRegistrationApplicationCompleteRequest mockRequest = new AdminRegistrationApplicationCompleteRequestBuilder() .withValidValues() .withEmailAddress(invalidEmail) @@ -536,7 +594,7 @@ void givenInvalidAdminRegisterApplicationCompleteRequestWithParametrizedInvalidE }) void givenValidAdminRegisterApplicationCompleteRequestWithParametrizedValidEmails_whenEmailsAreValid_thenReturnSuccessResponse(String validEmail) throws Exception { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "fe3760f1-8b44-4587-99a6-43e426c8c6d1"; AdminRegistrationApplicationCompleteRequest mockRequest = new AdminRegistrationApplicationCompleteRequestBuilder() .withValidValues() .withEmailAddress(validEmail) @@ -571,7 +629,7 @@ void givenValidAdminRegisterApplicationCompleteRequestWithParametrizedValidEmail void givenInvalidAdminRegisterApplicationCompleteRequestWithInvalidPassword_whenPasswordDoesNotValid_thenReturnValidationError(String mockPassword) throws Exception { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "de2b9621-0bf6-45df-a173-4697797446b7"; AdminRegistrationApplicationCompleteRequest mockRequest = new AdminRegistrationApplicationCompleteRequestBuilder() .withValidValues() .withPassword(mockPassword) @@ -598,7 +656,7 @@ void givenInvalidAdminRegisterApplicationCompleteRequestWithInvalidPassword_when @Test void givenValidAdminRegisterApplicationId_whenApproveAdminRegisterApplication_thenReturnNothing() throws Exception { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "47d91587-612f-462b-975f-ed227e2ee3a7"; // When Mockito.doNothing() @@ -626,7 +684,7 @@ void givenValidAdminRegisterApplicationId_whenApproveAdminRegisterApplication_th void givenValidAdminRegisterApplicationId_whenUnauthorizedForApprovingAdminRegisterApplication_thenReturnAccessDeniedException() throws Exception { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "5cbc8774-e2c3-414b-a1d8-26abcf3c9d17"; // Then String endpoint = BASE_PATH.concat("/admin-registration-application/".concat(mockId).concat("/approve")); @@ -650,7 +708,7 @@ void givenValidAdminRegisterApplicationId_whenUnauthorizedForApprovingAdminRegis void givenValidAdminRegisterApplicationRejectRequest_whenRejectingAdminRegisterApplication_thenReturnSuccess() throws Exception { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "c5c504a6-1223-483b-a8ba-6fb4ea309e00"; AdminRegistrationApplicationRejectRequest mockRequest = new AdminRegistrationApplicationRejectRequestBuilder() .withValidValues() .build(); @@ -681,7 +739,7 @@ void givenValidAdminRegisterApplicationRejectRequest_whenRejectingAdminRegisterA void givenValidAdminRegisterApplicationRejectRequest_whenUnauthorizedForRejectingAdminRegisterApplication_thenReturnAccessDeniedException() throws Exception { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "c27aa25e-7e2f-4bc1-8056-eb9c2948f507"; AdminRegistrationApplicationRejectRequest mockRequest = new AdminRegistrationApplicationRejectRequestBuilder() .withValidValues() .build(); diff --git a/src/test/java/org/ays/auth/service/impl/AdminRegistrationApplicationServiceImplTest.java b/src/test/java/org/ays/auth/service/impl/AdminRegistrationApplicationServiceImplTest.java index 4d8e5fa00..ed0d4eafe 100644 --- a/src/test/java/org/ays/auth/service/impl/AdminRegistrationApplicationServiceImplTest.java +++ b/src/test/java/org/ays/auth/service/impl/AdminRegistrationApplicationServiceImplTest.java @@ -17,14 +17,14 @@ import org.ays.auth.port.AdminRegistrationApplicationReadPort; import org.ays.auth.port.AdminRegistrationApplicationSavePort; import org.ays.auth.port.AysUserSavePort; +import org.ays.auth.util.exception.AdminRegistrationApplicationNotExistByIdException; +import org.ays.auth.util.exception.AdminRegistrationApplicationNotExistException; import org.ays.auth.util.exception.AysAdminRegistrationApplicationAlreadyApprovedException; import org.ays.auth.util.exception.AysAdminRegistrationApplicationAlreadyRejectedException; import org.ays.auth.util.exception.AysAdminRegistrationApplicationInCompleteException; -import org.ays.auth.util.exception.AysAdminRegistrationApplicationNotExistByIdException; import org.ays.common.model.AysPage; import org.ays.common.model.AysPageBuilder; import org.ays.common.model.AysPageable; -import org.ays.common.util.AysRandomUtil; import org.ays.institution.model.Institution; import org.ays.institution.model.InstitutionBuilder; import org.ays.institution.port.InstitutionReadPort; @@ -153,7 +153,7 @@ void givenAdminUserRegisterApplicationId_whenGettingAdminUserRegisterApplication void givenAdminUserRegisterApplicationId_whenAdminUserRegisterApplicationNotFound_thenThrowAysAdminUserRegisterApplicationNotExistByIdException() { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "608484c9-4fec-46da-9515-3341817e4843"; // When Mockito.when(adminRegistrationApplicationReadPort.findById(mockId)) @@ -161,7 +161,7 @@ void givenAdminUserRegisterApplicationId_whenAdminUserRegisterApplicationNotFoun // Then Assertions.assertThrows( - AysAdminRegistrationApplicationNotExistByIdException.class, + AdminRegistrationApplicationNotExistByIdException.class, () -> adminUserRegisterApplicationService.findById(mockId) ); @@ -174,7 +174,7 @@ void givenAdminUserRegisterApplicationId_whenAdminUserRegisterApplicationNotFoun void givenValidAdminUserRegisterApplicationId_whenAdminUserRegisterApplicationFoundWithWaitingStatus_thenReturnAdminUserRegisterApplication() { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "43af258d-d177-4227-9246-aef772609095"; AdminRegistrationApplication mockApplication = new AdminRegistrationApplicationBuilder() .withValidValues() .withId(mockId) @@ -202,10 +202,10 @@ void givenValidAdminUserRegisterApplicationId_whenAdminUserRegisterApplicationFo } @Test - void givenValidAdminUserRegisterApplicationId_whenThereIsNoAdminUserRegisterApplicationWithWaitingStatus_thenThrowAysAdminUserRegisterApplicationSummaryNotExistByIdException() { + void givenValidAdminUserRegisterApplicationId_whenThereIsNoAdminUserRegisterApplicationWithWaitingStatus_thenThrowAdminRegistrationApplicationNotExistException() { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "9f863805-ee46-44f8-9354-4cd49e21bfea"; // When Mockito.when(adminRegistrationApplicationReadPort.findById(mockId)) @@ -213,7 +213,7 @@ void givenValidAdminUserRegisterApplicationId_whenThereIsNoAdminUserRegisterAppl // Then Assertions.assertThrows( - AysAdminRegistrationApplicationNotExistByIdException.class, + AdminRegistrationApplicationNotExistException.class, () -> adminUserRegisterApplicationService.findSummaryById(mockId) ); @@ -285,7 +285,7 @@ void givenInvalidInstitutionId_whenCreatingAdminUserRegisterApplication_thenThro void givenValidAdminUserRegisterApplicationId_whenAdminUserRegisterApplicationApproved_thenReturnNothing() { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "6957a570-2ffe-4409-b4c5-5597f7ecfc15"; AysUser mockUser = new AysUserBuilder() .withValidValues() .withStatus(AysUserStatus.NOT_VERIFIED) @@ -318,10 +318,10 @@ void givenValidAdminUserRegisterApplicationId_whenAdminUserRegisterApplicationAp } @Test - void givenValidAdminUserRegisterApplicationId_whenAdminUserRegisterApplicationNotFound_thenThrowAysAdminRegistrationApplicationNotExistByIdException() { + void givenValidAdminUserRegisterApplicationId_whenAdminUserRegisterApplicationNotFound_thenThrowAdminRegistrationApplicationNotExistByIdException() { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "ba88600d-c38f-4a37-99be-2e4f26f00fc9"; // When Mockito.when(adminRegistrationApplicationReadPort.findById(mockId)) @@ -329,7 +329,7 @@ void givenValidAdminUserRegisterApplicationId_whenAdminUserRegisterApplicationNo // Then Assertions.assertThrows( - AysAdminRegistrationApplicationNotExistByIdException.class, + AdminRegistrationApplicationNotExistByIdException.class, () -> adminUserRegisterApplicationService.approve(mockId) ); @@ -349,7 +349,7 @@ void givenValidAdminUserRegisterApplicationId_whenAdminUserRegisterApplicationNo void givenValidAdminUserRegisterApplicationId_whenAdminUserRegisterApplicationWaiting_thenThrowAysAdminRegistrationApplicationInCompleteException() { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "c77ed397-16b1-4310-9644-eb2a51be2e86"; AdminRegistrationApplication mockApplication = new AdminRegistrationApplicationBuilder() .withValidValues() .withStatus(AdminRegistrationApplicationStatus.WAITING) @@ -380,7 +380,7 @@ void givenValidAdminUserRegisterApplicationId_whenAdminUserRegisterApplicationWa void givenValidAdminUserRegisterApplicationId_whenAdminUserRegisterApplicationApproved_thenThrowAysAdminRegistrationApplicationAlreadyApprovedException() { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "85d61489-8c78-4d03-a8ea-98154fc6ceb0"; AdminRegistrationApplication mockApplication = new AdminRegistrationApplicationBuilder() .withValidValues() .withStatus(AdminRegistrationApplicationStatus.APPROVED) @@ -411,7 +411,7 @@ void givenValidAdminUserRegisterApplicationId_whenAdminUserRegisterApplicationAp void givenValidAdminUserRegisterApplicationId_whenAdminUserRegisterApplicationRejected_thenThrowAysAdminRegistrationApplicationAlreadyRejectedException() { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "773ba2c1-760f-4e4b-a1cb-0f5994291e73"; AdminRegistrationApplication mockApplication = new AdminRegistrationApplicationBuilder() .withValidValues() .withStatus(AdminRegistrationApplicationStatus.REJECTED) @@ -442,7 +442,7 @@ void givenValidAdminUserRegisterApplicationId_whenAdminUserRegisterApplicationRe void givenAdminUserRegisterApplicationIdAndAdminUserRegisterApplicationRejectRequest_whenRejectingAdminUserRegisterApplication_thenReturnNothing() { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "6eae8d93-aa8a-4520-b20b-600840ef893d"; AysUser mockUser = new AysUserBuilder() .withValidValues() .withStatus(AysUserStatus.NOT_VERIFIED) @@ -478,7 +478,7 @@ void givenAdminUserRegisterApplicationIdAndAdminUserRegisterApplicationRejectReq void givenAdminUserRegisterApplicationIdAndAdminUserRegisterApplicationRejectRequest_whenAdminUserRegisterApplicationNotFound_thenThrowAysAdminUserRegisterApplicationNotExistByIdAndStatusException() { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "cd52e3f0-b57b-453a-bd35-57c55d32fd0e"; AdminRegistrationApplicationRejectRequest mockRequest = new AdminRegistrationApplicationRejectRequestBuilder() .withValidValues() .build(); @@ -489,7 +489,7 @@ void givenAdminUserRegisterApplicationIdAndAdminUserRegisterApplicationRejectReq // Then Assertions.assertThrows( - AysAdminRegistrationApplicationNotExistByIdException.class, + AdminRegistrationApplicationNotExistByIdException.class, () -> adminUserRegisterApplicationService.reject(mockId, mockRequest) ); @@ -508,7 +508,7 @@ void givenAdminUserRegisterApplicationIdAndAdminUserRegisterApplicationRejectReq void givenAdminUserRegisterApplicationIdAndAdminUserRegisterApplicationRejectRequest_whenAdminUserRegisterApplicationIsNotCompleted_thenThrowAysAdminUserRegisterApplicationNotExistByIdAndStatusException() { // Given - String mockId = AysRandomUtil.generateUUID(); + String mockId = "cf8f8e6b-4255-4407-94d2-cdf612888e20"; AysUser mockUser = new AysUserBuilder() .withValidValues() .withStatus(AysUserStatus.NOT_VERIFIED) diff --git a/src/test/java/org/ays/auth/service/impl/AdminRegistrationCompleteServiceImplTest.java b/src/test/java/org/ays/auth/service/impl/AdminRegistrationCompleteServiceImplTest.java index 923ef770f..72d4d6770 100644 --- a/src/test/java/org/ays/auth/service/impl/AdminRegistrationCompleteServiceImplTest.java +++ b/src/test/java/org/ays/auth/service/impl/AdminRegistrationCompleteServiceImplTest.java @@ -19,13 +19,12 @@ import org.ays.auth.port.AysRoleSavePort; import org.ays.auth.port.AysUserReadPort; import org.ays.auth.port.AysUserSavePort; -import org.ays.auth.util.exception.AysAdminRegistrationApplicationNotExistByIdException; +import org.ays.auth.util.exception.AdminRegistrationApplicationNotExistException; import org.ays.auth.util.exception.AysUserAlreadyExistsByEmailAddressException; import org.ays.auth.util.exception.AysUserAlreadyExistsByPhoneNumberException; import org.ays.common.model.AysPhoneNumber; import org.ays.common.model.request.AysPhoneNumberRequest; import org.ays.common.model.request.AysPhoneNumberRequestBuilder; -import org.ays.common.util.AysRandomUtil; import org.ays.util.AysValidTestData; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -73,21 +72,13 @@ class AdminRegistrationCompleteServiceImplTest extends AysUnitTest { void givenValidAdminRegisterApplicationCompleteRequest_whenFirstAdminRegistered_thenDoNothing() { // Given - String mockApplicationId = AysRandomUtil.generateUUID(); + String mockApplicationId = "407d252c-7fe6-4425-9be7-08d586df6e67"; AdminRegistrationApplicationCompleteRequest mockCompleteRequest = new AdminRegistrationApplicationCompleteRequestBuilder() .withValidValues() .build(); AysPhoneNumberRequest mockPhoneNumberRequest = mockCompleteRequest.getPhoneNumber(); // When - AdminRegistrationApplication mockApplication = new AdminRegistrationApplicationBuilder() - .withValidValues() - .withStatus(AdminRegistrationApplicationStatus.WAITING) - .withoutUser() - .build(); - Mockito.when(adminRegistrationApplicationReadPort.findById(Mockito.anyString())) - .thenReturn(Optional.of(mockApplication)); - Mockito.when(userReadPort.existsByEmailAddress((Mockito.anyString()))) .thenReturn(false); @@ -98,6 +89,14 @@ void givenValidAdminRegisterApplicationCompleteRequest_whenFirstAdminRegistered_ Mockito.when(userReadPort.existsByPhoneNumber(mockPhoneNumber)) .thenReturn(false); + AdminRegistrationApplication mockApplication = new AdminRegistrationApplicationBuilder() + .withValidValues() + .withStatus(AdminRegistrationApplicationStatus.WAITING) + .withoutUser() + .build(); + Mockito.when(adminRegistrationApplicationReadPort.findById(Mockito.anyString())) + .thenReturn(Optional.of(mockApplication)); + Mockito.when(roleReadPort.findAllActivesByInstitutionId(Mockito.anyString())) .thenReturn(List.of()); @@ -135,15 +134,15 @@ void givenValidAdminRegisterApplicationCompleteRequest_whenFirstAdminRegistered_ adminUserRegisterService.complete(mockApplicationId, mockCompleteRequest); // Verify - Mockito.verify(adminRegistrationApplicationReadPort, Mockito.times(1)) - .findById(Mockito.anyString()); - Mockito.verify(userReadPort, Mockito.times(1)) .existsByEmailAddress(Mockito.anyString()); Mockito.verify(userReadPort, Mockito.times(1)) .existsByPhoneNumber(Mockito.any(AysPhoneNumber.class)); + Mockito.verify(adminRegistrationApplicationReadPort, Mockito.times(1)) + .findById(Mockito.anyString()); + Mockito.verify(roleReadPort, Mockito.times(1)) .findAllActivesByInstitutionId(Mockito.anyString()); @@ -167,21 +166,13 @@ void givenValidAdminRegisterApplicationCompleteRequest_whenFirstAdminRegistered_ void givenValidAdminRegisterApplicationCompleteRequest_whenAdminRegistered_thenDoNothing() { // Given - String mockApplicationId = AysRandomUtil.generateUUID(); + String mockApplicationId = "06293821-15e8-4edc-b8f9-2c33eaec7fc3"; AdminRegistrationApplicationCompleteRequest mockCompleteRequest = new AdminRegistrationApplicationCompleteRequestBuilder() .withValidValues() .build(); AysPhoneNumberRequest mockPhoneNumberRequest = mockCompleteRequest.getPhoneNumber(); // When - AdminRegistrationApplication mockWaitingApplication = new AdminRegistrationApplicationBuilder() - .withValidValues() - .withId(mockApplicationId) - .withoutUser() - .build(); - Mockito.when(adminRegistrationApplicationReadPort.findById(Mockito.anyString())) - .thenReturn(Optional.of(mockWaitingApplication)); - Mockito.when(userReadPort.existsByEmailAddress((Mockito.anyString()))) .thenReturn(false); @@ -192,6 +183,14 @@ void givenValidAdminRegisterApplicationCompleteRequest_whenAdminRegistered_thenD Mockito.when(userReadPort.existsByPhoneNumber(mockPhoneNumber)) .thenReturn(false); + AdminRegistrationApplication mockWaitingApplication = new AdminRegistrationApplicationBuilder() + .withValidValues() + .withId(mockApplicationId) + .withoutUser() + .build(); + Mockito.when(adminRegistrationApplicationReadPort.findById(Mockito.anyString())) + .thenReturn(Optional.of(mockWaitingApplication)); + AysRole mockRole = new AysRoleBuilder() .withValidValues() .build(); @@ -220,15 +219,15 @@ void givenValidAdminRegisterApplicationCompleteRequest_whenAdminRegistered_thenD adminUserRegisterService.complete(mockApplicationId, mockCompleteRequest); // Verify - Mockito.verify(adminRegistrationApplicationReadPort, Mockito.times(1)) - .findById(Mockito.anyString()); - Mockito.verify(userReadPort, Mockito.times(1)) .existsByEmailAddress(Mockito.anyString()); Mockito.verify(userReadPort, Mockito.times(1)) .existsByPhoneNumber(Mockito.any(AysPhoneNumber.class)); + Mockito.verify(adminRegistrationApplicationReadPort, Mockito.times(1)) + .findById(Mockito.anyString()); + Mockito.verify(roleReadPort, Mockito.times(1)) .findAllActivesByInstitutionId(Mockito.anyString()); @@ -249,33 +248,45 @@ void givenValidAdminRegisterApplicationCompleteRequest_whenAdminRegistered_thenD } @Test - void givenInvalidApplicationId_whenApplicationNotFound_thenThrowAysAdminRegistrationApplicationNotExistByIdException() { + void givenValidApplicationId_whenApplicationNotFound_thenThrowAdminRegistrationApplicationNotExistException() { // Given - String mockApplicationId = "Invalid"; + String mockApplicationId = "85bb38cc-296d-4a63-a88c-1904c4df43e4"; AdminRegistrationApplicationCompleteRequest mockCompleteRequest = new AdminRegistrationApplicationCompleteRequestBuilder() - .withValidValues().build(); + .withValidValues() + .build(); + AysPhoneNumberRequest mockPhoneNumberRequest = mockCompleteRequest.getPhoneNumber(); // When + Mockito.when(userReadPort.existsByEmailAddress((Mockito.anyString()))) + .thenReturn(false); + + AysPhoneNumber mockPhoneNumber = AysPhoneNumber.builder() + .countryCode(mockPhoneNumberRequest.getCountryCode()) + .lineNumber(mockPhoneNumberRequest.getLineNumber()) + .build(); + Mockito.when(userReadPort.existsByPhoneNumber(mockPhoneNumber)) + .thenReturn(false); + Mockito.when(adminRegistrationApplicationReadPort.findById(Mockito.anyString())) .thenReturn(Optional.empty()); // Then Assertions.assertThrows( - AysAdminRegistrationApplicationNotExistByIdException.class, + AdminRegistrationApplicationNotExistException.class, () -> adminUserRegisterService.complete(mockApplicationId, mockCompleteRequest) ); // Verify - Mockito.verify(adminRegistrationApplicationReadPort, Mockito.times(1)) - .findById(Mockito.anyString()); - - Mockito.verify(userReadPort, Mockito.never()) + Mockito.verify(userReadPort, Mockito.times(1)) .existsByEmailAddress(Mockito.anyString()); - Mockito.verify(userReadPort, Mockito.never()) + Mockito.verify(userReadPort, Mockito.times(1)) .existsByPhoneNumber(Mockito.any(AysPhoneNumber.class)); + Mockito.verify(adminRegistrationApplicationReadPort, Mockito.times(1)) + .findById(Mockito.anyString()); + Mockito.verify(roleReadPort, Mockito.never()) .findAllActivesByInstitutionId(Mockito.anyString()); @@ -296,15 +307,26 @@ void givenInvalidApplicationId_whenApplicationNotFound_thenThrowAysAdminRegistra } @Test - void givenUsedApplicationId_whenApplicationStatusIsNotWaiting_thenThrowAysAdminRegistrationApplicationNotExistByIdException() { + void givenUsedApplicationId_whenApplicationStatusIsNotWaiting_thenThrowAdminRegistrationApplicationNotExistException() { // Given - String mockApplicationId = AysRandomUtil.generateUUID(); + String mockApplicationId = "1d9c375a-9da0-46b3-a2a8-9dd7f2d8f353"; AdminRegistrationApplicationCompleteRequest mockCompleteRequest = new AdminRegistrationApplicationCompleteRequestBuilder() .withValidValues() .build(); + AysPhoneNumberRequest mockPhoneNumberRequest = mockCompleteRequest.getPhoneNumber(); // When + Mockito.when(userReadPort.existsByEmailAddress((Mockito.anyString()))) + .thenReturn(false); + + AysPhoneNumber mockPhoneNumber = AysPhoneNumber.builder() + .countryCode(mockPhoneNumberRequest.getCountryCode()) + .lineNumber(mockPhoneNumberRequest.getLineNumber()) + .build(); + Mockito.when(userReadPort.existsByPhoneNumber(mockPhoneNumber)) + .thenReturn(false); + AdminRegistrationApplication mockApplication = new AdminRegistrationApplicationBuilder() .withValidValues() .withStatus(AdminRegistrationApplicationStatus.COMPLETED) @@ -314,20 +336,20 @@ void givenUsedApplicationId_whenApplicationStatusIsNotWaiting_thenThrowAysAdminR // Then Assertions.assertThrows( - AysAdminRegistrationApplicationNotExistByIdException.class, + AdminRegistrationApplicationNotExistException.class, () -> adminUserRegisterService.complete(mockApplicationId, mockCompleteRequest) ); // Verify - Mockito.verify(adminRegistrationApplicationReadPort, Mockito.times(1)) - .findById(Mockito.anyString()); - - Mockito.verify(userReadPort, Mockito.never()) + Mockito.verify(userReadPort, Mockito.times(1)) .existsByEmailAddress(Mockito.anyString()); - Mockito.verify(userReadPort, Mockito.never()) + Mockito.verify(userReadPort, Mockito.times(1)) .existsByPhoneNumber(Mockito.any(AysPhoneNumber.class)); + Mockito.verify(adminRegistrationApplicationReadPort, Mockito.times(1)) + .findById(Mockito.anyString()); + Mockito.verify(roleReadPort, Mockito.never()) .findAllActivesByInstitutionId(Mockito.anyString()); @@ -351,18 +373,12 @@ void givenUsedApplicationId_whenApplicationStatusIsNotWaiting_thenThrowAysAdminR void givenExistingEmailFromAdminRegisterRequest_whenAdminExist_thenThrowAysUserAlreadyExistsByEmailException() { // Given - String mockApplicationId = AysRandomUtil.generateUUID(); + String mockApplicationId = "09b986c5-28a7-43be-9b48-8d48b5bfce40"; AdminRegistrationApplicationCompleteRequest mockCompleteRequest = new AdminRegistrationApplicationCompleteRequestBuilder() .withValidValues() .build(); // When - AdminRegistrationApplication mockApplication = new AdminRegistrationApplicationBuilder() - .withValidValues() - .build(); - Mockito.when(adminRegistrationApplicationReadPort.findById(Mockito.anyString())) - .thenReturn(Optional.ofNullable(mockApplication)); - Mockito.when(userReadPort.existsByEmailAddress((Mockito.anyString()))) .thenReturn(true); @@ -373,15 +389,15 @@ void givenExistingEmailFromAdminRegisterRequest_whenAdminExist_thenThrowAysUserA ); // Verify - Mockito.verify(adminRegistrationApplicationReadPort, Mockito.times(1)) - .findById(Mockito.anyString()); - Mockito.verify(userReadPort, Mockito.times(1)) .existsByEmailAddress(Mockito.anyString()); Mockito.verify(userReadPort, Mockito.never()) .existsByPhoneNumber(Mockito.any(AysPhoneNumber.class)); + Mockito.verify(adminRegistrationApplicationReadPort, Mockito.never()) + .findById(Mockito.anyString()); + Mockito.verify(roleReadPort, Mockito.never()) .findAllActivesByInstitutionId(Mockito.anyString()); @@ -405,7 +421,7 @@ void givenExistingEmailFromAdminRegisterRequest_whenAdminExist_thenThrowAysUserA void givenExistingPhoneNumberFromAdminRegisterRequest_whenAdminExist_thenThrowAysUserAlreadyExistsByPhoneNumberException() { // Given - String applicationId = AysRandomUtil.generateUUID(); + String applicationId = "fe98a7e7-612f-4068-abb1-aaa3cb2fd1e9"; AysPhoneNumberRequest mockPhoneNumberRequest = new AysPhoneNumberRequestBuilder() .withValidValues() @@ -416,14 +432,7 @@ void givenExistingPhoneNumberFromAdminRegisterRequest_whenAdminExist_thenThrowAy .withPhoneNumber(mockPhoneNumberRequest) .build(); - AdminRegistrationApplication mockApplication = new AdminRegistrationApplicationBuilder() - .withValidValues() - .build(); - // When - Mockito.when(adminRegistrationApplicationReadPort.findById(Mockito.anyString())) - .thenReturn(Optional.ofNullable(mockApplication)); - Mockito.when(userReadPort.existsByEmailAddress((Mockito.anyString()))) .thenReturn(false); @@ -437,15 +446,15 @@ void givenExistingPhoneNumberFromAdminRegisterRequest_whenAdminExist_thenThrowAy ); // Verify - Mockito.verify(adminRegistrationApplicationReadPort, Mockito.times(1)) - .findById(Mockito.anyString()); - Mockito.verify(userReadPort, Mockito.times(1)) .existsByEmailAddress(Mockito.anyString()); Mockito.verify(userReadPort, Mockito.times(1)) .existsByPhoneNumber(Mockito.any(AysPhoneNumber.class)); + Mockito.verify(adminRegistrationApplicationReadPort, Mockito.never()) + .findById(Mockito.anyString()); + Mockito.verify(roleReadPort, Mockito.never()) .findAllActivesByInstitutionId(Mockito.anyString()); diff --git a/src/test/java/org/ays/common/util/exception/model/response/AysErrorResponseBuilder.java b/src/test/java/org/ays/common/util/exception/model/response/AysErrorResponseBuilder.java index 62e914dad..adac0779f 100644 --- a/src/test/java/org/ays/common/util/exception/model/response/AysErrorResponseBuilder.java +++ b/src/test/java/org/ays/common/util/exception/model/response/AysErrorResponseBuilder.java @@ -8,6 +8,10 @@ public class AysErrorResponseBuilder { .header(AysErrorResponse.Header.VALIDATION_ERROR.getName()) .isSuccess(false).build(); + public static final AysErrorResponse UNAUTHORIZED = AysErrorResponse.builder() + .header(AysErrorResponse.Header.AUTH_ERROR.getName()) + .isSuccess(false).build(); + public static final AysErrorResponse FORBIDDEN = AysErrorResponse.builder() .header(AysErrorResponse.Header.AUTH_ERROR.getName()) .isSuccess(false).build();