Skip to content

Commit

Permalink
Merge branch 'main' into feature/SELC-5798
Browse files Browse the repository at this point in the history
  • Loading branch information
giulia-tremolada committed Oct 21, 2024
2 parents 891b97d + e9c0e50 commit 3ab58c8
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.microsoft.durabletask.TaskOptions;
import com.microsoft.durabletask.TaskOrchestrationContext;
import it.pagopa.selfcare.onboarding.common.OnboardingStatus;
import it.pagopa.selfcare.onboarding.common.WorkflowType;
import it.pagopa.selfcare.onboarding.dto.OnboardingAggregateOrchestratorInput;
import it.pagopa.selfcare.onboarding.entity.AggregateInstitution;
import it.pagopa.selfcare.onboarding.entity.Onboarding;
Expand All @@ -19,13 +20,19 @@
import static it.pagopa.selfcare.onboarding.common.OnboardingStatus.COMPLETED;
import static it.pagopa.selfcare.onboarding.functions.utils.ActivityName.*;
import static it.pagopa.selfcare.onboarding.utils.Utils.*;

public interface WorkflowExecutor {

Optional<OnboardingStatus> executeRequestState(TaskOrchestrationContext ctx, OnboardingWorkflow onboardingWorkflow);

Optional<OnboardingStatus> executeToBeValidatedState(TaskOrchestrationContext ctx, OnboardingWorkflow onboardingWorkflow);

Optional<OnboardingStatus> executePendingState(TaskOrchestrationContext ctx, OnboardingWorkflow onboardingWorkflow);

OnboardingWorkflow createOnboardingWorkflow(Onboarding onboarding);

ObjectMapper objectMapper();

TaskOptions optionsRetry();

default Optional<OnboardingStatus> execute(TaskOrchestrationContext ctx, Onboarding onboarding) {
Expand All @@ -50,7 +57,9 @@ default String createInstitutionAndOnboarding(TaskOrchestrationContext ctx, Onbo

ctx.callActivity(CREATE_ONBOARDING_ACTIVITY, onboardingWithInstitutionIdString, optionsRetry(), String.class).await();
ctx.callActivity(CREATE_USERS_ACTIVITY, onboardingWithInstitutionIdString, optionsRetry(), String.class).await();
ctx.callActivity(STORE_ONBOARDING_ACTIVATEDAT, onboardingWithInstitutionIdString, optionsRetry(), String.class).await();
if (!onboarding.getWorkflowType().equals(WorkflowType.IMPORT)) {
ctx.callActivity(STORE_ONBOARDING_ACTIVATEDAT, onboardingWithInstitutionIdString, optionsRetry(), String.class).await();
}
ctx.callActivity(REJECT_OUTDATED_ONBOARDINGS, onboardingString, optionsRetry(), String.class).await();

createTestEnvironmentsOnboarding(ctx, onboarding, onboardingWithInstitutionIdString);
Expand All @@ -60,7 +69,7 @@ default String createInstitutionAndOnboarding(TaskOrchestrationContext ctx, Onbo

default void createTestEnvironmentsOnboarding(TaskOrchestrationContext ctx, Onboarding onboarding, String onboardingWithInstitutionIdString) {
// Create onboarding for test environments if exists (ex. prod-interop-coll)
if(Objects.nonNull(onboarding.getTestEnvProductIds()) && !onboarding.getTestEnvProductIds().isEmpty()) {
if (Objects.nonNull(onboarding.getTestEnvProductIds()) && !onboarding.getTestEnvProductIds().isEmpty()) {
// Schedule each task to run in parallel
List<Task<String>> parallelTasks = new ArrayList<>();
onboarding.getTestEnvProductIds().stream()
Expand Down Expand Up @@ -124,4 +133,11 @@ default Optional<OnboardingStatus> executeRejectedState(TaskOrchestrationContext
return Optional.empty();
}

default void postProcessor(TaskOrchestrationContext ctx, Onboarding onboarding, OnboardingStatus onboardingStatus) {
if (COMPLETED.equals(onboardingStatus)) {
final String onboardingString = getOnboardingString(objectMapper(), onboarding);
ctx.callActivity(REJECT_OUTDATED_ONBOARDINGS, onboardingString, optionsRetry(), String.class).await();
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ void startAndWaitOrchestration_failedOrchestration() throws Exception {
final DurableTaskClient client = mock(DurableTaskClient.class);
final String scheduleNewOrchestrationInstance = "scheduleNewOrchestrationInstance";
doReturn(client).when(durableContext).getClient();
doReturn(scheduleNewOrchestrationInstance).when(client).scheduleNewOrchestrationInstance("Onboardings",onboardingId);
doReturn(scheduleNewOrchestrationInstance).when(client).scheduleNewOrchestrationInstance("Onboardings", onboardingId);

// Invoke
HttpResponseMessage responseMessage = function.startOrchestration(req, durableContext, context);
Expand Down Expand Up @@ -131,7 +131,7 @@ void onboardingsOrchestratorContractRegistration() {

ArgumentCaptor<String> captorActivity = ArgumentCaptor.forClass(String.class);
verify(orchestrationContext, times(3))
.callActivity(captorActivity.capture(), any(), any(),any());
.callActivity(captorActivity.capture(), any(), any(), any());
assertEquals(BUILD_CONTRACT_ACTIVITY_NAME, captorActivity.getAllValues().get(0));
assertEquals(SAVE_TOKEN_WITH_CONTRACT_ACTIVITY_NAME, captorActivity.getAllValues().get(1));
assertEquals(SEND_MAIL_REGISTRATION_FOR_CONTRACT, captorActivity.getAllValues().get(2));
Expand All @@ -141,7 +141,7 @@ void onboardingsOrchestratorContractRegistration() {
}

@Test
void onboardingOrchestratorContractRegistrationAggregator(){
void onboardingOrchestratorContractRegistrationAggregator() {
Onboarding onboarding = new Onboarding();
onboarding.setId("onboardingId");
onboarding.setStatus(OnboardingStatus.REQUEST);
Expand All @@ -165,7 +165,7 @@ void onboardingOrchestratorContractRegistrationAggregator(){
}

@Test
void onboardingOrchestratorContractRegistrationAggregator_Pending(){
void onboardingOrchestratorContractRegistrationAggregator_Pending() {
Onboarding onboarding = new Onboarding();
onboarding.setId("onboardingId");
onboarding.setStatus(OnboardingStatus.PENDING);
Expand Down Expand Up @@ -267,7 +267,7 @@ void onboardingsOrchestratorNewAdminRequest() {

ArgumentCaptor<String> captorActivity = ArgumentCaptor.forClass(String.class);
verify(orchestrationContext, times(3))
.callActivity(captorActivity.capture(), any(), any(),any());
.callActivity(captorActivity.capture(), any(), any(), any());
assertEquals(BUILD_CONTRACT_ACTIVITY_NAME, captorActivity.getAllValues().get(0));
assertEquals(SAVE_TOKEN_WITH_CONTRACT_ACTIVITY_NAME, captorActivity.getAllValues().get(1));
assertEquals(SEND_MAIL_REGISTRATION_FOR_CONTRACT, captorActivity.getAllValues().get(2));
Expand All @@ -290,7 +290,7 @@ void onboardingsOrchestratorForApprove() {

ArgumentCaptor<String> captorActivity = ArgumentCaptor.forClass(String.class);
verify(orchestrationContext, times(1))
.callActivity(captorActivity.capture(), any(), any(),any());
.callActivity(captorActivity.capture(), any(), any(), any());
assertEquals(SEND_MAIL_ONBOARDING_APPROVE_ACTIVITY, captorActivity.getAllValues().get(0));

verify(service, times(1))
Expand Down Expand Up @@ -421,7 +421,7 @@ void onboardingsAggregateOrchestrator(){
function.onboardingsAggregateOrchestrator(orchestrationContext, executionContext);

ArgumentCaptor<String> captorActivity = ArgumentCaptor.forClass(String.class);
verify(orchestrationContext, times(2))
verify(orchestrationContext, times(1))
.callActivity(captorActivity.capture(), any(), any(),any());
verify(orchestrationContext, times(1))
.callSubOrchestrator(eq("Onboardings"), any(), any());
Expand Down Expand Up @@ -494,13 +494,13 @@ void onboardingsOrchestratorImport() {
function.onboardingsOrchestrator(orchestrationContext, executionContext);

ArgumentCaptor<String> captorActivity = ArgumentCaptor.forClass(String.class);
verify(orchestrationContext, times(5))
verify(orchestrationContext, times(4))
.callActivity(captorActivity.capture(), any(), any(),any());
assertEquals(CREATE_INSTITUTION_ACTIVITY, captorActivity.getAllValues().get(0));
assertEquals(CREATE_ONBOARDING_ACTIVITY, captorActivity.getAllValues().get(1));
assertEquals(CREATE_USERS_ACTIVITY, captorActivity.getAllValues().get(2));
assertEquals(STORE_ONBOARDING_ACTIVATEDAT, captorActivity.getAllValues().get(3));
assertEquals(REJECT_OUTDATED_ONBOARDINGS, captorActivity.getAllValues().get(4));
// assertEquals(STORE_ONBOARDING_ACTIVATEDAT, captorActivity.getAllValues().get(3));
assertEquals(REJECT_OUTDATED_ONBOARDINGS, captorActivity.getAllValues().get(3));

verify(service, times(1))
.updateOnboardingStatus(onboarding.getId(), OnboardingStatus.COMPLETED);
Expand Down Expand Up @@ -564,7 +564,7 @@ void onboardingsOrchestratorForApprovePtWhenToBeValidated() {
function.onboardingsOrchestrator(orchestrationContext, executionContext);

ArgumentCaptor<String> captorActivity = ArgumentCaptor.forClass(String.class);
verify(orchestrationContext, times(6))
verify(orchestrationContext, times(5))
.callActivity(captorActivity.capture(), any(), any(),any());
assertEquals(CREATE_INSTITUTION_ACTIVITY, captorActivity.getAllValues().get(0));
assertEquals(CREATE_ONBOARDING_ACTIVITY, captorActivity.getAllValues().get(1));
Expand Down Expand Up @@ -701,7 +701,7 @@ void onboardingCompletionOrchestrator() {
function.onboardingsOrchestrator(orchestrationContext, executionContext);

ArgumentCaptor<String> captorActivity = ArgumentCaptor.forClass(String.class);
verify(orchestrationContext, times(6))
verify(orchestrationContext, times(5))
.callActivity(captorActivity.capture(), any(), any(),any());
assertEquals(CREATE_INSTITUTION_ACTIVITY, captorActivity.getAllValues().get(0));
assertEquals(CREATE_ONBOARDING_ACTIVITY, captorActivity.getAllValues().get(1));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ private Uni<Onboarding> additionalChecksForProduct(Onboarding onboarding, Produc
onboarding.getProductId()), DEFAULT_ERROR.getCode());
}
if (InstitutionType.PA.equals(onboarding.getInstitution().getInstitutionType()) &&
!ProductId.PROD_INTEROP.getValue().equals(onboarding.getProductId())) {
(!ProductId.PROD_INTEROP.getValue().equals(onboarding.getProductId()) && !PROD_PAGOPA.getValue().equals(onboarding.getProductId()))) {
if (Objects.isNull(onboarding.getBilling()) || Objects.isNull(onboarding.getBilling().getRecipientCode()))
return Uni.createFrom().failure(new InvalidRequestException(BILLING_OR_RECIPIENT_CODE_REQUIRED));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ class OnboardingUtilsTest {
void shouldOnboardingInstitutionWithAdditionalInfo(String type) {

Billing billing = new Billing();
Onboarding onboarding = new Onboarding();
Institution institution = new Institution();
Onboarding onboarding = new Onboarding();
Institution institution = new Institution();
institution.setInstitutionType(InstitutionType.GSP);
onboarding.setBilling(billing);
onboarding.setInstitution(institution);
Expand All @@ -77,8 +77,8 @@ void shouldOnboardingInstitutionWithAdditionalInfo(String type) {
void shouldOnboardingInstitutionWithAdditionalInfoRequiredException() {

Billing billing = new Billing();
Onboarding onboarding = new Onboarding();
Institution institution = new Institution();
Onboarding onboarding = new Onboarding();
Institution institution = new Institution();
institution.setInstitutionType(InstitutionType.GSP);
onboarding.setBilling(billing);
onboarding.setInstitution(institution);
Expand All @@ -102,8 +102,8 @@ void shouldOnboardingInstitutionWithAdditionalInfoRequiredException() {
void shouldOnboardingInstitutionWithOtherNoteRequiredException() {

Billing billing = new Billing();
Onboarding onboarding = new Onboarding();
Institution institution = new Institution();
Onboarding onboarding = new Onboarding();
Institution institution = new Institution();
institution.setInstitutionType(InstitutionType.GSP);
onboarding.setBilling(billing);
onboarding.setInstitution(institution);
Expand All @@ -125,11 +125,11 @@ void shouldOnboardingInstitutionWithOtherNoteRequiredException() {
@Test
void shouldOnboardingInstitutionWithBillingRequiredException() {

Onboarding onboarding = new Onboarding();
Institution institution = new Institution();
Onboarding onboarding = new Onboarding();
Institution institution = new Institution();
institution.setInstitutionType(InstitutionType.PA);
onboarding.setInstitution(institution);
onboarding.setProductId(ProductId.PROD_PAGOPA.getValue());
onboarding.setProductId(ProductId.PROD_PN.getValue());
Billing billing = new Billing();
billing.setTaxCodeInvoicing("taxCodeInvoicing");
onboarding.setBilling(billing);
Expand All @@ -151,12 +151,12 @@ void shouldOnboardingInstitutionWithBillingRequiredException() {
void shouldOnboardingInstitutionWithRecipientCodeRequiredException() {

Billing billing = new Billing();
Onboarding onboarding = new Onboarding();
Institution institution = new Institution();
Onboarding onboarding = new Onboarding();
Institution institution = new Institution();
institution.setInstitutionType(InstitutionType.PA);
onboarding.setInstitution(institution);
onboarding.setBilling(billing);
onboarding.setProductId(ProductId.PROD_PAGOPA.getValue());
onboarding.setProductId(ProductId.PROD_PN.getValue());

OnboardingUtils.ProxyResource proxyResource = OnboardingUtils.ProxyResource.builder()
.type(InstitutionPaSubunitType.EC)
Expand Down

0 comments on commit 3ab58c8

Please sign in to comment.