From 214add8a170c9215c7ab4c2e47f636ad248c1c6c Mon Sep 17 00:00:00 2001 From: flaminiaScarciofolo Date: Sat, 6 Jul 2024 17:35:40 +0200 Subject: [PATCH] [SELC-5163] Added sendMail method and configuration --- apps/institution-send-mail-scheduler/pom.xml | 28 ++++++- .../config/AzureStorageConfig.java | 11 +++ .../config/InstitutionSendMailConfig.java | 42 ++++++++++ .../config/MailTemplatePathConfig.java | 8 ++ .../MailTemplatePlaceholdersConfig.java | 9 ++ .../institution/entity/PecNotification.java | 56 +++++++++++++ .../exception/GenericException.java | 20 +++++ .../institution/model/FileMailData.java | 40 +++++++++ .../institution/model/MailTemplate.java | 26 ++++++ .../PecNotificationsRepository.java | 9 ++ .../institution/service/MailService.java | 11 +++ .../institution/service/MailServiceImpl.java | 80 ++++++++++++++++++ .../src/main/resources/application.properties | 12 +++ .../service/MailServiceImplTest.java | 83 +++++++++++++++++++ .../src/test/resources/application.properties | 12 +++ .../env/dev/terraform.tfvars | 25 ++++++ .../env/prod/terraform.tfvars | 23 ++++- .../env/uat/terraform.tfvars | 23 ++++- 18 files changed, 515 insertions(+), 3 deletions(-) create mode 100644 apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/config/AzureStorageConfig.java create mode 100644 apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/config/InstitutionSendMailConfig.java create mode 100644 apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/config/MailTemplatePathConfig.java create mode 100644 apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/config/MailTemplatePlaceholdersConfig.java create mode 100644 apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/entity/PecNotification.java create mode 100644 apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/exception/GenericException.java create mode 100644 apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/model/FileMailData.java create mode 100644 apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/model/MailTemplate.java create mode 100644 apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/repository/PecNotificationsRepository.java create mode 100644 apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/service/MailService.java create mode 100644 apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/service/MailServiceImpl.java create mode 100644 apps/institution-send-mail-scheduler/src/main/resources/application.properties create mode 100644 apps/institution-send-mail-scheduler/src/test/java/it/pagopa/selfcare/institution/service/MailServiceImplTest.java create mode 100644 apps/institution-send-mail-scheduler/src/test/resources/application.properties diff --git a/apps/institution-send-mail-scheduler/pom.xml b/apps/institution-send-mail-scheduler/pom.xml index 8784f1e..5b38094 100644 --- a/apps/institution-send-mail-scheduler/pom.xml +++ b/apps/institution-send-mail-scheduler/pom.xml @@ -24,6 +24,7 @@ 3.11.3 true 3.1.2 + 0.1.14 2.4.2 @@ -94,9 +95,34 @@ io.quarkus quarkus-smallrye-health + + com.fasterxml.jackson.core + jackson-databind + io.quarkus - quarkus-rest-client-reactive-jackson + quarkus-mailer + + + it.pagopa.selfcare + onboarding-sdk-azure-storage + ${onboarding-sdk.version} + + + org.apache.commons + commons-text + compile + + + it.pagopa.selfcare + onboarding-sdk-common + ${onboarding-sdk.version} + + + junit + junit + 4.13.1 + test diff --git a/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/config/AzureStorageConfig.java b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/config/AzureStorageConfig.java new file mode 100644 index 0000000..4693154 --- /dev/null +++ b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/config/AzureStorageConfig.java @@ -0,0 +1,11 @@ +package it.pagopa.selfcare.institution.config; + +import io.smallrye.config.ConfigMapping; + +@ConfigMapping(prefix = "institution-send-mail.blob-storage") +public interface AzureStorageConfig { + + String connectionStringContract(); + String containerContract(); + +} diff --git a/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/config/InstitutionSendMailConfig.java b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/config/InstitutionSendMailConfig.java new file mode 100644 index 0000000..7b06173 --- /dev/null +++ b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/config/InstitutionSendMailConfig.java @@ -0,0 +1,42 @@ +package it.pagopa.selfcare.institution.config; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import io.quarkus.runtime.StartupEvent; +import io.vertx.core.impl.logging.Logger; +import io.vertx.core.impl.logging.LoggerFactory; +import io.vertx.core.json.jackson.DatabindCodec; +import it.pagopa.selfcare.azurestorage.AzureBlobClient; +import it.pagopa.selfcare.azurestorage.AzureBlobClientDefault; +import it.pagopa.selfcare.institution.repository.PecNotificationsRepository; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.event.Observes; +import jakarta.enterprise.inject.Produces; + +@ApplicationScoped +public class InstitutionSendMailConfig { + + private static final Logger log = LoggerFactory.getLogger(InstitutionSendMailConfig.class); + + void onStart(@Observes StartupEvent ev, PecNotificationsRepository repository) { + log.info(String.format("Database %s is starting...", repository.mongoDatabase().getName())); + } + + @Produces + public ObjectMapper objectMapper(){ + ObjectMapper mapper = DatabindCodec.mapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);// custom config + mapper.registerModule(new JavaTimeModule()); // custom config + mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); // custom config + return mapper; + } + + @ApplicationScoped + public AzureBlobClient azureBobClientContract(AzureStorageConfig azureStorageConfig){ + return new AzureBlobClientDefault(azureStorageConfig.connectionStringContract(), azureStorageConfig.containerContract()); + } +} diff --git a/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/config/MailTemplatePathConfig.java b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/config/MailTemplatePathConfig.java new file mode 100644 index 0000000..7081485 --- /dev/null +++ b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/config/MailTemplatePathConfig.java @@ -0,0 +1,8 @@ +package it.pagopa.selfcare.institution.config; + +import io.smallrye.config.ConfigMapping; + +@ConfigMapping(prefix = "onboarding-functions.mail-template.path.onboarding") +public interface MailTemplatePathConfig { + +} diff --git a/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/config/MailTemplatePlaceholdersConfig.java b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/config/MailTemplatePlaceholdersConfig.java new file mode 100644 index 0000000..766dc84 --- /dev/null +++ b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/config/MailTemplatePlaceholdersConfig.java @@ -0,0 +1,9 @@ +package it.pagopa.selfcare.institution.config; + +import io.smallrye.config.ConfigMapping; + +@ConfigMapping(prefix = "onboarding-functions.mail-template.placeholders.onboarding") +public interface MailTemplatePlaceholdersConfig { + + +} diff --git a/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/entity/PecNotification.java b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/entity/PecNotification.java new file mode 100644 index 0000000..5287d65 --- /dev/null +++ b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/entity/PecNotification.java @@ -0,0 +1,56 @@ +package it.pagopa.selfcare.institution.entity; + +import io.quarkus.mongodb.panache.common.MongoEntity; +import org.bson.codecs.pojo.annotations.BsonId; +import org.bson.types.ObjectId; + +@MongoEntity(collection="pecNotification") +public class PecNotification { + @BsonId + private ObjectId id; + private Integer moduleDayOfTheEpoch; + private String productId; + private String institutionId; + + public ObjectId getId() { + return id; + } + + public void setId(ObjectId id) { + this.id = id; + } + + public Integer getModuleDayOfTheEpoch() { + return moduleDayOfTheEpoch; + } + + public void setModuleDayOfTheEpoch(Integer moduleDayOfTheEpoch) { + this.moduleDayOfTheEpoch = moduleDayOfTheEpoch; + } + + public String getProductId() { + return productId; + } + + public void setProductId(String productId) { + this.productId = productId; + } + + public String getInstitutionId() { + return institutionId; + } + + public void setInstitutionId(String institutionId) { + this.institutionId = institutionId; + } + + @Override + public String toString() { + return "PecNotification{" + + "id=" + id + + ", moduleDayOfTheEpoch=" + moduleDayOfTheEpoch + + ", productId='" + productId + '\'' + + ", institutionId='" + institutionId + '\'' + + '}'; + } +} diff --git a/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/exception/GenericException.java b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/exception/GenericException.java new file mode 100644 index 0000000..3c2b019 --- /dev/null +++ b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/exception/GenericException.java @@ -0,0 +1,20 @@ +package it.pagopa.selfcare.institution.exception; + +public class GenericException extends RuntimeException { + + private final String code; + + public GenericException(String message, String code) { + super(message); + this.code = code; + } + + public GenericException(String message) { + super(message); + this.code = "0000"; + } + + public String getCode() { + return code; + } +} diff --git a/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/model/FileMailData.java b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/model/FileMailData.java new file mode 100644 index 0000000..b37905c --- /dev/null +++ b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/model/FileMailData.java @@ -0,0 +1,40 @@ +package it.pagopa.selfcare.institution.model; + +public class FileMailData { + byte[] data; + String name; + String contentType; + + public FileMailData() { + } + + public FileMailData(byte[] data, String name, String contentType) { + this.data = data; + this.name = name; + this.contentType = contentType; + } + + public byte[] getData() { + return data; + } + + public void setData(byte[] data) { + this.data = data; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getContentType() { + return contentType; + } + + public void setContentType(String contentType) { + this.contentType = contentType; + } +} diff --git a/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/model/MailTemplate.java b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/model/MailTemplate.java new file mode 100644 index 0000000..afd036a --- /dev/null +++ b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/model/MailTemplate.java @@ -0,0 +1,26 @@ +package it.pagopa.selfcare.institution.model; + + +import java.nio.charset.StandardCharsets; +import java.util.Base64; + +public class MailTemplate { + private String subject; + private String body; + + public String getSubject() { + return new String(Base64.getDecoder().decode(subject), StandardCharsets.UTF_8); + } + + public String getBody() { + return new String(Base64.getDecoder().decode(body), StandardCharsets.UTF_8); + } + + public void setBody(String body) { + this.body = body; + } + + public void setSubject(String subject) { + this.subject = subject; + } +} diff --git a/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/repository/PecNotificationsRepository.java b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/repository/PecNotificationsRepository.java new file mode 100644 index 0000000..fe85fe7 --- /dev/null +++ b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/repository/PecNotificationsRepository.java @@ -0,0 +1,9 @@ +package it.pagopa.selfcare.institution.repository; + +import io.quarkus.mongodb.panache.PanacheMongoRepositoryBase; +import it.pagopa.selfcare.institution.entity.PecNotification; +import jakarta.enterprise.context.ApplicationScoped; + +@ApplicationScoped +public class PecNotificationsRepository implements PanacheMongoRepositoryBase { +} diff --git a/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/service/MailService.java b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/service/MailService.java new file mode 100644 index 0000000..d23a1ba --- /dev/null +++ b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/service/MailService.java @@ -0,0 +1,11 @@ +package it.pagopa.selfcare.institution.service; + +import it.pagopa.selfcare.institution.model.FileMailData; + +import java.util.List; +import java.util.Map; + +public interface MailService { + + void sendMailWithFile(List destinationMail, String templateName, Map mailParameters, String prefixSubject, FileMailData fileMailData); +} diff --git a/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/service/MailServiceImpl.java b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/service/MailServiceImpl.java new file mode 100644 index 0000000..5ff86f6 --- /dev/null +++ b/apps/institution-send-mail-scheduler/src/main/java/it/pagopa/selfcare/institution/service/MailServiceImpl.java @@ -0,0 +1,80 @@ +package it.pagopa.selfcare.institution.service; + +import com.fasterxml.jackson.databind.ObjectMapper; +import io.quarkus.mailer.Mail; +import io.quarkus.mailer.Mailer; +import io.vertx.core.impl.logging.Logger; +import io.vertx.core.impl.logging.LoggerFactory; +import it.pagopa.selfcare.azurestorage.AzureBlobClient; +import it.pagopa.selfcare.institution.exception.GenericException; +import it.pagopa.selfcare.institution.model.FileMailData; +import it.pagopa.selfcare.institution.model.MailTemplate; +import jakarta.enterprise.context.ApplicationScoped; +import org.eclipse.microprofile.config.inject.ConfigProperty; +import org.apache.commons.text.StringSubstitutor; + +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; + +@ApplicationScoped +public class MailServiceImpl implements MailService{ + + private static final String ERROR_DURING_SEND_MAIL = "Error during send mail"; + + private static final Logger log = LoggerFactory.getLogger(MailServiceImpl.class); + private final AzureBlobClient azureBlobClient; + private final ObjectMapper objectMapper; + private final String senderMail; + private final Boolean destinationMailTest; + private final String destinationMailTestAddress; + private final Mailer mailer; + + public MailServiceImpl(AzureBlobClient azureBlobClient, + ObjectMapper objectMapper, + @ConfigProperty(name = "institution-send-mail.sender-mail") String senderMail, + @ConfigProperty(name = "institution-send-mail.destination-mail")Boolean destinationMailTest, + @ConfigProperty(name = "institution-send-mail.destination-mail-test-address") String destinationMailTestAddress, + Mailer mailer) { + this.azureBlobClient = azureBlobClient; + this.objectMapper = objectMapper; + this.senderMail = senderMail; + this.destinationMailTest = destinationMailTest; + this.destinationMailTestAddress = destinationMailTestAddress; + this.mailer = mailer; + } + + @Override + public void sendMailWithFile(List destinationMail, String templateName, Map mailParameters, String prefixSubject, FileMailData fileMailData) { + try { + + // Dev mode send mail to test digital address + String destination = destinationMailTest + ? destinationMailTestAddress + : destinationMail.get(0); + + log.info(String.format("Sending mail to %s, with prefixSubject %s", destination, prefixSubject)); + String template = azureBlobClient.getFileAsText(templateName); + MailTemplate mailTemplate = objectMapper.readValue(template, MailTemplate.class); + String html = StringSubstitutor.replace(mailTemplate.getBody(), mailParameters); + + final String subject = Optional.ofNullable(prefixSubject).map(value -> String.format("%s: %s", value, mailTemplate.getSubject())).orElse(mailTemplate.getSubject()); + + Mail mail = Mail + .withHtml(destination, subject, html) + .setFrom(senderMail); + + if(Objects.nonNull(fileMailData)) { + mail.addAttachment(fileMailData.getName(), fileMailData.getData(), fileMailData.getContentType()); + } + + mailer.send(mail); + + log.info(String.format("End of sending mail to %s, with subject %s", destination, subject)); + } catch (Exception e) { + log.error(String.format("%s: %s", ERROR_DURING_SEND_MAIL, e.getMessage())); + throw new GenericException(ERROR_DURING_SEND_MAIL); + } + } +} diff --git a/apps/institution-send-mail-scheduler/src/main/resources/application.properties b/apps/institution-send-mail-scheduler/src/main/resources/application.properties new file mode 100644 index 0000000..79b38bb --- /dev/null +++ b/apps/institution-send-mail-scheduler/src/main/resources/application.properties @@ -0,0 +1,12 @@ +quarkus.mongodb.database=pecNotification + +## MAIL +institution-send-mail.sender-mail = ${MAIL_SENDER_ADDRESS:test@test.it} +## In PROD env must be false for sending real mail +institution-send-mail.destination-mail = ${MAIL_DESTINATION_TEST:true} +## If MAIL_DESTINATION_TEST is true, app send mail to this address +institution-send-mail.destination-mail-test-address = ${MAIL_DESTINATION_TEST_ADDRESS:test@test.it} + +## AZURE STORAGE ## +institution-send-mail.blob-storage.container-contract=${STORAGE_CONTAINER_CONTRACT:selc-d-contracts-blob} +institution-send-mail.blob-storage.connection-string-contract = ${BLOB_STORAGE_CONN_STRING_CONTRACT:UseDevelopmentStorage=true;} diff --git a/apps/institution-send-mail-scheduler/src/test/java/it/pagopa/selfcare/institution/service/MailServiceImplTest.java b/apps/institution-send-mail-scheduler/src/test/java/it/pagopa/selfcare/institution/service/MailServiceImplTest.java new file mode 100644 index 0000000..0e7fc5f --- /dev/null +++ b/apps/institution-send-mail-scheduler/src/test/java/it/pagopa/selfcare/institution/service/MailServiceImplTest.java @@ -0,0 +1,83 @@ +package it.pagopa.selfcare.institution.service; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.quarkus.mailer.Mail; +import io.quarkus.mailer.Mailer; +import io.quarkus.test.junit.QuarkusTest; +import it.pagopa.selfcare.azurestorage.AzureBlobClient; +import it.pagopa.selfcare.institution.exception.GenericException; +import it.pagopa.selfcare.institution.model.FileMailData; +import it.pagopa.selfcare.institution.model.MailTemplate; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Mockito; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.mock; + +@QuarkusTest +class MailServiceImplTest { + + AzureBlobClient azureBlobClient; + + ObjectMapper objectMapper; + + Mailer mailer; + + MailServiceImpl mailService; + + @BeforeEach + void setUp() { + mailer = mock(Mailer.class); + azureBlobClient = mock(AzureBlobClient.class); + objectMapper = mock(ObjectMapper.class); + this.mailService = new MailServiceImpl( azureBlobClient, objectMapper, "pec@pec.it", Boolean.TRUE, + "test@test.it", mailer); + + } + + @Test + void shouldSendMailToTestAddress() throws JsonProcessingException { + List destinationMails = Collections.singletonList("realRecipient@example.com"); + Map mailParameters = new HashMap<>(); + mailParameters.put("name","John Doe"); + MailTemplate mailTemplate = new MailTemplate(); + mailTemplate.setSubject("VGVzdCBTdWJqZWN0"); + mailTemplate.setBody("SGVsbG8gJHtuYW1lfSB0aGlzIGlzIHRoZSBib2R5"); + final String mailTemplateString = "template"; + Mockito.when(azureBlobClient.getFileAsText("templateName")).thenReturn(mailTemplateString); + Mockito.when(objectMapper.readValue(Mockito.anyString(), Mockito.eq(MailTemplate.class))) + .thenReturn(mailTemplate); + // When + FileMailData fileMailData = new FileMailData(); + fileMailData.setData("test".getBytes()); + fileMailData.setContentType("text/plain"); + fileMailData.setName("test.txt"); + mailService.sendMailWithFile(destinationMails, "templateName", mailParameters, "Prefix", fileMailData); + + // Then + ArgumentCaptor mailCaptor = ArgumentCaptor.forClass(Mail.class); + Mockito.verify(mailer).send(mailCaptor.capture()); + assertEquals("test@test.it", mailCaptor.getValue().getTo().iterator().next()); + } + + @Test + void shouldThrowGenericExceptionOnMailerFailure() { + // Given + Mockito.doThrow(new RuntimeException("Mailer exception")).when(mailer).send(Mockito.any(Mail.class)); + + // Then + assertThrows(GenericException.class, () -> { + // When + mailService.sendMailWithFile(Collections.singletonList("recipient@example.com"), "templateName", Collections.singletonMap("name", "John Doe"), "Prefix", null); + }); + } +} \ No newline at end of file diff --git a/apps/institution-send-mail-scheduler/src/test/resources/application.properties b/apps/institution-send-mail-scheduler/src/test/resources/application.properties new file mode 100644 index 0000000..64680fe --- /dev/null +++ b/apps/institution-send-mail-scheduler/src/test/resources/application.properties @@ -0,0 +1,12 @@ +quarkus.mongodb.database=pecNotification + +## MAIL +institution-send-mail.sender-mail = test@test.it +## In PROD env must be false for sending real mail +institution-send-mail.destination-mail = true +## If MAIL_DESTINATION_TEST is true, app send mail to this address +institution-send-mail.destination-mail-test-address = test@test.it + +## AZURE STORAGE ## +institution-send-mail.blob-storage.container-contract=selc-d-contracts-blob +institution-send-mail.blob-storage.connection-string-contract = UseDevelopmentStorage=true; diff --git a/infra/container_apps/institution-send-mail-scheduler/env/dev/terraform.tfvars b/infra/container_apps/institution-send-mail-scheduler/env/dev/terraform.tfvars index 9677459..d76c145 100644 --- a/infra/container_apps/institution-send-mail-scheduler/env/dev/terraform.tfvars +++ b/infra/container_apps/institution-send-mail-scheduler/env/dev/terraform.tfvars @@ -38,11 +38,36 @@ app_settings = [ { name = "APPLICATIONINSIGHTS_ROLE_NAME" value = "institution_send_mail_scheduler", + }, + { + name = "STORAGE_CONTAINER_CONTRACT" + value = "selc-d-contracts-blob" + }, + { + name = "MAIL_DESTINATION_TEST_ADDRESS" + value = "pectest@pec.pagopa.it" + }, + { + name = "MAIL_SERVER_HOST" + value = "smtps.pec.aruba.it" + }, + { + name = "MAIL_SERVER_PORT" + value = "465" + }, + { + name = "MAIL_TEMPLATE_USERSLIST_NOTIFICATION_PATH" + value = "contracts/template/mail/users-list-notification/1.0.0.json" } ] secrets_names = { + "MONGODB-CONNECTION-STRING" = "mongodb-connection-string" + "BLOB-STORAGE-CONTRACT-CONNECTION-STRING" = "blob-storage-contract-connection-string" + "MAIL_SERVER_USERNAME" = "@Microsoft.KeyVault(SecretUri=https://selc-d-kv.vault.azure.net/secrets/smtp-usr/)", + "MAIL_SENDER_ADDRESS" = "@Microsoft.KeyVault(SecretUri=https://selc-d-kv.vault.azure.net/secrets/smtp-usr/)", + "MAIL_SERVER_PASSWORD" = "@Microsoft.KeyVault(SecretUri=https://selc-d-kv.vault.azure.net/secrets/smtp-psw/)", } diff --git a/infra/container_apps/institution-send-mail-scheduler/env/prod/terraform.tfvars b/infra/container_apps/institution-send-mail-scheduler/env/prod/terraform.tfvars index 407fe95..814fc3b 100644 --- a/infra/container_apps/institution-send-mail-scheduler/env/prod/terraform.tfvars +++ b/infra/container_apps/institution-send-mail-scheduler/env/prod/terraform.tfvars @@ -25,11 +25,32 @@ app_settings = [ { name = "APPLICATIONINSIGHTS_ROLE_NAME" value = "institution_send_mail_scheduler", + }, + { + name = "STORAGE_CONTAINER_CONTRACT" + value = "selc-p-contracts-blob" + }, + { + name = "MAIL_DESTINATION_TEST_ADDRESS" + value = "pectest@pec.pagopa.it" + }, + { + name = "MAIL_SERVER_HOST" + value = "smtps.pec.aruba.it" + }, + { + name = "MAIL_SERVER_PORT" + value = "465" + }, + { + name = "MAIL_TEMPLATE_USERSLIST_NOTIFICATION_PATH" + value = "contracts/template/mail/users-list-notification/1.0.0.json" } ] secrets_names = { - + "MONGODB-CONNECTION-STRING" = "mongodb-connection-string" + "BLOB-STORAGE-CONTRACT-CONNECTION-STRING" = "blob-storage-contract-connection-string" } diff --git a/infra/container_apps/institution-send-mail-scheduler/env/uat/terraform.tfvars b/infra/container_apps/institution-send-mail-scheduler/env/uat/terraform.tfvars index eba45d1..6f63d5a 100644 --- a/infra/container_apps/institution-send-mail-scheduler/env/uat/terraform.tfvars +++ b/infra/container_apps/institution-send-mail-scheduler/env/uat/terraform.tfvars @@ -27,10 +27,31 @@ app_settings = [ { name = "APPLICATIONINSIGHTS_ROLE_NAME" value = "institution_send_mail_scheduler", + }, + { + name = "STORAGE_CONTAINER_CONTRACT" + value = "selc-u-contracts-blob" + }, + { + name = "MAIL_DESTINATION_TEST_ADDRESS" + value = "pectest@pec.pagopa.it" + }, + { + name = "MAIL_SERVER_HOST" + value = "smtps.pec.aruba.it" + }, + { + name = "MAIL_SERVER_PORT" + value = "465" + }, + { + name = "MAIL_TEMPLATE_USERSLIST_NOTIFICATION_PATH" + value = "contracts/template/mail/users-list-notification/1.0.0.json" } ] secrets_names = { - + "MONGODB-CONNECTION-STRING" = "mongodb-connection-string" + "BLOB-STORAGE-CONTRACT-CONNECTION-STRING" = "blob-storage-contract-connection-string" } \ No newline at end of file