From 97c6590b60ff56250a525916518caa79aa24489c Mon Sep 17 00:00:00 2001 From: macacia Date: Tue, 1 Oct 2024 13:25:02 +0200 Subject: [PATCH] P4ADEV-791-P4PA-AUTH-API-censimento-client-id new refactoring according to requested changes --- helm/values.yaml | 2 +- .../auth/controller/AuthzControllerImpl.java | 2 +- .../auth/repository/ClientRepository.java | 1 - .../payhub/auth/service/AuthzServiceImpl.java | 7 +-- .../auth/service/DataCipherService.java | 4 +- .../auth/service/a2a/ClientService.java | 3 +- .../auth/service/a2a/ClientServiceImpl.java | 12 +++- .../service/a2a/retreive/ClientMapper.java | 4 +- src/main/resources/application.yml | 2 +- .../payhub/auth/service/AuthzServiceTest.java | 10 +--- .../auth/service/a2a/ClientServiceTest.java | 57 +++++++++++++++++++ .../ClientRegistrationServiceTest.java | 3 +- .../retrieve/ClientMapperTest.java | 11 ++-- .../ExternalUserIdObfuscatorServiceTest.java | 2 +- 14 files changed, 86 insertions(+), 34 deletions(-) create mode 100644 src/test/java/it/gov/pagopa/payhub/auth/service/a2a/ClientServiceTest.java rename src/test/java/it/gov/pagopa/payhub/auth/service/{client => a2a}/registration/ClientRegistrationServiceTest.java (92%) rename src/test/java/it/gov/pagopa/payhub/auth/service/{client => a2a}/retrieve/ClientMapperTest.java (81%) diff --git a/helm/values.yaml b/helm/values.yaml index d9fadd35..a6c52c46 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -87,7 +87,7 @@ microservice-chart: MYPIVOT_DB_PASSWORD: db-mypay-login-password DATA_CIPHER_P4PA_AUTH_HASH_KEY: p4pa-auth-hash-key - DATA_CIPHER_P4PA_AUTH_ENCRYPT_PSW: data-cipher.encrypt-psw + DATA_CIPHER_P4PA_AUTH_ENCRYPT_PSW: p4pa-auth-encrypt-psw # nodeSelector: {} # tolerations: [] diff --git a/src/main/java/it/gov/pagopa/payhub/auth/controller/AuthzControllerImpl.java b/src/main/java/it/gov/pagopa/payhub/auth/controller/AuthzControllerImpl.java index 0c259e83..48fa4b1b 100644 --- a/src/main/java/it/gov/pagopa/payhub/auth/controller/AuthzControllerImpl.java +++ b/src/main/java/it/gov/pagopa/payhub/auth/controller/AuthzControllerImpl.java @@ -99,7 +99,7 @@ public ResponseEntity createUser(UserDTO user) { @Override public ResponseEntity registerClient(String organizationIpaCode, CreateClientRequest createClientRequest) { - if(!SecurityUtils.hasAdminRole()){ + if(!SecurityUtils.isPrincipalAdmin(organizationIpaCode)){ throw new UserUnauthorizedException("User not allowed to create client"); } return ResponseEntity.ok(authzService.registerClient(organizationIpaCode, createClientRequest)); diff --git a/src/main/java/it/gov/pagopa/payhub/auth/repository/ClientRepository.java b/src/main/java/it/gov/pagopa/payhub/auth/repository/ClientRepository.java index 4e531870..1447ce41 100644 --- a/src/main/java/it/gov/pagopa/payhub/auth/repository/ClientRepository.java +++ b/src/main/java/it/gov/pagopa/payhub/auth/repository/ClientRepository.java @@ -5,5 +5,4 @@ public interface ClientRepository extends MongoRepository { - Client insert(Client client); } diff --git a/src/main/java/it/gov/pagopa/payhub/auth/service/AuthzServiceImpl.java b/src/main/java/it/gov/pagopa/payhub/auth/service/AuthzServiceImpl.java index e721491c..dbd61247 100644 --- a/src/main/java/it/gov/pagopa/payhub/auth/service/AuthzServiceImpl.java +++ b/src/main/java/it/gov/pagopa/payhub/auth/service/AuthzServiceImpl.java @@ -35,12 +35,11 @@ public class AuthzServiceImpl implements AuthzService { private final OperatorDTOMapper operatorDTOMapper; private final UserDTOMapper userDTOMapper; private final Operator2UserInfoMapper operator2UserInfoMapper; - private final ClientMapper clientMapper; private static final String MYPAYIAMISSUERS = "MYPAY"; public AuthzServiceImpl(UserService userService, ClientService clientService, UsersRepository usersRepository, OperatorsRepository operatorsRepository, OperatorDTOMapper operatorDTOMapper, UserDTOMapper userDTOMapper, - Operator2UserInfoMapper operator2UserInfoMapper, ClientMapper clientMapper) { + Operator2UserInfoMapper operator2UserInfoMapper) { this.userService = userService; this.clientService = clientService; this.usersRepository = usersRepository; @@ -48,7 +47,6 @@ public AuthzServiceImpl(UserService userService, ClientService clientService, Us this.operatorDTOMapper = operatorDTOMapper; this.userDTOMapper = userDTOMapper; this.operator2UserInfoMapper = operator2UserInfoMapper; - this.clientMapper = clientMapper; } @Override @@ -109,7 +107,6 @@ public UserInfo getUserInfoFromMappedExternalUserId(String mappedExternalUserId) @Override public ClientDTO registerClient(String organizationIpaCode, CreateClientRequest createClientRequest) { - Client client = clientService.registerClient(createClientRequest.getClientId(), organizationIpaCode); - return clientMapper.mapToDTO(client); + return clientService.registerClient(createClientRequest.getClientId(), organizationIpaCode); } } diff --git a/src/main/java/it/gov/pagopa/payhub/auth/service/DataCipherService.java b/src/main/java/it/gov/pagopa/payhub/auth/service/DataCipherService.java index 0fa3ddea..3c9921c9 100644 --- a/src/main/java/it/gov/pagopa/payhub/auth/service/DataCipherService.java +++ b/src/main/java/it/gov/pagopa/payhub/auth/service/DataCipherService.java @@ -16,8 +16,8 @@ public class DataCipherService { private final ObjectMapper objectMapper; public DataCipherService( - @Value("${data-cipher.encrypt-psw}") String encryptPsw, - @Value("${data-cipher.hash-pepper}") String hashPepper, + @Value("${p4pa-auth-encrypt-psw}") String encryptPsw, + @Value("${p4pa-auth-hash-pepper}") String hashPepper, ObjectMapper objectMapper ) { this.encryptPsw = encryptPsw; diff --git a/src/main/java/it/gov/pagopa/payhub/auth/service/a2a/ClientService.java b/src/main/java/it/gov/pagopa/payhub/auth/service/a2a/ClientService.java index 60a648ef..7f365fe7 100644 --- a/src/main/java/it/gov/pagopa/payhub/auth/service/a2a/ClientService.java +++ b/src/main/java/it/gov/pagopa/payhub/auth/service/a2a/ClientService.java @@ -1,8 +1,9 @@ package it.gov.pagopa.payhub.auth.service.a2a; import it.gov.pagopa.payhub.auth.model.Client; +import it.gov.pagopa.payhub.model.generated.ClientDTO; public interface ClientService { - Client registerClient(String clientId, String organizationIpaCode); + ClientDTO registerClient(String clientId, String organizationIpaCode); } diff --git a/src/main/java/it/gov/pagopa/payhub/auth/service/a2a/ClientServiceImpl.java b/src/main/java/it/gov/pagopa/payhub/auth/service/a2a/ClientServiceImpl.java index aadf786f..c8024289 100644 --- a/src/main/java/it/gov/pagopa/payhub/auth/service/a2a/ClientServiceImpl.java +++ b/src/main/java/it/gov/pagopa/payhub/auth/service/a2a/ClientServiceImpl.java @@ -2,6 +2,8 @@ import it.gov.pagopa.payhub.auth.model.Client; import it.gov.pagopa.payhub.auth.service.a2a.registration.ClientRegistrationService; +import it.gov.pagopa.payhub.auth.service.a2a.retreive.ClientMapper; +import it.gov.pagopa.payhub.model.generated.ClientDTO; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -11,12 +13,16 @@ public class ClientServiceImpl implements ClientService { private final ClientRegistrationService clientRegistrationService; - public ClientServiceImpl(ClientRegistrationService clientRegistrationService) { + private final ClientMapper clientMapper; + + public ClientServiceImpl(ClientRegistrationService clientRegistrationService, ClientMapper clientMapper) { this.clientRegistrationService = clientRegistrationService; + this.clientMapper = clientMapper; } @Override - public Client registerClient(String clientId, String organizationIpaCode) { - return clientRegistrationService.registerClient(clientId, organizationIpaCode); + public ClientDTO registerClient(String clientId, String organizationIpaCode) { + Client client = clientRegistrationService.registerClient(clientId, organizationIpaCode); + return clientMapper.mapToDTO(client); } } diff --git a/src/main/java/it/gov/pagopa/payhub/auth/service/a2a/retreive/ClientMapper.java b/src/main/java/it/gov/pagopa/payhub/auth/service/a2a/retreive/ClientMapper.java index 40556bbe..a5ba7770 100644 --- a/src/main/java/it/gov/pagopa/payhub/auth/service/a2a/retreive/ClientMapper.java +++ b/src/main/java/it/gov/pagopa/payhub/auth/service/a2a/retreive/ClientMapper.java @@ -22,11 +22,11 @@ public ClientDTO mapToDTO(Client client) { .build(); } - public Client mapToModel(String clientId, String organizationIpaCode, String uuid) { + public Client mapToModel(String clientId, String organizationIpaCode, String clientSecret) { return Client.builder() .clientId(clientId) .organizationIpaCode(organizationIpaCode) - .clientSecret(dataCipherService.encrypt(uuid)) + .clientSecret(dataCipherService.encrypt(clientSecret)) .build(); } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 141d0544..a5196dc7 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -66,4 +66,4 @@ app: data-chiper: p4pa-auth-hash-key: "\${DATA_CIPHER_P4PA_AUTH_HASH_KEY:PEPPER}" - data-cipher-encrypt-psw: "\${DATA_CIPHER_P4PA_AUTH_ENCRYPT_PSW}" + p4pa-auth-encrypt-psw: "\${DATA_CIPHER_P4PA_AUTH_ENCRYPT_PSW:PSW}" diff --git a/src/test/java/it/gov/pagopa/payhub/auth/service/AuthzServiceTest.java b/src/test/java/it/gov/pagopa/payhub/auth/service/AuthzServiceTest.java index 4e4483bd..c5fd27e4 100644 --- a/src/test/java/it/gov/pagopa/payhub/auth/service/AuthzServiceTest.java +++ b/src/test/java/it/gov/pagopa/payhub/auth/service/AuthzServiceTest.java @@ -52,9 +52,6 @@ class AuthzServiceTest { @Mock private UserDTOMapper userDTOMapper; - @Mock - private ClientMapper clientMapper; - @Mock private Operator2UserInfoMapper operator2UserInfoMapper; @@ -62,7 +59,7 @@ class AuthzServiceTest { @BeforeEach void init(){ - service = new AuthzServiceImpl(userServiceMock, clientServiceMock, usersRepository, operatorsRepository, operatorDTOMapper, userDTOMapper, operator2UserInfoMapper, clientMapper); + service = new AuthzServiceImpl(userServiceMock, clientServiceMock, usersRepository, operatorsRepository, operatorDTOMapper, userDTOMapper, operator2UserInfoMapper); } @AfterEach @@ -229,12 +226,9 @@ void whenCreateClientThenVerifyClient() { CreateClientRequest createClientRequest = new CreateClientRequest(); createClientRequest.setClientId("clientId"); - Client mockClient = new Client(); ClientDTO expectedClientDTO = new ClientDTO(); - Mockito.when(clientServiceMock.registerClient(createClientRequest.getClientId(), organizationIpaCode)).thenReturn(mockClient); - - Mockito.when(clientMapper.mapToDTO(mockClient)).thenReturn(expectedClientDTO); + Mockito.when(clientServiceMock.registerClient(createClientRequest.getClientId(), organizationIpaCode)).thenReturn(expectedClientDTO); ClientDTO actualClientDTO = service.registerClient(organizationIpaCode, createClientRequest); diff --git a/src/test/java/it/gov/pagopa/payhub/auth/service/a2a/ClientServiceTest.java b/src/test/java/it/gov/pagopa/payhub/auth/service/a2a/ClientServiceTest.java new file mode 100644 index 00000000..0f4c0d70 --- /dev/null +++ b/src/test/java/it/gov/pagopa/payhub/auth/service/a2a/ClientServiceTest.java @@ -0,0 +1,57 @@ +package it.gov.pagopa.payhub.auth.service.a2a; + +import it.gov.pagopa.payhub.auth.model.Client; +import it.gov.pagopa.payhub.auth.service.a2a.registration.ClientRegistrationService; +import it.gov.pagopa.payhub.auth.service.a2a.retreive.ClientMapper; +import it.gov.pagopa.payhub.model.generated.ClientDTO; +import it.gov.pagopa.payhub.model.generated.CreateClientRequest; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +public class ClientServiceTest { + + @Mock + private ClientRegistrationService clientRegistrationServiceMock; + + @Mock + private ClientMapper clientMapper; + + private ClientService service; + + @BeforeEach + void init(){ + service = new ClientServiceImpl(clientRegistrationServiceMock, clientMapper); + } + + @AfterEach + void verifyNotMoreInteractions(){ + Mockito.verifyNoMoreInteractions( + clientRegistrationServiceMock, + clientMapper + ); + } + + @Test + void whenCreateClientThenVerifyClient() { + String organizationIpaCode = "organizationIpaCode"; + String clientId = "clientId"; + + Client mockClient = new Client(); + ClientDTO expectedClientDTO = new ClientDTO(); + + Mockito.when(clientRegistrationServiceMock.registerClient(clientId, organizationIpaCode)).thenReturn(mockClient); + + Mockito.when(clientMapper.mapToDTO(mockClient)).thenReturn(expectedClientDTO); + + ClientDTO actualClientDTO = service.registerClient(clientId, organizationIpaCode); + + Assertions.assertEquals(expectedClientDTO, actualClientDTO); + } +} diff --git a/src/test/java/it/gov/pagopa/payhub/auth/service/client/registration/ClientRegistrationServiceTest.java b/src/test/java/it/gov/pagopa/payhub/auth/service/a2a/registration/ClientRegistrationServiceTest.java similarity index 92% rename from src/test/java/it/gov/pagopa/payhub/auth/service/client/registration/ClientRegistrationServiceTest.java rename to src/test/java/it/gov/pagopa/payhub/auth/service/a2a/registration/ClientRegistrationServiceTest.java index 5c591664..9110c6dd 100644 --- a/src/test/java/it/gov/pagopa/payhub/auth/service/client/registration/ClientRegistrationServiceTest.java +++ b/src/test/java/it/gov/pagopa/payhub/auth/service/a2a/registration/ClientRegistrationServiceTest.java @@ -1,8 +1,7 @@ -package it.gov.pagopa.payhub.auth.service.client.registration; +package it.gov.pagopa.payhub.auth.service.a2a.registration; import it.gov.pagopa.payhub.auth.model.Client; import it.gov.pagopa.payhub.auth.repository.ClientRepository; -import it.gov.pagopa.payhub.auth.service.a2a.registration.ClientRegistrationService; import it.gov.pagopa.payhub.auth.service.a2a.retreive.ClientMapper; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; diff --git a/src/test/java/it/gov/pagopa/payhub/auth/service/client/retrieve/ClientMapperTest.java b/src/test/java/it/gov/pagopa/payhub/auth/service/a2a/retrieve/ClientMapperTest.java similarity index 81% rename from src/test/java/it/gov/pagopa/payhub/auth/service/client/retrieve/ClientMapperTest.java rename to src/test/java/it/gov/pagopa/payhub/auth/service/a2a/retrieve/ClientMapperTest.java index c4df6e20..72352dc5 100644 --- a/src/test/java/it/gov/pagopa/payhub/auth/service/client/retrieve/ClientMapperTest.java +++ b/src/test/java/it/gov/pagopa/payhub/auth/service/a2a/retrieve/ClientMapperTest.java @@ -1,6 +1,5 @@ -package it.gov.pagopa.payhub.auth.service.client.retrieve; +package it.gov.pagopa.payhub.auth.service.a2a.retrieve; -import com.fasterxml.jackson.databind.ObjectMapper; import it.gov.pagopa.payhub.auth.model.Client; import it.gov.pagopa.payhub.auth.service.DataCipherService; import it.gov.pagopa.payhub.auth.service.a2a.retreive.ClientMapper; @@ -18,7 +17,7 @@ class ClientMapperTest { @Mock - private DataCipherService dataCipherService = new DataCipherService("PSW","PEPPER", new ObjectMapper()); + private DataCipherService dataCipherService; @InjectMocks private ClientMapper service; @@ -28,7 +27,7 @@ class ClientMapperTest { @Test void givenClientWhenMapThenGetClientDTO() { // Given - var chiper = dataCipherService.encrypt(uuidForSecret); + byte[] chiper = dataCipherService.encrypt(uuidForSecret); Client client = Client.builder() .clientId("clientId") .organizationIpaCode("ipa_code") @@ -51,8 +50,8 @@ void givenClientWhenMapThenGetClientDTO() { @Test void givenClientDTOWhenMapThenGetClient() { // Given - var chiper = dataCipherService.encrypt(uuidForSecret); - var clientDTO = ClientDTO.builder() + byte[] chiper = dataCipherService.encrypt(uuidForSecret); + ClientDTO clientDTO = ClientDTO.builder() .clientId("clientId") .organizationIpaCode("ipa_code") .clientSecret(dataCipherService.decrypt(chiper)) diff --git a/src/test/java/it/gov/pagopa/payhub/auth/service/user/registration/ExternalUserIdObfuscatorServiceTest.java b/src/test/java/it/gov/pagopa/payhub/auth/service/user/registration/ExternalUserIdObfuscatorServiceTest.java index 347519e5..465a89d5 100644 --- a/src/test/java/it/gov/pagopa/payhub/auth/service/user/registration/ExternalUserIdObfuscatorServiceTest.java +++ b/src/test/java/it/gov/pagopa/payhub/auth/service/user/registration/ExternalUserIdObfuscatorServiceTest.java @@ -15,7 +15,7 @@ class ExternalUserIdObfuscatorServiceTest { @Mock - private DataCipherService dataCipherService = new DataCipherService("PSW","PEPPER", new ObjectMapper()); + private DataCipherService dataCipherService; @InjectMocks private ExternalUserIdObfuscatorService service;