public static async Task ExecuteAsync___Should_return_SendEmailResponse_with_SendEmailResult_FailedToAuthenticateWithServer___When_when_credentials_are_invalid() { // Arrange var smtpServerConnectionDefinition = new SmtpServerConnectionDefinition("email-smtp.us-east-1.amazonaws.com", 587, SecureConnectionMethod.StartTls, "username", "password"); var sendEmailRequest = A.Dummy <SendEmailRequest>(); var operation = new SendEmailOp(sendEmailRequest); var protocol = new SendEmailProtocol(smtpServerConnectionDefinition); // Act var actual = await protocol.ExecuteAsync(operation); // Assert actual.SendEmailResult.AsTest().Must().BeEqualTo(SendEmailResult.FailedToAuthenticateWithServer); }
public static async Task ExecuteAsync___Should_return_SendEmailResponse_with_SendEmailResult_FailedToConnectToServer___When_when_server_does_not_exist() { // Arrange var smtpServerConnectionDefinition = A.Dummy <SmtpServerConnectionDefinition>(); var sendEmailRequest = A.Dummy <SendEmailRequest>(); var operation = new SendEmailOp(sendEmailRequest); var protocol = new SendEmailProtocol(smtpServerConnectionDefinition); // Act var actual = await protocol.ExecuteAsync(operation); // Assert actual.SendEmailResult.AsTest().Must().BeEqualTo(SendEmailResult.FailedToConnectToServer); }
public static async Task ExecuteAsync___Should_return_SendEmailResponse_with_SendEmailResult_FailedToAddParticipantsToEmail___When_SendEmailRequest_EmailParticipants_contains_malformed_email_address() { // Arrange var smtpServerConnectionDefinition = A.Dummy <SmtpServerConnectionDefinition>(); var emailParticipants = new EmailParticipants( new EmailMailbox("*****@*****.**"), new[] { new EmailMailbox("bad-email-address") }); var emailContent = A.Dummy <EmailContent>(); var sendEmailRequest = new SendEmailRequest(emailParticipants, emailContent); var operation = new SendEmailOp(sendEmailRequest); var protocol = new SendEmailProtocol(smtpServerConnectionDefinition); // Act var actual = await protocol.ExecuteAsync(operation); // Assert actual.SendEmailResult.AsTest().Must().BeEqualTo(SendEmailResult.FailedToAddParticipantsToEmail); }
public static async Task ExecuteAsync___Should_send_email_and_return_SendEmailResponse_with_SendEmailResult_Success___When_server_connection_is_well_formed() { // Arrange var smtpServerConnectionDefinition = new SmtpServerConnectionDefinition( "HOST_NAME_HERE", 587, SecureConnectionMethod.StartTls, "USERNAME_HERE", "PASSWORD_HERE"); var emailParticipants = new EmailParticipants( new EmailMailbox("FROM_ADDRESS_HERE"), new[] { new EmailMailbox("TO_ADDRESS_HERE") }, new EmailMailbox[] { }, new EmailMailbox[] { }, new EmailMailbox[] { }); const string heartFileName = "heart.png"; const string documentFileName = "document.pdf"; var heartFileBytes = AssemblyHelper.ReadEmbeddedResourceAsBytes(heartFileName); var heartAttachment = new EmailAttachment(heartFileBytes, heartFileName, MediaType.ImagePng); var documentFileBytes = AssemblyHelper.ReadEmbeddedResourceAsBytes(documentFileName); var documentAttachment = new EmailAttachment(documentFileBytes, documentFileName, MediaType.ApplicationPdf); const string heartContentId = "heart-content-id"; var emailContent = new EmailContent( "SUBJECT_LINE_HERE", "this is some plain text", $@"<table style=""border: solid 1px #e9e9e9;""> <tr> <td>A1</td> <td>B1</td> <td>C1</td> </tr> <tr> <td>A2</td> <td><img src=""cid:{heartContentId}""></td> <td>C2</td> </tr> <tr> <td>A3</td> <td>B3</td> <td>C3</td> </tr> </table>", new EmailAttachment[] { documentAttachment, }, new Dictionary <string, EmailAttachment> { { heartContentId, heartAttachment }, }, null, null); var sendEmailRequest = new SendEmailRequest(emailParticipants, emailContent); var operation = new SendEmailOp(sendEmailRequest); var protocol = new SendEmailProtocol(smtpServerConnectionDefinition); // Act var actual = await protocol.ExecuteAsync(operation); // Assert actual.SendEmailResult.AsTest().Must().BeEqualTo(SendEmailResult.Success); }