diff --git a/apps/onboarding-ms/src/main/docs/openapi.json b/apps/onboarding-ms/src/main/docs/openapi.json index 7047f045f..c38864323 100644 --- a/apps/onboarding-ms/src/main/docs/openapi.json +++ b/apps/onboarding-ms/src/main/docs/openapi.json @@ -1419,6 +1419,9 @@ "county" : { "type" : "string" }, + "istatCode" : { + "type" : "string" + }, "description" : { "type" : "string" }, diff --git a/apps/onboarding-ms/src/main/docs/openapi.yaml b/apps/onboarding-ms/src/main/docs/openapi.yaml index be41357e2..96d92c0bf 100644 --- a/apps/onboarding-ms/src/main/docs/openapi.yaml +++ b/apps/onboarding-ms/src/main/docs/openapi.yaml @@ -998,6 +998,8 @@ components: type: string county: type: string + istatCode: + type: string description: type: string digitalAddress: diff --git a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/entity/Institution.java b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/entity/Institution.java index 7fc08fb8d..a71252aff 100644 --- a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/entity/Institution.java +++ b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/entity/Institution.java @@ -22,6 +22,7 @@ public class Institution { private String city; private String country; private String county; + private String istatCode; private String description; private String digitalAddress; private String address; diff --git a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/entity/Onboarding.java b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/entity/Onboarding.java index 625bdf05d..77e88421b 100644 --- a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/entity/Onboarding.java +++ b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/entity/Onboarding.java @@ -40,9 +40,6 @@ public class Onboarding extends ReactivePanacheMongoEntityBase { private AdditionalInformations additionalInformations; private String reasonForReject; private Boolean isAggregator; - private String city; - private String country; - private String county; private String referenceOnboardingId; private String previousManagerId; diff --git a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceDefault.java b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceDefault.java index e9efdd78d..0bd790625 100644 --- a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceDefault.java +++ b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/OnboardingServiceDefault.java @@ -50,6 +50,8 @@ import org.openapi.quarkus.onboarding_functions_json.model.OrchestrationResponse; import org.openapi.quarkus.party_registry_proxy_json.api.AooApi; import org.openapi.quarkus.party_registry_proxy_json.api.UoApi; +import org.openapi.quarkus.party_registry_proxy_json.model.AOOResource; +import org.openapi.quarkus.party_registry_proxy_json.model.UOResource; import org.openapi.quarkus.user_registry_json.api.UserApi; import org.openapi.quarkus.user_registry_json.model.*; @@ -63,6 +65,7 @@ import java.util.function.Supplier; import java.util.stream.Collectors; +import static it.pagopa.selfcare.onboarding.common.InstitutionPaSubunitType.*; import static it.pagopa.selfcare.onboarding.common.ProductId.PROD_INTEROP; import static it.pagopa.selfcare.onboarding.constants.CustomError.*; import static it.pagopa.selfcare.onboarding.util.GenericError.*; @@ -203,11 +206,12 @@ private Uni fillUsersAndOnboarding(Onboarding onboarding, Li return getProductByOnboarding(onboarding) .onItem().transformToUni(product -> verifyAlreadyOnboardingForProductAndProductParent(onboarding.getInstitution(), product.getId(), product.getParentId()) .replaceWith(product)) - .onItem().transformToUni(product -> onboardingUtils.customValidationOnboardingData(onboarding, product) + .onItem().transformToUni(product -> getRegistryResource(onboarding) + .onItem().transformToUni(proxyResource -> onboardingUtils.customValidationOnboardingData(onboarding, product, proxyResource) + .onItem().transformToUni(ignored -> setIstatCode(onboarding, proxyResource))) /* if product has some test environments, request must also onboard them (for ex. prod-interop-coll) */ - .onItem().invoke(() -> onboarding.setTestEnvProductIds(product.getTestEnvProductIds())) + .onItem().invoke(() -> onboarding.setTestEnvProductIds(product.getTestEnvProductIds())).onItem().invoke(() -> onboarding.setTestEnvProductIds(product.getTestEnvProductIds())) .onItem().transformToUni(this::addParentDescriptionForAooOrUo) - //.onItem().transformToUni(this::addLocationData) .onItem().transformToUni(current -> persistOnboarding(onboarding, userRequests, product)) /* Update onboarding data with users and start orchestration */ .onItem().transformToUni(currentOnboarding -> persistAndStartOrchestrationOnboarding(currentOnboarding, @@ -243,17 +247,50 @@ private Uni fillUsersAndOnboarding(Onboarding onboarding, Li return getProductByOnboarding(onboarding) .onItem().transformToUni(product -> verifyAlreadyOnboardingForProductAndProductParent(onboarding.getInstitution(), product.getId(), product.getParentId()) .replaceWith(product)) - .onItem().transformToUni(product -> onboardingUtils.customValidationOnboardingData(onboarding, product) - /* if product has some test environments, request must also onboard them (for ex. prod-interop-coll) */ - .onItem().invoke(() -> onboarding.setTestEnvProductIds(product.getTestEnvProductIds())) - .onItem().transformToUni(this::addParentDescriptionForAooOrUo) - .onItem().transformToUni(this::setInstitutionTypeAndBillingData) - .onItem().transformToUni(current -> persistOnboarding(onboarding, userRequests, product)) - .onItem().call(onboardingPersisted -> Panache.withTransaction(() -> Token.persist(getToken(onboardingPersisted, product, contractImported)))) - /* Update onboarding data with users and start orchestration */ - .onItem().transformToUni(currentOnboarding -> persistAndStartOrchestrationOnboarding(currentOnboarding, - orchestrationApi.apiStartOnboardingOrchestrationGet(currentOnboarding.getId(), timeout))) - .onItem().transform(onboardingMapper::toResponse)); + .onItem().transformToUni(product -> getRegistryResource(onboarding) + .onItem().transformToUni(proxyResource -> onboardingUtils.customValidationOnboardingData(onboarding, product, proxyResource) + .onItem().transformToUni(ignored -> setIstatCode(onboarding, proxyResource))) + /* if product has some test environments, request must also onboard them (for ex. prod-interop-coll) */ + .onItem().invoke(() -> onboarding.setTestEnvProductIds(product.getTestEnvProductIds())) + .onItem().transformToUni(this::addParentDescriptionForAooOrUo) + .onItem().transformToUni(this::setInstitutionTypeAndBillingData) + .onItem().transformToUni(current -> persistOnboarding(onboarding, userRequests, product)) + .onItem().call(onboardingPersisted -> Panache.withTransaction(() -> Token.persist(getToken(onboardingPersisted, product, contractImported)))) + /* Update onboarding data with users and start orchestration */ + .onItem().transformToUni(currentOnboarding -> persistAndStartOrchestrationOnboarding(currentOnboarding, + orchestrationApi.apiStartOnboardingOrchestrationGet(currentOnboarding.getId(), timeout))) + .onItem().transform(onboardingMapper::toResponse)); + } + + private Uni getRegistryResource(Onboarding onboarding) { + + switch ((onboarding.getInstitution().getSubunitType() != null) ? onboarding.getInstitution().getSubunitType() : EC ) { + case AOO -> { + return aooApi.findByUnicodeUsingGET(onboarding.getInstitution().getSubunitCode(), null) + .onFailure(WebApplicationException.class).recoverWithUni(ex -> ((WebApplicationException) ex).getResponse().getStatus() == 404 + ? Uni.createFrom().failure(new ResourceNotFoundException(String.format(AOO_NOT_FOUND.getMessage(), onboarding.getInstitution().getSubunitCode()))) + : Uni.createFrom().failure(ex)) + .onItem().transformToUni(aooResource -> Uni.createFrom().item(OnboardingUtils.ProxyResource.builder() + .resource(aooResource) + .type(AOO) + .build())); + } + case UO -> { + return uoApi.findByUnicodeUsingGET1(onboarding.getInstitution().getSubunitCode(), null) + .onFailure(WebApplicationException.class).recoverWithUni(ex -> ((WebApplicationException) ex).getResponse().getStatus() == 404 + ? Uni.createFrom().failure(new ResourceNotFoundException(String.format(UO_NOT_FOUND.getMessage(), onboarding.getInstitution().getSubunitCode()))) + : Uni.createFrom().failure(ex)) + .onItem().transformToUni(uoResource -> Uni.createFrom().item(OnboardingUtils.ProxyResource.builder() + .resource(uoResource) + .type(UO) + .build())); + } + default -> { + return Uni.createFrom().item(OnboardingUtils.ProxyResource.builder() + .type(EC) + .build()); + } + } } private Uni persistOnboarding(Onboarding onboarding, List userRequests, Product product) { @@ -281,6 +318,22 @@ private Uni addParentDescriptionForAooOrUo(Onboarding onboarding) { return Uni.createFrom().item(onboarding); } + private Uni setIstatCode(Onboarding onboarding, OnboardingUtils.ProxyResource proxyResource) { + return switch (proxyResource.getType()) { + case AOO -> Uni.createFrom().item(() -> { + AOOResource resource = (AOOResource) proxyResource.getResource(); + onboarding.getInstitution().setIstatCode(resource.getCodiceComuneISTAT()); + return onboarding; + }); + case UO -> Uni.createFrom().item(() -> { + UOResource resource = (UOResource) proxyResource.getResource(); + onboarding.getInstitution().setIstatCode(resource.getCodiceComuneISTAT()); + return onboarding; + }); + default -> Uni.createFrom().item(onboarding); + }; + } + private Uni addParentDescriptionForUO(Onboarding onboarding) { return uoApi.findByUnicodeUsingGET1(onboarding.getInstitution().getSubunitCode(), null) .onItem().invoke(uoResource -> LOG.infof("Founded parent %s for UO institution with subunitCode %s", uoResource.getDenominazioneEnte(), onboarding.getInstitution().getSubunitCode())) @@ -315,11 +368,11 @@ private Uni addReferencedOnboardingId(Onboarding onboarding) { .invoke(previousOnboarding -> onboarding.setReferenceOnboardingId(previousOnboarding.getId())); return current.onItem().transformToUni(ignored -> onboardings.collect().first()).onItem() .invoke(lastOnboarding -> { - String previousManagerId = lastOnboarding.getUsers().stream() - .filter(user -> user.getRole().equals(PartyRole.MANAGER)) - .map(User::getId).findFirst().orElse(null); - onboarding.setPreviousManagerId(previousManagerId); - }).replaceWith(onboarding); + String previousManagerId = lastOnboarding.getUsers().stream() + .filter(user -> user.getRole().equals(PartyRole.MANAGER)) + .map(User::getId).findFirst().orElse(null); + onboarding.setPreviousManagerId(previousManagerId); + }).replaceWith(onboarding); } private Uni addLocationData(Onboarding onboarding) { @@ -1050,8 +1103,8 @@ public Uni updateOnboarding(String onboardingId, Onboarding onboarding) { return Onboarding.findById(onboardingId) .onItem().transform(Onboarding.class::cast) .onItem().transformToUni(onboardingGet -> Objects.isNull(onboardingGet) - ? Uni.createFrom().failure(new InvalidRequestException(String.format("Onboarding with id %s is not present!", onboardingId))) - : Uni.createFrom().item(onboardingGet)) + ? Uni.createFrom().failure(new InvalidRequestException(String.format("Onboarding with id %s is not present!", onboardingId))) + : Uni.createFrom().item(onboardingGet)) .onItem().transformToUni(id -> updateOnboardingValues(onboardingId, onboarding)); } @@ -1093,9 +1146,9 @@ public Uni checkManager(OnboardingUserRequest onboardingUserRequest) { } public Uni checkRecipientCode(String recipientCode, String originId) { - return onboardingUtils.getUoFromRecipientCode(recipientCode).onItem() - .transformToUni(uoResource -> - onboardingUtils.getValidationRecipientCodeError(originId, uoResource)); + return onboardingUtils.getUoFromRecipientCode(recipientCode).onItem() + .transformToUni(uoResource -> + onboardingUtils.getValidationRecipientCodeError(originId, uoResource)); } private static Uni updateOnboardingValues(String onboardingId, Onboarding onboarding) { diff --git a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/util/OnboardingUtils.java b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/util/OnboardingUtils.java index 675bc7ffb..424228dc8 100644 --- a/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/util/OnboardingUtils.java +++ b/apps/onboarding-ms/src/main/java/it/pagopa/selfcare/onboarding/service/util/OnboardingUtils.java @@ -13,15 +13,17 @@ import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import jakarta.ws.rs.WebApplicationException; +import lombok.Builder; +import lombok.Data; import org.eclipse.microprofile.rest.client.inject.RestClient; import org.openapi.quarkus.party_registry_proxy_json.api.AooApi; import org.openapi.quarkus.party_registry_proxy_json.api.UoApi; +import org.openapi.quarkus.party_registry_proxy_json.model.AOOResource; import org.openapi.quarkus.party_registry_proxy_json.model.UOResource; import java.util.Objects; -import static it.pagopa.selfcare.onboarding.common.InstitutionPaSubunitType.EC; -import static it.pagopa.selfcare.onboarding.common.InstitutionPaSubunitType.UO; +import static it.pagopa.selfcare.onboarding.common.InstitutionPaSubunitType.*; import static it.pagopa.selfcare.onboarding.constants.CustomError.*; @ApplicationScoped @@ -41,21 +43,21 @@ public class OnboardingUtils { private static final String PARENT_TAX_CODE_IS_INVALID = "The tax code of the parent entity of the request does not match the tax code of the parent entity retrieved by IPA"; private static final String TAX_CODE_INVOICING_IS_INVALID = "The tax code invoicing of the request does not match any tax code of institutions' hierarchy"; - public Uni customValidationOnboardingData(Onboarding onboarding, Product product) { - if (isUO(onboarding)) { - return uoApi.findByUnicodeUsingGET1(onboarding.getInstitution().getSubunitCode(), null) - .flatMap(uoResource -> checkParentTaxCode(onboarding, uoResource)) - .onItem().transformToUni(o -> checkTaxCodeInvoicing(onboarding, product)); - } - return checkRecipientCode(onboarding) - .replaceWith(additionalChecksForProduct(onboarding, product)); + public Uni customValidationOnboardingData(Onboarding onboarding, Product product, ProxyResource proxyResource) { + if (isUOWithSfe(onboarding)) { + return checkParentTaxCode(onboarding, ((UOResource) proxyResource.getResource()).getCodiceFiscaleEnte()) + .onItem().transformToUni(o -> checkTaxCodeInvoicing(onboarding, product)); + } else { + return checkRecipientCode(onboarding, proxyResource) + .replaceWith(additionalChecksForProduct(onboarding, product)); + } } - private Uni checkRecipientCode(Onboarding onboarding) { + private Uni checkRecipientCode(Onboarding onboarding, ProxyResource proxyResource) { if (isInvoiceablePA(onboarding)) { final String recipientCode = onboarding.getBilling().getRecipientCode(); return getUoFromRecipientCode(recipientCode) - .onItem().transformToUni(uoResource -> validationRecipientCode(onboarding, uoResource)) + .onItem().transformToUni(uoResource -> validationRecipientCode(onboarding, proxyResource, uoResource)) .onItem().transformToUni(customError -> { if (Objects.nonNull(customError)) { return Uni.createFrom().failure(new InvalidRequestException(customError.getMessage())); @@ -66,16 +68,14 @@ private Uni checkRecipientCode(Onboarding onboarding) { return Uni.createFrom().nullItem(); } - private Uni validationRecipientCode(Onboarding onboarding, UOResource uoResource) { + private Uni validationRecipientCode(Onboarding onboarding, ProxyResource proxyResource, UOResource uoResource) { switch ((onboarding.getInstitution().getSubunitType() != null) ? onboarding.getInstitution().getSubunitType() : EC ) { case AOO -> { - return aooApi.findByUnicodeUsingGET(onboarding.getInstitution().getSubunitCode(), null) - .onItem().transformToUni(aooResource -> getValidationRecipientCodeError(aooResource.getCodiceIpa(), uoResource)); + return getValidationRecipientCodeError(((AOOResource) proxyResource.getResource()).getCodiceIpa(), uoResource); } case UO -> { - return uoApi.findByUnicodeUsingGET1(onboarding.getInstitution().getSubunitCode(), null) - .onItem().transformToUni(innerUoResource -> getValidationRecipientCodeError(innerUoResource.getCodiceIpa(), uoResource)); + return getValidationRecipientCodeError(((UOResource) proxyResource.getResource()).getCodiceIpa(), uoResource); } default -> { return getValidationRecipientCodeError(onboarding.getInstitution().getOriginId(), uoResource); @@ -104,9 +104,9 @@ public Uni getValidationRecipientCodeError(String originIdEC, UORes return Uni.createFrom().nullItem(); } - private Uni checkParentTaxCode(Onboarding onboarding, UOResource uoResource) { + private Uni checkParentTaxCode(Onboarding onboarding, String childTaxCode) { /* if parent tax code is different from child tax code, throw an exception */ - if (!onboarding.getInstitution().getTaxCode().equals(uoResource.getCodiceFiscaleEnte())) { + if (!onboarding.getInstitution().getTaxCode().equals(childTaxCode)) { return Uni.createFrom().failure(new InvalidRequestException(PARENT_TAX_CODE_IS_INVALID)); } return Uni.createFrom().voidItem(); @@ -154,7 +154,7 @@ private Uni additionalChecksForProduct(Onboarding onboarding, Produc return Uni.createFrom().item(onboarding); } - private boolean isUO(Onboarding onboarding) { + private boolean isUOWithSfe(Onboarding onboarding) { return Objects.nonNull(onboarding.getInstitution().getSubunitCode()) && UO.equals(onboarding.getInstitution().getSubunitType()) && Objects.nonNull(onboarding.getBilling()) @@ -168,4 +168,11 @@ private boolean isInvoiceablePA(Onboarding onboarding) { && Objects.nonNull(onboarding.getBilling()) && Objects.nonNull(onboarding.getBilling().getRecipientCode()); } + + @Data + @Builder + public static class ProxyResource { + private InstitutionPaSubunitType type; + private T resource; + } } diff --git a/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/service/util/OnboardingUtilsTest.java b/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/service/util/OnboardingUtilsTest.java index 9f578b527..bb6a6a74b 100644 --- a/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/service/util/OnboardingUtilsTest.java +++ b/apps/onboarding-ms/src/test/java/it/pagopa/selfcare/onboarding/service/util/OnboardingUtilsTest.java @@ -58,8 +58,12 @@ void shouldOnboardingInstitutionWithAdditionalInfo(String type) { onboarding.setProductId(ProductId.PROD_PAGOPA.getValue()); onboarding.setAdditionalInformations(createSimpleAdditionalInformations(type)); + OnboardingUtils.ProxyResource proxyResource = OnboardingUtils.ProxyResource.builder() + .type(InstitutionPaSubunitType.EC) + .build(); + UniAssertSubscriber subscriber = onboardingUtils - .customValidationOnboardingData(onboarding, dummyProduct()) + .customValidationOnboardingData(onboarding, dummyProduct(), proxyResource) .subscribe() .withSubscriber(UniAssertSubscriber.create()); @@ -79,8 +83,12 @@ void shouldOnboardingInstitutionWithAdditionalInfoRequiredException() { onboarding.setProductId(ProductId.PROD_PAGOPA.getValue()); onboarding.setAdditionalInformations(createSimpleAdditionalInformations("other")); + OnboardingUtils.ProxyResource proxyResource = OnboardingUtils.ProxyResource.builder() + .type(InstitutionPaSubunitType.EC) + .build(); + UniAssertSubscriber subscriber = onboardingUtils - .customValidationOnboardingData(onboarding, dummyProduct()) + .customValidationOnboardingData(onboarding, dummyProduct(), proxyResource) .subscribe() .withSubscriber(UniAssertSubscriber.create()); @@ -99,8 +107,12 @@ void shouldOnboardingInstitutionWithOtherNoteRequiredException() { onboarding.setInstitution(institution); onboarding.setProductId(ProductId.PROD_PAGOPA.getValue()); + OnboardingUtils.ProxyResource proxyResource = OnboardingUtils.ProxyResource.builder() + .type(InstitutionPaSubunitType.EC) + .build(); + UniAssertSubscriber subscriber = onboardingUtils - .customValidationOnboardingData(onboarding, dummyProduct()) + .customValidationOnboardingData(onboarding, dummyProduct(), proxyResource) .subscribe() .withSubscriber(UniAssertSubscriber.create()); @@ -120,8 +132,12 @@ void shouldOnboardingInstitutionWithBillingRequiredException() { billing.setTaxCodeInvoicing("taxCodeInvoicing"); onboarding.setBilling(billing); + OnboardingUtils.ProxyResource proxyResource = OnboardingUtils.ProxyResource.builder() + .type(InstitutionPaSubunitType.EC) + .build(); + UniAssertSubscriber subscriber = onboardingUtils - .customValidationOnboardingData(onboarding, dummyProduct()) + .customValidationOnboardingData(onboarding, dummyProduct(), proxyResource) .subscribe() .withSubscriber(UniAssertSubscriber.create()); @@ -140,8 +156,12 @@ void shouldOnboardingInstitutionWithRecipientCodeRequiredException() { onboarding.setBilling(billing); onboarding.setProductId(ProductId.PROD_PAGOPA.getValue()); + OnboardingUtils.ProxyResource proxyResource = OnboardingUtils.ProxyResource.builder() + .type(InstitutionPaSubunitType.EC) + .build(); + UniAssertSubscriber subscriber = onboardingUtils - .customValidationOnboardingData(onboarding, dummyProduct()) + .customValidationOnboardingData(onboarding, dummyProduct(), proxyResource) .subscribe() .withSubscriber(UniAssertSubscriber.create()); @@ -166,11 +186,16 @@ void shouldOnboardingInstitutionWithParentTaxCodeException() { billing.setTaxCodeInvoicing("taxCodeInvoicing"); onboarding.setBilling(billing); + OnboardingUtils.ProxyResource proxyResource = OnboardingUtils.ProxyResource.builder() + .type(InstitutionPaSubunitType.UO) + .resource(uoResource) + .build(); + when(uoApi.findByUnicodeUsingGET1(any(), any())) .thenReturn(Uni.createFrom().item(uoResource)); UniAssertSubscriber subscriber = onboardingUtils - .customValidationOnboardingData(onboarding, dummyProduct()) + .customValidationOnboardingData(onboarding, dummyProduct(), proxyResource) .subscribe() .withSubscriber(UniAssertSubscriber.create()); @@ -209,8 +234,14 @@ void shouldOnboardingInstitutionWithTaxCodeInvoicingException() { when(uoApi.findAllUsingGET1(any(), any(), any())) .thenReturn(Uni.createFrom().item(uOsResource)); + OnboardingUtils.ProxyResource proxyResource = OnboardingUtils.ProxyResource.builder() + .type(InstitutionPaSubunitType.UO) + .resource(uoResource) + .build(); + + UniAssertSubscriber subscriber = onboardingUtils - .customValidationOnboardingData(onboarding, dummyProduct()) + .customValidationOnboardingData(onboarding, dummyProduct(), proxyResource) .subscribe() .withSubscriber(UniAssertSubscriber.create()); @@ -250,8 +281,13 @@ void checkRecipientCodeNoBilling() { AOOsResource uOsResource = new AOOsResource(); uOsResource.setItems(List.of(resource)); + OnboardingUtils.ProxyResource proxyResource = OnboardingUtils.ProxyResource.builder() + .type(InstitutionPaSubunitType.AOO) + .resource(resource) + .build(); + UniAssertSubscriber subscriber = onboardingUtils - .customValidationOnboardingData(onboarding, dummyProduct()) + .customValidationOnboardingData(onboarding, dummyProduct(), proxyResource) .subscribe() .withSubscriber(UniAssertSubscriber.create()); @@ -284,8 +320,13 @@ void checkRecipientCodeUONoBilling() { when(uoApi.findByUnicodeUsingGET1(any(), any())) .thenReturn(Uni.createFrom().item(uoResource)); + OnboardingUtils.ProxyResource proxyResource = OnboardingUtils.ProxyResource.builder() + .type(InstitutionPaSubunitType.UO) + .resource(uoResource) + .build(); + UniAssertSubscriber subscriber = onboardingUtils - .customValidationOnboardingData(onboarding, dummyProduct()) + .customValidationOnboardingData(onboarding, dummyProduct(), proxyResource) .subscribe() .withSubscriber(UniAssertSubscriber.create()); @@ -326,8 +367,13 @@ void checkRecipientCodeNoAssociation() { AOOsResource uOsResource = new AOOsResource(); uOsResource.setItems(List.of(aooResource)); + OnboardingUtils.ProxyResource proxyResource = OnboardingUtils.ProxyResource.builder() + .type(InstitutionPaSubunitType.AOO) + .resource(aooResource) + .build(); + UniAssertSubscriber subscriber = onboardingUtils - .customValidationOnboardingData(onboarding, dummyProduct()) + .customValidationOnboardingData(onboarding, dummyProduct(), proxyResource) .subscribe() .withSubscriber(UniAssertSubscriber.create()); @@ -360,8 +406,12 @@ void checkRecipientCodeSuccess() { UOsResource uOsResource = new UOsResource(); uOsResource.setItems(List.of(uoResource)); + OnboardingUtils.ProxyResource proxyResource = OnboardingUtils.ProxyResource.builder() + .type(InstitutionPaSubunitType.EC) + .build(); + UniAssertSubscriber subscriber = onboardingUtils - .customValidationOnboardingData(onboarding, dummyProduct()) + .customValidationOnboardingData(onboarding, dummyProduct(), proxyResource) .subscribe() .withSubscriber(UniAssertSubscriber.create());