Skip to content

Commit

Permalink
Update unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
pierpaolo.didato@emeal.nttdata.com authored and pierpaolo.didato@emeal.nttdata.com committed Jul 18, 2024
1 parent ed9b38c commit a7f9368
Show file tree
Hide file tree
Showing 9 changed files with 51 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import org.bouncycastle.asn1.pkcs.RSAPrivateKey;
import org.eclipse.microprofile.rest.client.inject.RestClient;
import org.openapi.quarkus.user_registry_json.api.UserApi;
import org.openapi.quarkus.user_registry_json.model.UserResource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -23,11 +26,16 @@
import java.util.Date;
import java.util.UUID;

import static it.pagopa.selfcare.onboarding.service.OnboardingService.USERS_FIELD_LIST;

@ApplicationScoped
public class TokenServiceDefault implements TokenService {

@Inject
TokenConfig tokenConfig;
@RestClient
@Inject
UserApi userRegistryApi;

private static final String PRIVATE_KEY_HEADER_TEMPLATE = "-----BEGIN %s-----";
private static final String PRIVATE_KEY_FOOTER_TEMPLATE = "-----END %s-----";
Expand All @@ -42,11 +50,15 @@ public String createJwt(String userId) {
logger.error("Impossible to get private key. Error: {}", e.getMessage(), e);
return null;
}
UserResource userResource = userRegistryApi.findByIdUsingGET(USERS_FIELD_LIST, userId);
return Jwts.builder()
.setId(UUID.randomUUID().toString())
.setIssuedAt(new Date())
.setIssuer(tokenConfig.issuer())
.setExpiration(Date.from(new Date().toInstant().plus(Duration.parse(tokenConfig.duration()))))
.claim("family_name", userResource.getFamilyName().getValue())
.claim("fiscal_number", userResource.getFiscalCode())
.claim("name", userResource.getName().getValue())
.claim("uid", userId)
.signWith(SignatureAlgorithm.RS256, privateKey)
.setHeaderParam(JwsHeader.KEY_ID, tokenConfig.kid())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ onboarding-functions.retry.backoff-coefficient = ${BACKOFF_COEFFICIENT:5}
## JWT
onboarding-functions.jwt.token.signing-key = ${JWT_TOKEN_EXCHANGE_PRIVATE_KEY:private-key}
onboarding-functions.jwt.token.kid = ${JWT_TOKEN_EXCHANGE_KID:kid}
onboarding-functions.jwt.token.issuer = ${JWT_TOKEN_EXCHANGE_ISSUER:issuer}
onboarding-functions.jwt.token.duration = ${JWT_TOKEN_EXCHANGE_DURATION:PT60S}
onboarding-functions.jwt.token.issuer = ${JWT_TOKEN_EXCHANGE_ISSUER:SPID}
onboarding-functions.jwt.token.duration = ${JWT_TOKEN_EXCHANGE_DURATION:PT6000S}

## PURGE FUNCTION ##
# configuration for the start and end dates of the two functions
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
package it.pagopa.selfcare.onboarding.service;

import io.quarkus.test.InjectMock;
import io.quarkus.test.junit.QuarkusTest;
import io.quarkus.test.junit.QuarkusTestProfile;
import io.quarkus.test.junit.TestProfile;
import jakarta.inject.Inject;
import org.eclipse.microprofile.rest.client.inject.RestClient;
import org.junit.jupiter.api.Test;
import org.openapi.quarkus.user_registry_json.api.UserApi;
import org.openapi.quarkus.user_registry_json.model.CertifiableFieldResourceOfstring;
import org.openapi.quarkus.user_registry_json.model.UserResource;

import java.io.BufferedReader;
import java.io.InputStream;
Expand All @@ -15,6 +20,8 @@
import java.util.stream.Collectors;

import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;

@QuarkusTest
@TestProfile(TokenServiceDefaultTest.TokenProfile.class)
Expand All @@ -23,6 +30,10 @@ class TokenServiceDefaultTest {
@Inject
TokenServiceDefault tokenService;

@RestClient
@InjectMock
UserApi userRegistryApi;

public static class TokenProfile implements QuarkusTestProfile {
@Override
public Map<String, String> getConfigOverrides() {
Expand All @@ -31,14 +42,22 @@ public Map<String, String> getConfigOverrides() {
new InputStreamReader(is, StandardCharsets.UTF_8)).lines()
.collect(Collectors.joining("\n"));
return Map.of("onboarding-functions.jwt.token.signing-key", privateKey,
"onboarding-functions.jwt.token.issuer", "https://dev.selfcare.pagopa.it"
"onboarding-functions.jwt.token.issuer", "SPID",
"onboarding-functions.jwt.token.kid", "kid"
);
}
}

@Test
void createJwt() {
final String userId = "userId";
UserResource userResource = new UserResource();
userResource.setFiscalCode("fiscalCode");
CertifiableFieldResourceOfstring certifiedField = new CertifiableFieldResourceOfstring();
certifiedField.setValue("name");
userResource.setName(certifiedField);
userResource.setFamilyName(certifiedField);
when(userRegistryApi.findByIdUsingGET(any(), any())).thenReturn(userResource);
String jwt = tokenService.createJwt(userId);
assertTrue(Objects.nonNull(jwt));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ app_settings = {
"SAP_ALLOWED_INSTITUTION_TYPE" = "PA,GSP,SA,AS,SCP"
"SAP_ALLOWED_ORIGINS" = "IPA,SELC"
"MINUTES_THRESHOLD_FOR_UPDATE_NOTIFICATION" = "5"
"JWT_TOKEN_EXCHANGE_ISSUER" = "https://pnpg.dev.selfcare.pagopa.it"
"JWT_TOKEN_EXCHANGE_PRIVATE_KEY" = "@Microsoft.KeyVault(SecretUri=https://selc-d-pnpg-kv.vault.azure.net/secrets/jwt-exchange-private-key/)"
"JWT_TOKEN_EXCHANGE_KID" = "@Microsoft.KeyVault(SecretUri=https://selc-d-pnpg-kv.vault.azure.net/secrets/jwt-exchange-kid/)"
"JWT_TOKEN_EXCHANGE_ISSUER" = "SPID"
"JWT_TOKEN_EXCHANGE_PRIVATE_KEY" = "@Microsoft.KeyVault(SecretUri=https://selc-d-pnpg-kv.vault.azure.net/secrets/jwt-private-key/)"
"JWT_TOKEN_EXCHANGE_KID" = "@Microsoft.KeyVault(SecretUri=https://selc-d-pnpg-kv.vault.azure.net/secrets/jwt-kid/)"
}
4 changes: 2 additions & 2 deletions infra/functions/onboarding-functions/env/dev/terraform.tfvars
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,6 @@ app_settings = {
"FD_TOKEN_CLIENT_ID" = "@Microsoft.KeyVault(SecretUri=https://selc-d-kv.vault.azure.net/secrets/prod-fd-client-id/)"
"FD_TOKEN_CLIENT_SECRET" = "@Microsoft.KeyVault(SecretUri=https://selc-d-kv.vault.azure.net/secrets/prod-fd-client-secret/)"
"JWT_TOKEN_EXCHANGE_ISSUER" = "https://dev.selfcare.pagopa.it"
"JWT_TOKEN_EXCHANGE_PRIVATE_KEY" = "@Microsoft.KeyVault(SecretUri=https://selc-d-kv.vault.azure.net/secrets/jwt-exchange-private-key/)"
"JWT_TOKEN_EXCHANGE_KID" = "@Microsoft.KeyVault(SecretUri=https://selc-d-kv.vault.azure.net/secrets/jwt-exchange-kid/)"
"JWT_TOKEN_EXCHANGE_PRIVATE_KEY" = "@Microsoft.KeyVault(SecretUri=https://selc-d-kv.vault.azure.net/secrets/jwt-private-key/)"
"JWT_TOKEN_EXCHANGE_KID" = "@Microsoft.KeyVault(SecretUri=https://selc-d-kv.vault.azure.net/secrets/jwt-kid/)"
}
Original file line number Diff line number Diff line change
Expand Up @@ -106,9 +106,9 @@ app_settings = {
"MAIL_ONBOARDING_URL" = "https://imprese.notifichedigitali.it/onboarding/",
"USER_MS_SEND_MAIL" = "false",
"FORCE_INSTITUTION_PERSIST" = "true",
"JWT_TOKEN_EXCHANGE_ISSUER" = "https://pnpg.selfcare.pagopa.it"
"JWT_TOKEN_EXCHANGE_PRIVATE_KEY" = "@Microsoft.KeyVault(SecretUri=https://selc-p-pnpg-kv.vault.azure.net/secrets/jwt-exchange-private-key/)"
"JWT_TOKEN_EXCHANGE_KID" = "@Microsoft.KeyVault(SecretUri=https://selc-p-pnpg-kv.vault.azure.net/secrets/jwt-exchange-kid/)"
"JWT_TOKEN_EXCHANGE_ISSUER" = "SPID"
"JWT_TOKEN_EXCHANGE_PRIVATE_KEY" = "@Microsoft.KeyVault(SecretUri=https://selc-p-pnpg-kv.vault.azure.net/secrets/jwt-private-key/)"
"JWT_TOKEN_EXCHANGE_KID" = "@Microsoft.KeyVault(SecretUri=https://selc-p-pnpg-kv.vault.azure.net/secrets/jwt-kid/)"


}
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,8 @@ app_settings = {
"ARUBA_SIGN_SERVICE_BASE_URL" = "https://asbr-pagopa.arubapec.it/ArubaSignService/ArubaSignService"
"ARUBA_SIGN_SERVICE_REQUEST_TIMEOUT_MS" = "60000"
"ARUBA_SIGN_SERVICE_CONNECT_TIMEOUT_MS" = "60000"
"JWT_TOKEN_EXCHANGE_ISSUER" = "https://selfcare.pagopa.it"
"JWT_TOKEN_EXCHANGE_PRIVATE_KEY" = "@Microsoft.KeyVault(SecretUri=https://selc-p-kv.vault.azure.net/secrets/jwt-exchange-private-key/)"
"JWT_TOKEN_EXCHANGE_KID" = "@Microsoft.KeyVault(SecretUri=https://selc-p-kv.vault.azure.net/secrets/jwt-exchange-kid/)"
"JWT_TOKEN_EXCHANGE_ISSUER" = "SPID"
"JWT_TOKEN_EXCHANGE_PRIVATE_KEY" = "@Microsoft.KeyVault(SecretUri=https://selc-p-kv.vault.azure.net/secrets/jwt-private-key/)"
"JWT_TOKEN_EXCHANGE_KID" = "@Microsoft.KeyVault(SecretUri=https://selc-p-kv.vault.azure.net/secrets/jwt-kid/)"

}
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,9 @@ app_settings = {
"MAIL_ONBOARDING_URL" = "https://imprese.uat.notifichedigitali.it/onboarding/",
"USER_MS_SEND_MAIL" = "false",
"FORCE_INSTITUTION_PERSIST" = "true",
"JWT_TOKEN_EXCHANGE_ISSUER" = "https://pnpg.uat.selfcare.pagopa.it"
"JWT_TOKEN_EXCHANGE_PRIVATE_KEY" = "@Microsoft.KeyVault(SecretUri=https://selc-u-pnpg-kv.vault.azure.net/secrets/jwt-exchange-private-key/)"
"JWT_TOKEN_EXCHANGE_KID" = "@Microsoft.KeyVault(SecretUri=https://selc-u-pnpg-kv.vault.azure.net/secrets/jwt-exchange-kid/)"
"JWT_TOKEN_EXCHANGE_ISSUER" = "SPID"
"JWT_TOKEN_EXCHANGE_PRIVATE_KEY" = "@Microsoft.KeyVault(SecretUri=https://selc-u-pnpg-kv.vault.azure.net/secrets/jwt-private-key/)"
"JWT_TOKEN_EXCHANGE_KID" = "@Microsoft.KeyVault(SecretUri=https://selc-u-pnpg-kv.vault.azure.net/secrets/jwt-kid/)"


}
6 changes: 3 additions & 3 deletions infra/functions/onboarding-functions/env/uat/terraform.tfvars
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,8 @@ app_settings = {
"ARUBA_SIGN_SERVICE_REQUEST_TIMEOUT_MS" = "60000"
"ARUBA_SIGN_SERVICE_CONNECT_TIMEOUT_MS" = "60000"

"JWT_TOKEN_EXCHANGE_ISSUER" = "https://uat.selfcare.pagopa.it"
"JWT_TOKEN_EXCHANGE_PRIVATE_KEY" = "@Microsoft.KeyVault(SecretUri=https://selc-u-kv.vault.azure.net/secrets/jwt-exchange-private-key/)"
"JWT_TOKEN_EXCHANGE_KID" = "@Microsoft.KeyVault(SecretUri=https://selc-u-kv.vault.azure.net/secrets/jwt-exchange-kid/)"
"JWT_TOKEN_EXCHANGE_ISSUER" = "SPID"
"JWT_TOKEN_EXCHANGE_PRIVATE_KEY" = "@Microsoft.KeyVault(SecretUri=https://selc-u-kv.vault.azure.net/secrets/jwt-private-key/)"
"JWT_TOKEN_EXCHANGE_KID" = "@Microsoft.KeyVault(SecretUri=https://selc-u-kv.vault.azure.net/secrets/jwt-kid/)"

}

0 comments on commit a7f9368

Please sign in to comment.