From fd0a08445283e3eb4baed1631d3c165338777da5 Mon Sep 17 00:00:00 2001 From: fahadash Date: Fri, 30 Oct 2020 09:52:23 -0400 Subject: [PATCH 1/5] Update task.dev.json --- Tasks/emailReportTask/task.dev.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Tasks/emailReportTask/task.dev.json b/Tasks/emailReportTask/task.dev.json index 7f6fc8b9..4488bb31 100644 --- a/Tasks/emailReportTask/task.dev.json +++ b/Tasks/emailReportTask/task.dev.json @@ -75,6 +75,15 @@ "DisableManageLink": "True" }, "groupName": "emailConfiguration" + }, + { + "name": "fromAddress", + "type": "string", + "label": "From", + "defaultValue": "", + "required": false, + "helpMarkDown": "Sender email address.", + "groupName": "emailConfiguration" }, { "name": "toAddress", @@ -231,4 +240,4 @@ "target": "Index.js" } } -} \ No newline at end of file +} From 9c75269b8a63f3f652173a72b5474115ee7e06ff Mon Sep 17 00:00:00 2001 From: fahadash Date: Fri, 30 Oct 2020 09:53:24 -0400 Subject: [PATCH 2/5] Add From Email Address --- Tasks/emailReportTask/task.prod.json | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Tasks/emailReportTask/task.prod.json b/Tasks/emailReportTask/task.prod.json index d2338450..76426087 100644 --- a/Tasks/emailReportTask/task.prod.json +++ b/Tasks/emailReportTask/task.prod.json @@ -76,6 +76,15 @@ }, "groupName": "emailConfiguration" }, + { + "name": "fromAddress", + "type": "string", + "label": "From", + "defaultValue": "", + "required": false, + "helpMarkDown": "Sender email address.", + "groupName": "emailConfiguration" + }, { "name": "toAddress", "type": "string", @@ -231,4 +240,4 @@ "target": "Index.js" } } -} \ No newline at end of file +} From 428f8d33b6583ab25126fe07ee8193bcce76c0a0 Mon Sep 17 00:00:00 2001 From: fahadash Date: Fri, 30 Oct 2020 10:02:36 -0400 Subject: [PATCH 3/5] Add From Address Input key to constants --- Tasks/emailReportTask/config/TaskConstants.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/Tasks/emailReportTask/config/TaskConstants.ts b/Tasks/emailReportTask/config/TaskConstants.ts index f8182ecb..b71909a5 100644 --- a/Tasks/emailReportTask/config/TaskConstants.ts +++ b/Tasks/emailReportTask/config/TaskConstants.ts @@ -7,6 +7,7 @@ export class TaskConstants { public static readonly MAXTESTFAILURESTOSHOW_INPUTKEY = "maxTestFailuresToShow"; public static readonly GROUPTESTSUMMARYBY_INPUTKEY = "groupTestSummaryByStr"; public static readonly INCLUDERESULTS_INPUTKEY = "includeResultsStr"; + public static readonly FROMADDRESS_INPUTKEY = "fromAddress"; public static readonly TOADDRESS_INPUTKEY = "toAddress"; public static readonly CCADDRESS_INPUTKEY = "ccAddress"; public static readonly INCLUDEINTO_INPUTKEY = "includeInToSectionStr"; From 6d2aa679b345bdc397843097f750837057923fcb Mon Sep 17 00:00:00 2001 From: fahadash Date: Fri, 30 Oct 2020 09:52:23 -0400 Subject: [PATCH 4/5] Update model, provider, and configuration to allow a from address --- .../emailReportTask/config/ConfigurationProvider.ts | 6 +++++- Tasks/emailReportTask/config/TaskConstants.ts | 1 + .../emailReportTask/config/mail/MailConfiguration.ts | 12 +++++++++++- .../model/viewmodel/MailAddressViewModel.ts | 4 ++-- Tasks/emailReportTask/task.dev.json | 11 ++++++++++- Tasks/emailReportTask/task.prod.json | 11 ++++++++++- .../tests/__e_to_e_tests__/InvokeTest.ts | 2 +- 7 files changed, 40 insertions(+), 7 deletions(-) diff --git a/Tasks/emailReportTask/config/ConfigurationProvider.ts b/Tasks/emailReportTask/config/ConfigurationProvider.ts index c151d80f..21645bac 100644 --- a/Tasks/emailReportTask/config/ConfigurationProvider.ts +++ b/Tasks/emailReportTask/config/ConfigurationProvider.ts @@ -89,6 +89,10 @@ export class ConfigurationProvider implements IConfigurationProvider { throw new InputError("Email subject not set"); } + // From Address + const fromAddress = tl.getInput(TaskConstants.FROMADDRESS_INPUTKEY, true); + + // Optional inputs const toAddresses = tl.getInput(TaskConstants.TOADDRESS_INPUTKEY, false); const ccAddresses = tl.getInput(TaskConstants.CCADDRESS_INPUTKEY, false); @@ -101,7 +105,7 @@ export class ConfigurationProvider implements IConfigurationProvider { const defaultDomain = tl.getInput(TaskConstants.DEFAULTDOMAIN_INPUTKEY, true); - this.mailConfiguration = new MailConfiguration(mailSubject, toRecipientsConfiguration, ccRecipientsConfiguration, smtpConfig, defaultDomain); + this.mailConfiguration = new MailConfiguration(fromAddress, mailSubject, toRecipientsConfiguration, ccRecipientsConfiguration, smtpConfig, defaultDomain); } private initReportDataConfiguration(): void { diff --git a/Tasks/emailReportTask/config/TaskConstants.ts b/Tasks/emailReportTask/config/TaskConstants.ts index f8182ecb..b71909a5 100644 --- a/Tasks/emailReportTask/config/TaskConstants.ts +++ b/Tasks/emailReportTask/config/TaskConstants.ts @@ -7,6 +7,7 @@ export class TaskConstants { public static readonly MAXTESTFAILURESTOSHOW_INPUTKEY = "maxTestFailuresToShow"; public static readonly GROUPTESTSUMMARYBY_INPUTKEY = "groupTestSummaryByStr"; public static readonly INCLUDERESULTS_INPUTKEY = "includeResultsStr"; + public static readonly FROMADDRESS_INPUTKEY = "fromAddress"; public static readonly TOADDRESS_INPUTKEY = "toAddress"; public static readonly CCADDRESS_INPUTKEY = "ccAddress"; public static readonly INCLUDEINTO_INPUTKEY = "includeInToSectionStr"; diff --git a/Tasks/emailReportTask/config/mail/MailConfiguration.ts b/Tasks/emailReportTask/config/mail/MailConfiguration.ts index d47a9b10..8cfa39f8 100644 --- a/Tasks/emailReportTask/config/mail/MailConfiguration.ts +++ b/Tasks/emailReportTask/config/mail/MailConfiguration.ts @@ -3,13 +3,15 @@ import { SmtpConfiguration } from "./SmtpConfiguration"; export class MailConfiguration { + private fromAddress: string; private mailSubject: string; private toRecipientsConfig: RecipientsConfiguration; private ccRecipientsConfig: RecipientsConfiguration; private smtpConfig: SmtpConfiguration; private defaultDomain: string; - constructor($mailSubject: string, $toRecipientsConfig: RecipientsConfiguration, $ccRecipientsConfig: RecipientsConfiguration, $smtpConfig: SmtpConfiguration, $defaultDomain: string) { + constructor($fromAddress: string, $mailSubject: string, $toRecipientsConfig: RecipientsConfiguration, $ccRecipientsConfig: RecipientsConfiguration, $smtpConfig: SmtpConfiguration, $defaultDomain: string) { + this.fromAddress = $fromAddress; this.mailSubject = $mailSubject; this.toRecipientsConfig = $toRecipientsConfig; this.ccRecipientsConfig = $ccRecipientsConfig; @@ -25,6 +27,14 @@ export class MailConfiguration { return this.defaultDomain; } + /** + * Getter $fromAddress + * @return {string} + */ + public get $fromAddress(): string { + return this.fromAddress; + } + /** * Getter $mailSubject * @return {string} diff --git a/Tasks/emailReportTask/model/viewmodel/MailAddressViewModel.ts b/Tasks/emailReportTask/model/viewmodel/MailAddressViewModel.ts index d3e64757..af807465 100644 --- a/Tasks/emailReportTask/model/viewmodel/MailAddressViewModel.ts +++ b/Tasks/emailReportTask/model/viewmodel/MailAddressViewModel.ts @@ -15,8 +15,8 @@ export class MailAddressViewModel { private defaultDomain: string; - constructor(report: Report, mailConfig: MailConfiguration) { - this.from = mailConfig.$smtpConfig.$userName; + constructor(report: Report, mailConfig: MailConfiguration) { + this.from = StringUtils.isNullOrWhiteSpace(mailConfig.$fromAddress) ? mailConfig.$smtpConfig.$userName : mailConfig.$fromAddress; this.defaultDomain = mailConfig.$defaultDomain; console.log("computing email addresses for to section"); diff --git a/Tasks/emailReportTask/task.dev.json b/Tasks/emailReportTask/task.dev.json index 7f6fc8b9..4488bb31 100644 --- a/Tasks/emailReportTask/task.dev.json +++ b/Tasks/emailReportTask/task.dev.json @@ -75,6 +75,15 @@ "DisableManageLink": "True" }, "groupName": "emailConfiguration" + }, + { + "name": "fromAddress", + "type": "string", + "label": "From", + "defaultValue": "", + "required": false, + "helpMarkDown": "Sender email address.", + "groupName": "emailConfiguration" }, { "name": "toAddress", @@ -231,4 +240,4 @@ "target": "Index.js" } } -} \ No newline at end of file +} diff --git a/Tasks/emailReportTask/task.prod.json b/Tasks/emailReportTask/task.prod.json index d2338450..76426087 100644 --- a/Tasks/emailReportTask/task.prod.json +++ b/Tasks/emailReportTask/task.prod.json @@ -76,6 +76,15 @@ }, "groupName": "emailConfiguration" }, + { + "name": "fromAddress", + "type": "string", + "label": "From", + "defaultValue": "", + "required": false, + "helpMarkDown": "Sender email address.", + "groupName": "emailConfiguration" + }, { "name": "toAddress", "type": "string", @@ -231,4 +240,4 @@ "target": "Index.js" } } -} \ No newline at end of file +} diff --git a/Tasks/emailReportTask/tests/__e_to_e_tests__/InvokeTest.ts b/Tasks/emailReportTask/tests/__e_to_e_tests__/InvokeTest.ts index 6a84199e..1fd16fb9 100644 --- a/Tasks/emailReportTask/tests/__e_to_e_tests__/InvokeTest.ts +++ b/Tasks/emailReportTask/tests/__e_to_e_tests__/InvokeTest.ts @@ -46,7 +46,7 @@ export class MockConfigProvider implements IConfigurationProvider { } getMailConfiguration(): MailConfiguration { - return new MailConfiguration("[{environmentStatus}] {passPercentage} tests passed", + return new MailConfiguration("from@email.com", "[{environmentStatus}] {passPercentage} tests passed", new RecipientsConfiguration("xyz@email.com", false, false, false, false), new RecipientsConfiguration("", false, false, false, false), new SmtpConfiguration(smtpUser, smtpPassword, "smtp.live.com", true), "test.com"); From 8193a4b01418c99c4d8da13fbf863af24dcd4d45 Mon Sep 17 00:00:00 2001 From: fahadash Date: Fri, 3 Jun 2022 02:05:41 -0400 Subject: [PATCH 5/5] Fix extra whitespaces --- Tasks/emailReportTask/config/ConfigurationProvider.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Tasks/emailReportTask/config/ConfigurationProvider.ts b/Tasks/emailReportTask/config/ConfigurationProvider.ts index 21645bac..fff5f132 100644 --- a/Tasks/emailReportTask/config/ConfigurationProvider.ts +++ b/Tasks/emailReportTask/config/ConfigurationProvider.ts @@ -89,9 +89,8 @@ export class ConfigurationProvider implements IConfigurationProvider { throw new InputError("Email subject not set"); } - // From Address - const fromAddress = tl.getInput(TaskConstants.FROMADDRESS_INPUTKEY, true); - + // From Address + const fromAddress = tl.getInput(TaskConstants.FROMADDRESS_INPUTKEY, true); // Optional inputs const toAddresses = tl.getInput(TaskConstants.TOADDRESS_INPUTKEY, false); @@ -170,4 +169,4 @@ export class ConfigurationProvider implements IConfigurationProvider { default: return GroupTestResultsBy.Run; } } -} \ No newline at end of file +}