|
27 | 27 | import it.pagopa.selfcare.user.entity.filter.OnboardedProductFilter; |
28 | 28 | import it.pagopa.selfcare.user.entity.filter.UserInstitutionFilter; |
29 | 29 | import it.pagopa.selfcare.user.exception.InvalidRequestException; |
30 | | -import it.pagopa.selfcare.user.exception.UserRoleAlreadyPresentException; |
| 30 | +import it.pagopa.selfcare.user.exception.NumberOfAdminsExceededException; |
31 | 31 | import it.pagopa.selfcare.user.exception.ResourceNotFoundException; |
| 32 | +import it.pagopa.selfcare.user.exception.UserRoleAlreadyPresentException; |
32 | 33 | import it.pagopa.selfcare.user.mapper.UserMapper; |
33 | 34 | import it.pagopa.selfcare.user.model.LoggedUser; |
34 | 35 | import it.pagopa.selfcare.user.model.OnboardedProduct; |
|
48 | 49 | import org.mockito.ArgumentCaptor; |
49 | 50 | import org.mockito.Mockito; |
50 | 51 | import org.mockito.Spy; |
51 | | -import org.openapi.quarkus.user_registry_json.model.BirthDateCertifiableSchema; |
52 | | -import org.openapi.quarkus.user_registry_json.model.EmailCertifiableSchema; |
53 | | -import org.openapi.quarkus.user_registry_json.model.FamilyNameCertifiableSchema; |
54 | | -import org.openapi.quarkus.user_registry_json.model.NameCertifiableSchema; |
55 | | -import org.openapi.quarkus.user_registry_json.model.UserResource; |
56 | | -import org.openapi.quarkus.user_registry_json.model.UserSearchDto; |
57 | | -import org.openapi.quarkus.user_registry_json.model.WorkContactResource; |
| 52 | +import org.openapi.quarkus.user_registry_json.model.*; |
58 | 53 |
|
59 | 54 | import java.time.LocalDate; |
60 | 55 | import java.time.OffsetDateTime; |
@@ -1000,8 +995,10 @@ void testCreateOrUpdateUser_UpdateUser_UserRegistryUpdateFailedByFiscalCode() { |
1000 | 995 | // Prepare test data |
1001 | 996 | CreateUserDto createUserDto = new CreateUserDto(); |
1002 | 997 | CreateUserDto.User user = new CreateUserDto.User(); |
| 998 | + CreateUserDto.Product product = new CreateUserDto.Product(); |
1003 | 999 | user.setFiscalCode("fiscalCode"); |
1004 | 1000 | createUserDto.setUser(user); |
| 1001 | + createUserDto.setProduct(product); |
1005 | 1002 | LoggedUser loggedUser = LoggedUser.builder().build(); |
1006 | 1003 |
|
1007 | 1004 | // Mock external dependencies |
@@ -1049,6 +1046,52 @@ void testCreateOrUpdateUser_UpdateUser_UserInstitutionUpdateFailedByFiscalCode() |
1049 | 1046 | verify(userInstitutionService).persistOrUpdate(any()); |
1050 | 1047 | } |
1051 | 1048 |
|
| 1049 | + @Test |
| 1050 | + void testCreateOrUpdateUser_UpdateUser_SuccessNumberOfAdminsNotExceededByFiscalCode() { |
| 1051 | + // Prepare test data |
| 1052 | + CreateUserDto createUserDto = new CreateUserDto(); |
| 1053 | + CreateUserDto.User user = new CreateUserDto.User(); |
| 1054 | + user.setFiscalCode("fiscalCode"); |
| 1055 | + CreateUserDto.Product createUserProduct = new CreateUserDto.Product(); |
| 1056 | + createUserProduct.setProductId("prod-pagopa"); |
| 1057 | + createUserProduct.setProductRoles(List.of("admin", "admin-psp")); |
| 1058 | + createUserDto.setProduct(createUserProduct); |
| 1059 | + createUserDto.setUser(user); |
| 1060 | + LoggedUser loggedUser = LoggedUser.builder().build(); |
| 1061 | + |
| 1062 | + // Mock external dependencies |
| 1063 | + when(userRegistryApi.searchUsingPOST(any(), any())).thenReturn(Uni.createFrom().item(userResource)); |
| 1064 | + when(userInstitutionService.countInstitutionProductRoles(any(), any(), any())).thenReturn(Uni.createFrom().item(2L)); |
| 1065 | + |
| 1066 | + // Call and verify the method |
| 1067 | + UniAssertSubscriber<CreateOrUpdateUserByFiscalCodeResponse> subscriber = userService.createOrUpdateUserByFiscalCode(createUserDto, loggedUser) |
| 1068 | + .subscribe().withSubscriber(UniAssertSubscriber.create()).awaitItem(); |
| 1069 | + CreateOrUpdateUserByFiscalCodeResponse response = subscriber.awaitItem().getItem(); |
| 1070 | + assertEquals(userId.toString(), response.getUserId()); |
| 1071 | + } |
| 1072 | + |
| 1073 | + @Test |
| 1074 | + void testCreateOrUpdateUser_UpdateUser_NumberOfAdminsExceededByFiscalCode() { |
| 1075 | + // Prepare test data |
| 1076 | + CreateUserDto createUserDto = new CreateUserDto(); |
| 1077 | + CreateUserDto.User user = new CreateUserDto.User(); |
| 1078 | + user.setFiscalCode("fiscalCode"); |
| 1079 | + CreateUserDto.Product createUserProduct = new CreateUserDto.Product(); |
| 1080 | + createUserProduct.setProductId("prod-pagopa"); |
| 1081 | + createUserProduct.setProductRoles(List.of("admin", "admin-psp")); |
| 1082 | + createUserDto.setProduct(createUserProduct); |
| 1083 | + createUserDto.setUser(user); |
| 1084 | + LoggedUser loggedUser = LoggedUser.builder().build(); |
| 1085 | + |
| 1086 | + // Mock external dependencies |
| 1087 | + when(userInstitutionService.countInstitutionProductRoles(any(), any(), any())).thenReturn(Uni.createFrom().item(3L)); |
| 1088 | + |
| 1089 | + // Call and verify the method |
| 1090 | + userService.createOrUpdateUserByFiscalCode(createUserDto, loggedUser) |
| 1091 | + .subscribe().withSubscriber(UniAssertSubscriber.create()) |
| 1092 | + .assertFailedWith(NumberOfAdminsExceededException.class, "Maximum number of 3 admin-psp reached for prod-pagopa"); |
| 1093 | + } |
| 1094 | + |
1052 | 1095 | @Test |
1053 | 1096 | void testCreateOrUpdateUser_UpdateUser_ProductAlreadyOnboarded() { |
1054 | 1097 | // Prepare test data |
|
0 commit comments