Skip to content

Commit

Permalink
P4ADEV-791-P4PA-AUTH-API-censimento-client-id new refactoring accordi…
Browse files Browse the repository at this point in the history
…ng to requested changes
  • Loading branch information
macacia committed Oct 1, 2024
1 parent 2cae976 commit 97c6590
Show file tree
Hide file tree
Showing 14 changed files with 86 additions and 34 deletions.
2 changes: 1 addition & 1 deletion helm/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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: []
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ public ResponseEntity<UserDTO> createUser(UserDTO user) {

@Override
public ResponseEntity<ClientDTO> 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));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,4 @@

public interface ClientRepository extends MongoRepository<Client, String> {

Client insert(Client client);
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,20 +35,18 @@ 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;
this.operatorsRepository = operatorsRepository;
this.operatorDTOMapper = operatorDTOMapper;
this.userDTOMapper = userDTOMapper;
this.operator2UserInfoMapper = operator2UserInfoMapper;
this.clientMapper = clientMapper;
}

@Override
Expand Down Expand Up @@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -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);
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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}"
Original file line number Diff line number Diff line change
Expand Up @@ -52,17 +52,14 @@ class AuthzServiceTest {
@Mock
private UserDTOMapper userDTOMapper;

@Mock
private ClientMapper clientMapper;

@Mock
private Operator2UserInfoMapper operator2UserInfoMapper;

private AuthzService service;

@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
Expand Down Expand Up @@ -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);

Expand Down
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -18,7 +17,7 @@
class ClientMapperTest {

@Mock
private DataCipherService dataCipherService = new DataCipherService("PSW","PEPPER", new ObjectMapper());
private DataCipherService dataCipherService;

@InjectMocks
private ClientMapper service;
Expand All @@ -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")
Expand All @@ -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))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
class ExternalUserIdObfuscatorServiceTest {

@Mock
private DataCipherService dataCipherService = new DataCipherService("PSW","PEPPER", new ObjectMapper());
private DataCipherService dataCipherService;

@InjectMocks
private ExternalUserIdObfuscatorService service;
Expand Down

0 comments on commit 97c6590

Please sign in to comment.