Skip to content

Commit 07b65e0

Browse files
Fix workflowType for GSP IPA (#954)
1 parent 9c42dda commit 07b65e0

File tree

3 files changed

+41
-57
lines changed

3 files changed

+41
-57
lines changed

apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/impl/OnboardingServiceDefault.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777

7878
import static it.pagopa.selfcare.onboarding.common.OnboardingStatus.COMPLETED;
7979
import static it.pagopa.selfcare.onboarding.common.OnboardingStatus.PENDING;
80+
import static it.pagopa.selfcare.onboarding.common.Origin.IPA;
8081
import static it.pagopa.selfcare.onboarding.common.ProductId.*;
8182
import static it.pagopa.selfcare.onboarding.common.WorkflowType.USERS;
8283
import static it.pagopa.selfcare.onboarding.constants.CustomError.*;
@@ -107,6 +108,7 @@ public class OnboardingServiceDefault implements OnboardingService {
107108
"User is not manager of the institution on the registry";
108109
private static final String INTEGRATION_PROFILE = "integrationProfile";
109110
private static final String TIMEOUT_ORCHESTRATION_RESPONSE = "70";
111+
private static final String ONBOARDING_ID = "onboardingId";
110112
private static final Pattern INDIVIDUAL_CF_PATTERN =
111113
Pattern.compile("^[A-Z]{6}\\d{2}[A-Z]\\d{2}[A-Z]\\d{3}[A-Z]$");
112114

@@ -787,7 +789,7 @@ private WorkflowType getWorkflowType(Onboarding onboarding) {
787789
}
788790

789791
if (InstitutionType.PA.equals(institutionType)
790-
|| verifyInstitutionOnInterop(institutionType, onboarding.getProductId())
792+
|| verifyInstitutionOnGSP(institutionType, onboarding.getInstitution().getOrigin().getValue())
791793
|| InstitutionType.SA.equals(institutionType)
792794
|| InstitutionType.AS.equals(institutionType)
793795
|| Objects.nonNull(product.getParentId())
@@ -808,10 +810,10 @@ private WorkflowType getWorkflowType(Onboarding onboarding) {
808810
return WorkflowType.FOR_APPROVE;
809811
}
810812

811-
private boolean verifyInstitutionOnInterop(InstitutionType institutionType, String productId) {
813+
private boolean verifyInstitutionOnGSP(InstitutionType institutionType, String origin) {
812814
Set<InstitutionType> allowedInstitutionType = Set.of(InstitutionType.GSP, InstitutionType.SCEC);
813815
return Objects.nonNull(institutionType) && allowedInstitutionType.contains(institutionType)
814-
&& PROD_INTEROP.getValue().equalsIgnoreCase(productId);
816+
&& IPA.getValue().equals(origin);
815817
}
816818

817819
private Uni<Product> product(String productId) {
@@ -1514,7 +1516,7 @@ private Uni<String> updateTokenWithFilePath(String filepath, Token token) {
15141516

15151517
private Uni<Void> updateTokenUpdatedAt(String onboardingId) {
15161518
return Token.update("updatedAt", LocalDateTime.now())
1517-
.where("onboardingId", onboardingId)
1519+
.where(ONBOARDING_ID, onboardingId)
15181520
.onItem()
15191521
.transform(ignore -> null);
15201522
}
@@ -1598,13 +1600,13 @@ private Uni<String> retrieveContractDigest(String onboardingId) {
15981600
}
15991601

16001602
private Uni<Token> retrieveToken(String onboardingId) {
1601-
return Token.list("onboardingId", onboardingId)
1603+
return Token.list(ONBOARDING_ID, onboardingId)
16021604
.map(tokens -> tokens.stream().findFirst().map(Token.class::cast).orElseThrow());
16031605
}
16041606

16051607
Uni<Token> retrieveToken(Onboarding onboarding, FormItem formItem) {
16061608
String onboardingId = onboarding.getId();
1607-
return Token.list("onboardingId", onboardingId)
1609+
return Token.list(ONBOARDING_ID, onboardingId)
16081610
.flatMap(tokens -> {
16091611
if (tokens.isEmpty()) {
16101612
return getProductByOnboarding(onboarding)

apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceDefaultTest.java

Lines changed: 32 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -243,10 +243,9 @@ class OnboardingServiceDefaultTest {
243243
@Test
244244
@RunOnVertxContext
245245
void onboardingPa_throwExceptionIfProductThrowException(UniAsserter asserter) {
246-
Onboarding onboardingRequest = new Onboarding();
246+
Onboarding onboardingRequest = createDummyOnboarding();
247247
List<UserRequest> users = List.of(manager);
248248
onboardingRequest.setProductId("productId");
249-
onboardingRequest.setInstitution(new Institution());
250249

251250
Product productResource = new Product();
252251
asserter.execute(() -> when(productService.getProductIsValid(onboardingRequest.getProductId()))
@@ -261,10 +260,9 @@ void onboardingPa_throwExceptionIfProductThrowException(UniAsserter asserter) {
261260
@Test
262261
@RunOnVertxContext
263262
void onboarding_throwExceptionIfProductIsNotValid(UniAsserter asserter) {
264-
Onboarding onboardingRequest = new Onboarding();
263+
Onboarding onboardingRequest = createDummyOnboarding();
265264
List<UserRequest> users = List.of(manager);
266265
onboardingRequest.setProductId("productId");
267-
onboardingRequest.setInstitution(new Institution());
268266

269267
Product productResource = new Product();
270268
asserter.execute(() -> when(productService.getProductIsValid(onboardingRequest.getProductId()))
@@ -458,12 +456,10 @@ void onboarding_throwExceptionIfProductIsNotDelegable(UniAsserter asserter) {
458456
@Test
459457
@RunOnVertxContext
460458
void onboarding_throwExceptionIfProductRoleIsNotValid(UniAsserter asserter) {
461-
Onboarding onboardingRequest = new Onboarding();
459+
Onboarding onboardingRequest = createDummyOnboarding();
462460
List<UserRequest> users = List.of(manager);
463461
onboardingRequest.setProductId("prod-pn");
464-
Institution institutionBaseRequest = new Institution();
465-
institutionBaseRequest.setInstitutionType(InstitutionType.PG);
466-
onboardingRequest.setInstitution(institutionBaseRequest);
462+
onboardingRequest.getInstitution().setInstitutionType(InstitutionType.PG);
467463

468464
Product productResource = new Product();
469465
productResource.setRoleMappings(new HashMap<>());
@@ -482,10 +478,9 @@ void onboarding_throwExceptionIfProductRoleIsNotValid(UniAsserter asserter) {
482478
@Test
483479
@RunOnVertxContext
484480
void onboardingPa_throwExceptionIfProductParentRoleIsNotValid(UniAsserter asserter) {
485-
Onboarding onboardingRequest = new Onboarding();
481+
Onboarding onboardingRequest = createDummyOnboarding();
486482
List<UserRequest> users = List.of(manager);
487483
onboardingRequest.setProductId("productId");
488-
onboardingRequest.setInstitution(new Institution());
489484

490485
Product productResource = new Product();
491486
Product productParent = new Product();
@@ -1063,33 +1058,6 @@ void onboarding_SELC_WorkflowType_CONFIRMATION(UniAsserter asserter) {
10631058
asserter.assertThat(() -> onboardingService.onboardingCompletion(request, users), Assertions::assertNotNull);
10641059
}
10651060

1066-
@Test
1067-
@RunOnVertxContext
1068-
void onboarding_SELC_Forbidden_WorkflowType(UniAsserter asserter) {
1069-
Onboarding request = new Onboarding();
1070-
List<UserRequest> users = List.of(manager);
1071-
request.setProductId(PROD_INTEROP.getValue());
1072-
Institution institutionBaseRequest = new Institution();
1073-
institutionBaseRequest.setDescription("name");
1074-
institutionBaseRequest.setDigitalAddress("pec");
1075-
institutionBaseRequest.setInstitutionType(InstitutionType.GSP);
1076-
institutionBaseRequest.setTaxCode("taxCode");
1077-
request.setInstitution(institutionBaseRequest);
1078-
mockPersistOnboarding(asserter);
1079-
1080-
asserter.execute(() -> when(userRegistryApi.updateUsingPATCH(any(), any()))
1081-
.thenReturn(Uni.createFrom().item(Response.noContent().build())));
1082-
1083-
1084-
mockSimpleSearchPOSTAndPersist(asserter);
1085-
mockSimpleProductValidAssert(request.getProductId(), false, asserter, false, true);
1086-
mockVerifyOnboardingNotFound();
1087-
mockVerifyAllowedProductList(request.getProductId(), asserter, true);
1088-
1089-
// onboarding will set the workflowType to CONTRACT_REGISTRATION when institutionType is GSP and product is interop, which is not allowed for GSP with origin SELC
1090-
asserter.assertFailedWith(() -> onboardingService.onboarding(request, users, null), InvalidRequestException.class);
1091-
}
1092-
10931061
/*@Test
10941062
@RunOnVertxContext
10951063
void onboarding_PRV_Bad_Request(UniAsserter asserter) {
@@ -1408,12 +1376,11 @@ Product createDummyProduct(String productId, boolean hasParent,
14081376
@Test
14091377
@RunOnVertxContext
14101378
void onboardingPsp_whenUserFoundedAndWillNotUpdate(UniAsserter asserter) {
1411-
Onboarding onboardingRequest = new Onboarding();
1379+
Onboarding onboardingRequest = createDummyOnboarding();
14121380
List<UserRequest> users = List.of(manager);
14131381
onboardingRequest.setProductId("productId");
1414-
Institution institutionPspRequest = new Institution();
1415-
institutionPspRequest.setInstitutionType(PSP);
1416-
onboardingRequest.setInstitution(institutionPspRequest);
1382+
onboardingRequest.getInstitution().setOrigin(Origin.SELC);
1383+
onboardingRequest.getInstitution().setInstitutionType(PSP);
14171384

14181385
mockPersistOnboarding(asserter);
14191386
mockSimpleSearchPOSTAndPersist(asserter);
@@ -1618,12 +1585,13 @@ void onboarding_whenUserFoundAndWillNotUpdate(UniAsserter asserter) {
16181585
.role(PartyRole.MANAGER)
16191586
.build();
16201587

1621-
Onboarding request = new Onboarding();
1588+
Onboarding request = createDummyOnboarding();
16221589
List<UserRequest> users = List.of(wrongManager);
16231590
request.setProductId(PROD_PAGOPA.getValue());
1624-
Institution institutionPspRequest = new Institution();
1625-
institutionPspRequest.setInstitutionType(InstitutionType.GSP);
1626-
request.setInstitution(institutionPspRequest);
1591+
request.getInstitution().setInstitutionType(InstitutionType.GSP);
1592+
request.getInstitution().setOrigin(Origin.SELC);
1593+
1594+
16271595

16281596
mockSimpleProductValidAssert(request.getProductId(), false, asserter, false, true);
16291597
mockVerifyOnboardingNotFound();
@@ -1659,12 +1627,11 @@ void onboarding_whenUserFoundedAndWillUpdateMailUuid(UniAsserter asserter) {
16591627
.email("example@live.it")
16601628
.build();
16611629

1662-
Onboarding request = new Onboarding();
1630+
Onboarding request = createDummyOnboarding();
16631631
List<UserRequest> users = List.of(newManager);
16641632
request.setProductId(PROD_IO.getValue());
1665-
Institution institutionPspRequest = new Institution();
1666-
institutionPspRequest.setInstitutionType(InstitutionType.GSP);
1667-
request.setInstitution(institutionPspRequest);
1633+
request.getInstitution().setInstitutionType(InstitutionType.GSP);
1634+
16681635

16691636
mockSimpleProductValidAssert(request.getProductId(), false, asserter, false, true);
16701637
mockVerifyOnboardingNotFound();
@@ -1703,6 +1670,7 @@ void onboarding_whenUserNotFoundedAndWillSave(UniAsserter asserter) {
17031670
List<UserRequest> users = List.of(manager);
17041671
request.setProductId("productId");
17051672
request.setInstitution(dummyInstitution());
1673+
request.getInstitution().setOrigin(Origin.SELC);
17061674
final UUID createUserId = UUID.randomUUID();
17071675

17081676
mockPersistOnboarding(asserter);
@@ -1746,9 +1714,10 @@ void onboarding_whenUserNotFoundedAndWillSave(UniAsserter asserter) {
17461714
@Test
17471715
@RunOnVertxContext
17481716
void onboarding_shouldThrowExceptionIfUserRegistryFails(UniAsserter asserter) {
1749-
Onboarding onboardingDefaultRequest = new Onboarding();
1717+
Onboarding onboardingDefaultRequest = createDummyOnboarding();
17501718
Institution institution = new Institution();
17511719
institution.setInstitutionType(InstitutionType.GSP);
1720+
institution.setOrigin(Origin.SELC);
17521721
onboardingDefaultRequest.setInstitution(institution);
17531722
onboardingDefaultRequest.setProductId(PROD_PAGOPA.getValue());
17541723
List<UserRequest> users = List.of(manager);
@@ -2096,6 +2065,7 @@ private Onboarding createDummyOnboarding() {
20962065
Institution institution = new Institution();
20972066
institution.setTaxCode("taxCode");
20982067
institution.setSubunitCode("subunitCode");
2068+
institution.setOrigin(Origin.IPA);
20992069
onboarding.setInstitution(institution);
21002070

21012071
User user = new User();
@@ -4424,6 +4394,9 @@ void onboarding_whenValidIndividualCFWithAllowIndividualOnboarding_shouldSucceed
44244394
List<UserRequest> users = List.of(manager);
44254395
onboardingRequest.setProductId("productId");
44264396
Institution institution = dummyInstitution();
4397+
institution.setOrigin(Origin.IVASS);
4398+
institution.setDigitalAddress(DIGITAL_ADDRESS_FIELD);
4399+
institution.setDescription(DESCRIPTION_FIELD);
44274400
institution.setTaxCode(individualCF);
44284401
onboardingRequest.setInstitution(institution);
44294402

@@ -4459,6 +4432,9 @@ void onboarding_whenValidIndividualCFWithDisallowIndividualOnboarding_shouldThro
44594432
List<UserRequest> users = List.of(manager);
44604433
onboardingRequest.setProductId("productId");
44614434
Institution institution = dummyInstitution();
4435+
institution.setOrigin(Origin.IVASS);
4436+
institution.setDigitalAddress(DIGITAL_ADDRESS_FIELD);
4437+
institution.setDescription(DESCRIPTION_FIELD);
44624438
institution.setTaxCode(individualCF);
44634439
institution.setOriginId("originId");
44644440
onboardingRequest.setInstitution(institution);
@@ -4489,6 +4465,9 @@ void onboarding_whenCompanyTaxCodeWithAllowCompanyOnboarding_shouldSucceed(UniAs
44894465
List<UserRequest> users = List.of(manager);
44904466
onboardingRequest.setProductId("productId");
44914467
Institution institution = dummyInstitution();
4468+
institution.setOrigin(Origin.IVASS);
4469+
institution.setDigitalAddress(DIGITAL_ADDRESS_FIELD);
4470+
institution.setDescription(DESCRIPTION_FIELD);
44924471
institution.setTaxCode(companyTaxCode);
44934472
onboardingRequest.setInstitution(institution);
44944473

@@ -4525,6 +4504,9 @@ void onboarding_whenCompanyTaxCodeWithDisallowCompanyOnboarding_shouldThrowInval
45254504
List<UserRequest> users = List.of(manager);
45264505
onboardingRequest.setProductId("productId");
45274506
Institution institution = dummyInstitution();
4507+
institution.setOrigin(Origin.IVASS);
4508+
institution.setDigitalAddress(DIGITAL_ADDRESS_FIELD);
4509+
institution.setDescription(DESCRIPTION_FIELD);
45284510
institution.setTaxCode(companyTaxCode);
45294511
onboardingRequest.setInstitution(institution);
45304512

apps/onboarding-ms/src/test/resources/integration-data/selc/invalid_gsp_selc_request.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
}
1818
],
1919
"institution": {
20-
"institutionType": "GSP",
20+
"institutionType": "PA",
2121
"taxCode": "00001910111",
2222
"origin": "SELC",
2323
"originId": "00001910111",

0 commit comments

Comments
 (0)