diff --git a/docs/devguide/docs/configuration.md b/docs/devguide/docs/configuration.md index 31c364ec8..00fdc245e 100644 --- a/docs/devguide/docs/configuration.md +++ b/docs/devguide/docs/configuration.md @@ -90,4 +90,6 @@ Additional parameters for the following chosen databases: | SMTP_PORT | smtp_server.port | SMTP port number | ✓ | | | SMTP_USERNAME | smtp_server.username | SMTP username | ✓ | | | SMTP_PASSWORD | smtp_server.password | SMTP password | ✓ | | -| SMTP_TIMEOUT | smtp_server.timeout | timeout to SMTP server in milliseconds | ✓ | | +| SMTP_TIMEOUT | smtp_server.timeout | timeout to SMTP server in milliseconds | ✓ | 200 | +| SMTP_SECURE | smtp_server.secure | if true the connection will use TLS when connecting to server. [Nodemailer SMTP options](https://nodemailer.com/smtp/) | ✓ | false | +| SMTP_REJECT_UNAUTH_CERTS | smtp_server.rejectUnauthCerts | should fail or succeed on unauthorized certificate | ✓ | false | diff --git a/src/configManager/helpers/configDataMap.js b/src/configManager/helpers/configDataMap.js index e20ca026d..a3ffc1388 100644 --- a/src/configManager/helpers/configDataMap.js +++ b/src/configManager/helpers/configDataMap.js @@ -22,7 +22,9 @@ let configDataMap = { port: process.env.SMTP_PORT, username: process.env.SMTP_USERNAME, password: process.env.SMTP_PASSWORD, - timeout: process.env.SMTP_TIMEOUT || 200 + timeout: process.env.SMTP_TIMEOUT || 200, + secure: process.env.SMTP_SECURE || false, + rejectUnauthCerts: process.env.SMTP_REJECT_UNAUTH_CERTS || false }), type: 'json' } diff --git a/src/reports/models/reportEmailSender.js b/src/reports/models/reportEmailSender.js index 054cc7ddd..f7358e71c 100644 --- a/src/reports/models/reportEmailSender.js +++ b/src/reports/models/reportEmailSender.js @@ -51,9 +51,13 @@ async function createSMTPClient(configSmtp) { port: configSmtp.port, host: configSmtp.host, connectionTimeout: configSmtp.timeout, + secure: configSmtp.secure, auth: { user: configSmtp.username, pass: configSmtp.password + }, + tls: { + rejectUnauthorized: configSmtp.rejectUnauthCerts } }; @@ -102,4 +106,4 @@ function generateReportFromTemplate(testName, testInfo, grafanaUrl, aggregatedRe let compiledTemplate = _.template(template); let html = compiledTemplate(emailVars); return html; -} \ No newline at end of file +} diff --git a/tests/unit-tests/configManager/configHandler-test.js b/tests/unit-tests/configManager/configHandler-test.js index af2bf192e..b38f6657b 100644 --- a/tests/unit-tests/configManager/configHandler-test.js +++ b/tests/unit-tests/configManager/configHandler-test.js @@ -10,15 +10,19 @@ const configConstants = require('../../../src/common/consts').CONFIG; let manager; +const defaultSmtpServerConfig = { + timeout: 200, + rejectUnauthCerts: false, + secure: false +}; + const defaultConfig = { delay_runner_ms: 0, job_platform: 'DOCKER', runner_docker_image: 'zooz/predator-runner:latest', runner_cpu: 1, runner_memory: 256, - smtp_server: { - timeout: 200 - }, + smtp_server: Object.assign({}, defaultSmtpServerConfig), minimum_wait_for_delayed_report_status_update_in_ms: 30000 }; @@ -28,9 +32,7 @@ const defaultConfigNotEscaped = { runner_docker_image: 'zooz/predator-runner:latest', runner_cpu: 1, runner_memory: 256, - smtp_server: { - timeout: 200 - }, + smtp_server: Object.assign({}, defaultSmtpServerConfig), minimum_wait_for_delayed_report_status_update_in_ms: 30000 }; @@ -74,9 +76,7 @@ const resultAfterConvert = { grafana_url: 'test_grafana_url', runner_cpu: 2, runner_memory: 256, - smtp_server: { - timeout: 200 - }, + smtp_server: Object.assign({}, defaultSmtpServerConfig), minimum_wait_for_delayed_report_status_update_in_ms: 30000 }; diff --git a/tests/unit-tests/configManager/configHandlerEnvVaribles-test.js b/tests/unit-tests/configManager/configHandlerEnvVaribles-test.js index 44912c8cd..e8a44184d 100644 --- a/tests/unit-tests/configManager/configHandlerEnvVaribles-test.js +++ b/tests/unit-tests/configManager/configHandlerEnvVaribles-test.js @@ -21,6 +21,8 @@ describe('Manager config with env variables', function () { process.env.SMTP_PORT = 'smtp_port_test'; process.env.SMTP_USERNAME = 'smtp_username_test'; process.env.SMTP_PASSWORD = 'smtp_password_test'; + process.env.SMTP_REJECT_UNAUTH_CERTS = true; + process.env.SMTP_SECURE = true; process.env.SMTP_TIMEOUT = '500'; process.env.RUNNER_MEMORY = '20'; process.env.RUNNER_CPU = '0.35'; @@ -54,7 +56,10 @@ describe('Manager config with env variables', function () { 'port': 'smtp_port_test', 'username': 'smtp_username_test', 'password': 'smtp_password_test', - 'timeout': '500' + 'timeout': '500', + 'rejectUnauthCerts': 'true', + 'secure': 'true' + }); }); });