public void ReplaceTokens_FromFormData()
        {
            var submitActionDataMock = Substitute.For <ISubmitActionData>();
            var formData             = new FormSubmitContext("fakeButton");
            var today = DateTime.Today;

            formData.Fields = new List <IViewModel>
            {
                new StringInputViewModel {
                    Name = "Text", Value = "Sample Simple Text"
                },
                new StringInputViewModel {
                    Name = "Text2", Value = ""
                },
                new StringInputViewModel {
                    Name = "Text3", Value = null
                },
                new NumberViewModel {
                    Name = "Number", Value = 1.55
                },
                new ListBoxViewModel {
                    Name = "Single List", Value = new List <string> {
                        "Value 1"
                    }
                },
                new ListBoxViewModel {
                    Name = "Multiple List", Value = new List <string> {
                        "Value 1", "Value 2"
                    }
                },
                new DropDownListViewModel {
                    Name = "Dropdown", Value = new List <string> {
                        "Value 1"
                    }
                },
                new CheckBoxViewModel {
                    Name = "Checkbox", Value = true
                },
                new CheckBoxListViewModel {
                    Name = "Checkbox List", Value = new List <string> {
                        "Check 1", "Check 3"
                    }
                },
                new DateViewModel {
                    Name = "Date", Value = today
                }
            };

            var tokenText =
                "[Text]; [Text2]; [Text3]; [Number]; [Single List]; [Multiple List]; [Dropdown]; [Checkbox]; [Checkbox List]; [Date]; This should not be replaced.";

            var expectedText =
                $"Sample Simple Text; ; ; 1.55; Value 1; Value 1, Value 2; Value 1; True; Check 1, Check 3; {today}; This should not be replaced.";

            var invokeObj    = new InvokeSendEmailAction(submitActionDataMock);
            var replacedText = invokeObj.InvokeReplaceTokens(tokenText, formData.Fields);

            Assert.Equal(expectedText, replacedText);
        }
        public void AddEmailAddresses_AllInvalidAddresses()
        {
            var submitActionDataMock = Substitute.For <ISubmitActionData>();
            var mailMessage          = new MailMessage();
            var fieldContent         = "invalidaddress; anotherinvalid";

            var invokeObj      = new InvokeSendEmailAction(submitActionDataMock);
            var addressesAdded = invokeObj.InvokeAddEmailAddresses(fieldContent, "To", mailMessage);

            Assert.False(addressesAdded);
        }
        public void AddEmailAddresses_WithValidAddresses()
        {
            var submitActionDataMock = Substitute.For <ISubmitActionData>();
            var mailMessage          = new MailMessage();
            var fieldContent         = "[email protected]; invalid; [email protected]";

            var invokeObj      = new InvokeSendEmailAction(submitActionDataMock);
            var addressesAdded = invokeObj.InvokeAddEmailAddresses(fieldContent, "To", mailMessage);

            Assert.True(addressesAdded);
        }
        public void GetSmtpClient_ConfigInPatch()
        {
            using (SetUpSettings())
            {
                var submitActionDataMock = Substitute.For <ISubmitActionData>();
                var invokeObj            = new InvokeSendEmailAction(submitActionDataMock);

                var smtpClient = invokeObj.InvokeGetSmtpClient(new CustomSmtpModel());

                Assert.Equal("smtp.office365.com", smtpClient.Host);
                Assert.False(smtpClient.EnableSsl);
                Assert.Equal(587, smtpClient.Port);
            }
        }
        public void GetSmtpClient_ConfigInField()
        {
            using (SetUpSettings())
            {
                var fieldContent =
                    "<Host>smtp.test.com</Host><Port>80</Port><Login>[email protected]</Login><Password>password</Password><EnableSsl>true</EnableSsl>";

                var submitActionDataMock = Substitute.For <ISubmitActionData>();
                var invokeObj            = new InvokeSendEmailAction(submitActionDataMock);

                var smtpData   = invokeObj.InvokeParseSmtpSettings(fieldContent);
                var smtpClient = invokeObj.InvokeGetSmtpClient(smtpData);

                Assert.Equal("smtp.test.com", smtpClient.Host);
                Assert.True(smtpClient.EnableSsl);
                Assert.Equal(80, smtpClient.Port);
            }
        }