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 331642445..3d4c95e31 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 @@ -268,4 +268,17 @@ public String createDelegationForAggregation(@DurableActivityTrigger(name = "onb context.getLogger().info(String.format(FORMAT_LOGGER_ONBOARDING_STRING, CREATE_USERS_ACTIVITY, onboardingString)); return completionService.createDelegation(readOnboardingValue(objectMapper, onboardingString)); } + + /** + * This HTTP-triggered function retrieves onboarding given its identifier + * After that, It sends a message on topics through the event bus + */ + @FunctionName("TestSendEmail") + public HttpResponseMessage sendTestEmail( + @HttpTrigger(name = "req", methods = {HttpMethod.POST}, authLevel = AuthorizationLevel.FUNCTION) HttpRequestMessage> request, + final ExecutionContext context) { + context.getLogger().info("TestSendEmail trigger processed a request"); + completionService.sendTestEmail(); + return request.createResponseBuilder(HttpStatus.OK).build(); + } } diff --git a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionService.java b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionService.java index c1bbc7695..7c4b5af27 100644 --- a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionService.java +++ b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionService.java @@ -23,4 +23,6 @@ public interface CompletionService { String createDelegation(Onboarding onboarding); String createAggregateOnboardingRequest(OnboardingAggregateOrchestratorInput onboardingAggregateOrchestratorInput); + + void sendTestEmail(); } diff --git a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefault.java b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefault.java index 2e12ee99d..64c2d1cbd 100644 --- a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefault.java +++ b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefault.java @@ -336,4 +336,9 @@ public String createAggregateOnboardingRequest(OnboardingAggregateOrchestratorIn onboardingRepository.persistOrUpdate(onboardingToUpdate); return onboardingToUpdate.getId(); } + + @Override + public void sendTestEmail() { + notificationService.sendTestEmail(); + } } diff --git a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/NotificationService.java b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/NotificationService.java index 4afa25887..d32e8e665 100644 --- a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/NotificationService.java +++ b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/NotificationService.java @@ -27,4 +27,5 @@ public interface NotificationService { void sendCompletedEmailAggregate(String institutionName, List destinationMails); + void sendTestEmail(); } diff --git a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/NotificationServiceDefault.java b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/NotificationServiceDefault.java index 041ac87cb..4c7ffc483 100644 --- a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/NotificationServiceDefault.java +++ b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/service/NotificationServiceDefault.java @@ -236,4 +236,23 @@ static class FileMailData { String contentType; } + @Override + public void sendTestEmail() { + try { + log.info("Sending Test email to {}", senderMail); + + String html = "TEST EMAIL"; + + Mail mail = Mail + .withHtml(senderMail, html, html) + .setFrom(senderMail); + + mailer.send(mail); + + log.info("End of sending mail to {}, with subject {}", senderMail, mail); + } catch (Exception e) { + log.error(String.format("%s: %s", ERROR_DURING_SEND_MAIL, e.getMessage())); + throw new GenericOnboardingException(ERROR_DURING_SEND_MAIL.getMessage()); + } + } } diff --git a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/workflow/WorkflowExecutorConfirmation.java b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/workflow/WorkflowExecutorConfirmation.java index a8620f49d..d37a802f7 100644 --- a/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/workflow/WorkflowExecutorConfirmation.java +++ b/apps/onboarding-functions/src/main/java/it/pagopa/selfcare/onboarding/workflow/WorkflowExecutorConfirmation.java @@ -7,7 +7,6 @@ import it.pagopa.selfcare.onboarding.entity.Onboarding; import it.pagopa.selfcare.onboarding.entity.OnboardingWorkflow; import it.pagopa.selfcare.onboarding.entity.OnboardingWorkflowInstitution; -import it.pagopa.selfcare.onboarding.entity.OnboardingWorkflowType; import java.util.Optional; 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 9982cfbf8..d17e3a8c1 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 @@ -767,4 +767,22 @@ void createDelegationForAggregation() { verify(completionService, times(1)) .createDelegation(any()); } + + @Test + void sendTestEmail() { + @SuppressWarnings("unchecked") final HttpRequestMessage> req = mock(HttpRequestMessage.class); + + doAnswer((Answer) invocation -> { + HttpStatus status = (HttpStatus) invocation.getArguments()[0]; + return new HttpResponseMessageMock.HttpResponseMessageBuilderMock().status(status); + }).when(req).createResponseBuilder(any(HttpStatus.class)); + + when(executionContext.getLogger()).thenReturn(Logger.getGlobal()); + doNothing().when(completionService).sendTestEmail(); + + function.sendTestEmail(req, executionContext); + + verify(completionService, times(1)) + .sendTestEmail(); + } } \ No newline at end of file diff --git a/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefaultTest.java b/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefaultTest.java index e0cdfe16d..d4b209a34 100644 --- a/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefaultTest.java +++ b/apps/onboarding-functions/src/test/java/it/pagopa/selfcare/onboarding/service/CompletionServiceDefaultTest.java @@ -694,6 +694,15 @@ public static Onboarding createSampleOnboarding() { return onboarding; } + @Test + void sendTestEmail() { + doNothing().when(notificationService).sendTestEmail(); + + completionServiceDefault.sendTestEmail(); + + Mockito.verify(notificationService, times(1)) + .sendTestEmail(); + } } diff --git a/infra/functions/onboarding-functions/env/dev/terraform.tfvars b/infra/functions/onboarding-functions/env/dev/terraform.tfvars index 0de68e5ff..b4ab4bef4 100644 --- a/infra/functions/onboarding-functions/env/dev/terraform.tfvars +++ b/infra/functions/onboarding-functions/env/dev/terraform.tfvars @@ -53,6 +53,7 @@ app_settings = { "MAIL_SERVER_PASSWORD" = "@Microsoft.KeyVault(SecretUri=https://selc-d-kv.vault.azure.net/secrets/smtp-psw/)", "MAIL_SERVER_HOST" = "smtps.pec.aruba.it", "MAIL_SERVER_PORT" = "465", + "MAIL_SERVER_SSL" = "false" "MAIL_TEMPLATE_REGISTRATION_NOTIFICATION_ADMIN_PATH" = "contracts/template/mail/registration-notification-admin/1.0.0.json", "MAIL_TEMPLATE_NOTIFICATION_PATH" = "contracts/template/mail/onboarding-notification/1.0.0.json", "ADDRESS_EMAIL_NOTIFICATION_ADMIN" = "@Microsoft.KeyVault(SecretUri=https://selc-d-kv.vault.azure.net/secrets/portal-admin-operator-email/)",