public void WhenSmtpClientFailsToSendThenErrorStatusReturned() { using (ShimsContext.Create()) { var emailInfo = new EmailInformation { }; ShimMailAddress.ConstructorStringString = (@this, addr, name) => { new ShimMailAddress(@this); }; int emailSendCalled = 0; ShimSmtpClient.Constructor = @this => { var shim = new ShimSmtpClient(@this); shim.SendMailMessage = e => { ++emailSendCalled; throw new SmtpException("Error sending email."); }; }; ShimMailMessage.Constructor = @this => { var msg = new ShimMailMessage(@this); msg.FromSetMailAddress = mailAddr => { }; msg.ToGet = () => new MailAddressCollection(); msg.SubjectSetString = subject => { }; msg.BodySetString = bodyText => { }; msg.IsBodyHtmlSetBoolean = isHtml => { }; }; var sendEmail = new SendEmail(); var status = sendEmail.Send(emailInfo); Assert.AreEqual(1, emailSendCalled); Assert.IsNotNull(status); Assert.AreEqual(false, status.WasSent); Assert.AreEqual("Error sending email.", status.ErrorMessage); } }
public void WhenSmtpClientSendRequestedThenMailMessageValuesArePopulatedCorrectly() { using (ShimsContext.Create()) { var emailInfo = new EmailInformation { FromAddress = "*****@*****.**", FromName = "From Name", ToAddress = "*****@*****.**", ToName = "To Name", Subject = "Email Subject", MessageText = "Email Body", IsHtmlMessage = false, }; int mailAddrCalled = 0; ShimMailAddress.ConstructorStringString = (@this, addr, name) => { new ShimMailAddress(@this); switch (mailAddrCalled++) { case 0: Assert.AreEqual("*****@*****.**", addr); Assert.AreEqual("From Name", name); break; case 1: Assert.AreEqual("*****@*****.**", addr); Assert.AreEqual("To Name", name); break; } }; ShimSmtpClient.Constructor = @this => { var shim = new ShimSmtpClient(@this); shim.SendMailMessage = e => { }; }; int fromCalled = 0; int toCalled = 0; int subjectCalled = 0; int bodyCalled = 0; int isHtmlCalled = 0; ShimMailMessage.Constructor = @this => { var msg = new ShimMailMessage(@this); msg.FromSetMailAddress = mailAddr => { ++fromCalled; }; msg.ToGet = () => { ++toCalled; return new MailAddressCollection(); }; msg.SubjectSetString = subject => { Assert.AreEqual("Email Subject", subject); ++subjectCalled; }; msg.BodySetString = bodyText => { Assert.AreEqual("Email Body", bodyText); ++bodyCalled; }; msg.IsBodyHtmlSetBoolean = isHtml => { Assert.AreEqual(false, isHtml); ++isHtmlCalled; }; }; var sendEmail = new SendEmail(); sendEmail.Send(emailInfo); Assert.AreEqual(2, mailAddrCalled); Assert.AreEqual(1, fromCalled); Assert.AreEqual(1, toCalled); Assert.AreEqual(1, subjectCalled); Assert.AreEqual(1, bodyCalled); Assert.AreEqual(1, isHtmlCalled); } }
public void WhenSmtpClientSendRequestedThenMailMessageValuesArePopulatedCorrectly() { using (ShimsContext.Create()) { var emailInfo = new EmailInformation { FromAddress = "*****@*****.**", FromName = "From Name", ToAddress = "*****@*****.**", ToName = "To Name", Subject = "Email Subject", MessageText = "Email Body", IsHtmlMessage = false, }; int mailAddrCalled = 0; ShimMailAddress.ConstructorStringString = (@this, addr, name) => { new ShimMailAddress(@this); switch (mailAddrCalled++) { case 0: Assert.AreEqual("*****@*****.**", addr); Assert.AreEqual("From Name", name); break; case 1: Assert.AreEqual("*****@*****.**", addr); Assert.AreEqual("To Name", name); break; } }; ShimSmtpClient.Constructor = @this => { var shim = new ShimSmtpClient(@this); shim.SendMailMessage = e => { }; }; int fromCalled = 0; int toCalled = 0; int subjectCalled = 0; int bodyCalled = 0; int isHtmlCalled = 0; ShimMailMessage.Constructor = @this => { var msg = new ShimMailMessage(@this); msg.FromSetMailAddress = mailAddr => { ++fromCalled; }; msg.ToGet = () => { ++toCalled; return(new MailAddressCollection()); }; msg.SubjectSetString = subject => { Assert.AreEqual("Email Subject", subject); ++subjectCalled; }; msg.BodySetString = bodyText => { Assert.AreEqual("Email Body", bodyText); ++bodyCalled; }; msg.IsBodyHtmlSetBoolean = isHtml => { Assert.AreEqual(false, isHtml); ++isHtmlCalled; }; }; var sendEmail = new SendEmail(); sendEmail.Send(emailInfo); Assert.AreEqual(2, mailAddrCalled); Assert.AreEqual(1, fromCalled); Assert.AreEqual(1, toCalled); Assert.AreEqual(1, subjectCalled); Assert.AreEqual(1, bodyCalled); Assert.AreEqual(1, isHtmlCalled); } }