Exemplo n.º 1
0
        public async Task Test_SendMail_When_Accepted_Then_ReturnMailerSendEmailResponseWithMessageId()
        {
            IDictionary <string, string[]> headers = new Dictionary <string, string[]>(StringComparer.OrdinalIgnoreCase)
            {
                { "X-Message-Id", new string[] { "messageid" } }
            };

            var apiToken = "my token";
            var handler  = new MockHttpMessageHandler(HttpStatusCode.Accepted, responseContent: null, responseHeaders: headers);

            IMailerSendEmailClient client = new MailerSendEmailClient(new MockHttpClient(handler), apiToken);

            var parameters = new MailerSendEmailParameters();

            parameters
            .WithFrom("*****@*****.**", "Sender")
            .WithTo("*****@*****.**")
            .WithSubject("Hi!")
            .WithHtmlBody("this is a test");

            var response = await client.SendEmailAsync(parameters).ConfigureAwait(false);

            response.Should().NotBeNull();
            response.MessageId.Should().Be("messageid");
            response.Message.Should().BeNullOrEmpty();
        }
Exemplo n.º 2
0
        public async Task Test_SendMail_When_UnprocessableEntity_Then_ReturnMailerSendEmailResponseWithValidationErrorMessage()
        {
            var apiToken = "my token";
            var handler  = new MockHttpMessageHandler(HttpStatusCode.UnprocessableEntity, responseContent: new
            {
                message = "The given data was invalid.",
                errors  = new
                {
                    fromemail = new string[] {
                        "The from.email must be verified.",
                    },
                },
            });

            IMailerSendEmailClient client = new MailerSendEmailClient(new MockHttpClient(handler), apiToken);

            var parameters = new MailerSendEmailParameters();

            parameters
            .WithFrom("invalidemail", "Sender")
            .WithTo("*****@*****.**")
            .WithSubject("Hi!")
            .WithHtmlBody("this is a test");

            var response = await client.SendEmailAsync(parameters).ConfigureAwait(false);

            response.Should().NotBeNull();
            response.Message.Should().Be("The given data was invalid.");
            response.Errors.Should().NotBeEmpty();
            response.Errors.Should().ContainKey("fromemail");
            response.Errors["fromemail"].Should().Contain("The from.email must be verified.");
        }
Exemplo n.º 3
0
        public void Test_SendMail_When_UnprocessableEntityAndUnknownBody_Then_ThrowApiException()
        {
            var apiToken = "my token";
            var handler  = new MockHttpMessageHandler(HttpStatusCode.UnprocessableEntity, responseContent: null);
            IMailerSendEmailClient client = new MailerSendEmailClient(new MockHttpClient(handler), apiToken);

            var parameters = new MailerSendEmailParameters();

            parameters
            .WithTo("*****@*****.**")
            .WithSubject("Hi!")
            .WithHtmlBody("this is a test");

            Func <Task> action = async() => { await client.SendEmailAsync(parameters).ConfigureAwait(false); };

            action.Should()
            .Throw <ApiException>()
            .WithMessage("Unexpected response.\n\nStatus: 422\nResponse: \n");
        }
Exemplo n.º 4
0
        public void Test_SendMail_When_ServerError_Then_ThrowApiException()
        {
            var apiToken = "my token";
            var handler  = new MockHttpMessageHandler(HttpStatusCode.InternalServerError);
            IMailerSendEmailClient client = new MailerSendEmailClient(new MockHttpClient(handler), apiToken);

            var parameters = new MailerSendEmailParameters();

            parameters
            .WithFrom("*****@*****.**", "Sender")
            .WithTo("*****@*****.**")
            .WithSubject("Hi!")
            .WithHtmlBody("this is a test");

            Func <Task> action = async() => { await client.SendEmailAsync(parameters).ConfigureAwait(false); };

            action.Should()
            .Throw <ApiException>()
            .WithMessage("Unexpected response HTTP status code (500).\n\nStatus: 500\nResponse: \n");
        }