Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }