From dbe94d554827df3e498f1e59f3ed0c6987d84452 Mon Sep 17 00:00:00 2001 From: "pierpaolo.didato@emeal.nttdata.com" Date: Wed, 27 Nov 2024 12:48:08 +0100 Subject: [PATCH] Updated workflow executor --- .../functions/OnboardingFunctions.java | 2 + .../WorkflowExecutorForApproveGpu.java | 1 + .../functions/OnboardingFunctionsTest.java | 68 +++++++++++++++++++ 3 files changed, 71 insertions(+) diff --git a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/functions/OnboardingFunctions.java b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/functions/OnboardingFunctions.java index b354904ed..f4bbe2bdf 100644 --- a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/functions/OnboardingFunctions.java +++ b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/functions/OnboardingFunctions.java @@ -201,6 +201,8 @@ public void onboardingsOrchestrator( workflowExecutor = new WorkflowExecutorForApprove(objectMapper, optionsRetry); case FOR_APPROVE_PT -> workflowExecutor = new WorkflowExecutorForApprovePt(objectMapper, optionsRetry); + case FOR_APPROVE_GPU -> + workflowExecutor = new WorkflowExecutorForApproveGpu(objectMapper, optionsRetry); case CONFIRMATION -> workflowExecutor = new WorkflowExecutorConfirmation(objectMapper, optionsRetry); case CONFIRMATION_AGGREGATE -> diff --git a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/workflow/WorkflowExecutorForApproveGpu.java b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/workflow/WorkflowExecutorForApproveGpu.java index 1a14632f1..f3a4f8906 100644 --- a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/workflow/WorkflowExecutorForApproveGpu.java +++ b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/workflow/WorkflowExecutorForApproveGpu.java @@ -20,6 +20,7 @@ public record WorkflowExecutorForApproveGpu(ObjectMapper objectMapper, TaskOptio @Override public Optional executeRequestState(TaskOrchestrationContext ctx, OnboardingWorkflow onboardingWorkflow) { String onboardingString = getOnboardingString(objectMapper, onboardingWorkflow.getOnboarding()); + ctx.callActivity("BuildAttachmentsAndSaveTokens", onboardingString, optionsRetry, String.class).await(); ctx.callActivity(SEND_MAIL_ONBOARDING_APPROVE_ACTIVITY, onboardingString, optionsRetry, String.class).await(); return Optional.of(OnboardingStatus.TOBEVALIDATED); } diff --git a/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/functions/OnboardingFunctionsTest.java b/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/functions/OnboardingFunctionsTest.java index c80f1806d..feab27d18 100644 --- a/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/functions/OnboardingFunctionsTest.java +++ b/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/functions/OnboardingFunctionsTest.java @@ -1142,6 +1142,74 @@ void onboardingOrchestratorUsersEaPending() { function.onboardingsOrchestrator(orchestrationContext, executionContext); } + @Test + void onboardingsOrchestratorForApproveGpu() { + Onboarding onboarding = new Onboarding(); + onboarding.setId("onboardingId"); + onboarding.setStatus(OnboardingStatus.REQUEST); + onboarding.setWorkflowType(WorkflowType.FOR_APPROVE_GPU); + + TaskOrchestrationContext orchestrationContext = mockTaskOrchestrationContext(onboarding); + + function.onboardingsOrchestrator(orchestrationContext, executionContext); + + ArgumentCaptor captorActivity = ArgumentCaptor.forClass(String.class); + verify(orchestrationContext, times(2)) + .callActivity(captorActivity.capture(), any(), any(), any()); + assertEquals("BuildAttachmentsAndSaveTokens", captorActivity.getAllValues().get(0)); + assertEquals(SEND_MAIL_ONBOARDING_APPROVE_ACTIVITY, captorActivity.getAllValues().get(1)); + + verify(service, times(1)) + .updateOnboardingStatus(onboarding.getId(), OnboardingStatus.TOBEVALIDATED); + } + + @Test + void onboardingsOrchestratorForApproveGpuWhenIsPending() { + Onboarding onboarding = new Onboarding(); + onboarding.setId("onboardingId"); + onboarding.setStatus(OnboardingStatus.PENDING); + onboarding.setInstitution(new Institution()); + onboarding.setWorkflowType(WorkflowType.FOR_APPROVE_GPU); + + TaskOrchestrationContext orchestrationContext = mockTaskOrchestrationContext(onboarding); + + function.onboardingsOrchestrator(orchestrationContext, executionContext); + + ArgumentCaptor captorActivity = ArgumentCaptor.forClass(String.class); + 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)); + assertEquals(CREATE_USERS_ACTIVITY, captorActivity.getAllValues().get(2)); + assertEquals(STORE_ONBOARDING_ACTIVATEDAT, captorActivity.getAllValues().get(3)); + assertEquals(SEND_MAIL_COMPLETION_ACTIVITY, captorActivity.getAllValues().get(4)); + + verify(service, times(1)) + .updateOnboardingStatus(onboarding.getId(), OnboardingStatus.COMPLETED); + } + + @Test + void onboardingsOrchestratorForApproveGpuWhenToBeValidated() { + Onboarding onboarding = new Onboarding(); + onboarding.setId("onboardingId"); + onboarding.setStatus(OnboardingStatus.TOBEVALIDATED); + onboarding.setWorkflowType(WorkflowType.FOR_APPROVE_GPU); + + TaskOrchestrationContext orchestrationContext = mockTaskOrchestrationContext(onboarding); + + function.onboardingsOrchestrator(orchestrationContext, executionContext); + + ArgumentCaptor captorActivity = ArgumentCaptor.forClass(String.class); + verify(orchestrationContext, times(3)) + .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_WHEN_APPROVE_ACTIVITY, captorActivity.getAllValues().get(2)); + + verify(service, times(1)) + .updateOnboardingStatus(onboarding.getId(), OnboardingStatus.PENDING); + } + private Product createDummyProduct() { Product product = new Product(); product.setTitle("Title");