Пример #1
0
        public void Alternative_views_are_added_to_MailMessage()
        {
            var input = @"
To: [email protected]
From: [email protected]
Subject: Test Subject
Views: Text, Html";
            var text  = @"Content-Type: text/plain

Hello, World!";
            var html  = @"Content-Type: text/html

<p>Hello, World!</p>";

            var email    = new Email("Test");
            var renderer = new Mock <IEmailViewRenderer>();

            renderer.Setup(r => r.Render(email, "Test.Text")).Returns(text);
            renderer.Setup(r => r.Render(email, "Test.Html")).Returns(html);

            var parser = new EmailParser(renderer.Object);

            using (var message = parser.Parse(input, email))
            {
                message.AlternateViews[0].ContentType.ShouldEqual(new ContentType("text/plain"));
                var textContent = new StreamReader(message.AlternateViews[0].ContentStream).ReadToEnd();
                textContent.ShouldEqual("Hello, World!");

                message.AlternateViews[1].ContentType.ShouldEqual(new ContentType("text/html"));
                var htmlContent = new StreamReader(message.AlternateViews[1].ContentStream).ReadToEnd();
                htmlContent.ShouldEqual("<p>Hello, World!</p>");
            }
        }
Пример #2
0
        public void Exception_throw_when_alternative_view_is_missing_Content_Type_header()
        {
            var input = @"
To: [email protected]
From: [email protected]
Subject: Test Subject
Views: Text, Html";
            var text  = @"incorrect: header

Hello, World!";
            var html  = @"incorrect: header

<p>Hello, World!</p>";

            var email    = new Email("Test");
            var renderer = new Mock <IEmailViewRenderer>();

            renderer.Setup(r => r.Render(email, "Test.Text")).Returns(text);
            renderer.Setup(r => r.Render(email, "Test.Html")).Returns(html);

            var parser = new EmailParser(renderer.Object);

            Assert.Throws <Exception>(delegate
            {
                parser.Parse(input, email);
            });
        }
Пример #3
0
        public void ContentType_determined_by_view_name_when_alternative_view_is_missing_Content_Type_header()
        {
            var input = @"
To: [email protected]
From: [email protected]
Subject: Test Subject
Views: Text, Html";
            var text  = @"
Hello, World!";
            var html  = @"
<p>Hello, World!</p>";

            var email    = new Email("Test");
            var renderer = new Mock <IEmailViewRenderer>();

            renderer.Setup(r => r.Render(email, "Test.Text")).Returns(text);
            renderer.Setup(r => r.Render(email, "Test.Html")).Returns(html);

            var parser = new EmailParser(renderer.Object);

            using (var message = parser.Parse(input, email))
            {
                message.AlternateViews[0].ContentType.MediaType.ShouldEqual("text/plain");
                message.AlternateViews[1].ContentType.MediaType.ShouldEqual("text/html");
            }
        }
Пример #4
0
        public void Parse_creates_MailMessage_with_headers_and_body()
        {
            var input    = @"
To: [email protected]
From: [email protected]
CC: [email protected]
Bcc: [email protected]
Reply-To: [email protected]
X-Test: test
Subject: Test Subject

Hello, World!";
            var renderer = new Mock <IEmailViewRenderer>();
            var parser   = new EmailParser(renderer.Object);

            using (var message = parser.Parse(input, new Email("Test")))
            {
                message.To[0].Address.ShouldEqual("*****@*****.**");
                message.From.Address.ShouldEqual("*****@*****.**");
                message.CC[0].Address.ShouldEqual("*****@*****.**");
                message.Bcc[0].Address.ShouldEqual("*****@*****.**");
                message.ReplyToList[0].Address.ShouldEqual("*****@*****.**");
                message.Subject.ShouldEqual("Test Subject");
                message.Headers["X-Test"].ShouldEqual("test");
                message.Body.ShouldEqual("Hello, World!");
                message.IsBodyHtml.ShouldBeFalse();
            }
        }
Пример #5
0
        public void Given_base_view_is_full_path_Then_alternative_views_are_correctly_looked_up()
        {
            var input = @"
To: [email protected]
From: [email protected]
Subject: Test Subject
Views: Text, Html";
            var text  = @"Content-Type: text/plain

Hello, World!";
            var html  = @"Content-Type: text/html

<p>Hello, World!</p>";

            var email    = new Email("~/Views/Emails/Test.cshtml");
            var renderer = new Mock <IEmailViewRenderer>();

            renderer.Setup(r => r.Render(email, "~/Views/Emails/Test.Text.cshtml")).Returns(text);
            renderer.Setup(r => r.Render(email, "~/Views/Emails/Test.Html.cshtml")).Returns(html);

            var parser = new EmailParser(renderer.Object);

            using (var message = parser.Parse(input, email))
            {
                message.AlternateViews[0].ContentType.ShouldEqual(new ContentType("text/plain; charset=utf-16"));
                var textContent = new StreamReader(message.AlternateViews[0].ContentStream).ReadToEnd();
                textContent.ShouldEqual("Hello, World!");

                message.AlternateViews[1].ContentType.ShouldEqual(new ContentType("text/html; charset=utf-16"));
                var htmlContent = new StreamReader(message.AlternateViews[1].ContentStream).ReadToEnd();
                htmlContent.ShouldEqual("<p>Hello, World!</p>");
            }
        }
Пример #6
0
        public void Priority_header_can_be_set_automatically_from_MailPriorityEnum()
        {
            dynamic email = new Email("Test");

            email.Priority = MailPriority.High;
            var parser = new EmailParser(Mock.Of <IEmailViewRenderer>());

            using (var message = parser.Parse("body", (Email)email))
            {
                message.Priority = MailPriority.High;
            }
        }
Пример #7
0
        public void Subject_header_can_be_set_automatically()
        {
            dynamic email = new Email("Test");

            email.Subject = "test";
            var parser = new EmailParser(Mock.Of <IEmailViewRenderer>());

            using (var message = parser.Parse("body", (Email)email))
            {
                message.Subject.ShouldEqual("test");
            }
        }
Пример #8
0
        public void ReplyTo_header_can_be_set_automatically()
        {
            dynamic email = new Email("Test");

            email.ReplyTo = "*****@*****.**";
            var parser = new EmailParser(Mock.Of <IEmailViewRenderer>());

            using (var message = parser.Parse("body", (Email)email))
            {
                message.ReplyToList[0].Address.ShouldEqual("*****@*****.**");
            }
        }
Пример #9
0
        public void From_header_can_be_set_automatically_as_MailAddress()
        {
            dynamic email = new Email("Test");

            email.From = new MailAddress("*****@*****.**");
            var parser = new EmailParser(Mock.Of <IEmailViewRenderer>());

            using (var message = parser.Parse("body", (Email)email))
            {
                message.From.ShouldEqual(new MailAddress("*****@*****.**"));
            }
        }
Пример #10
0
        public void Email_address_can_include_display_name()
        {
            var input  = @"To: ""John Smith"" <*****@*****.**>
From: [email protected]
Subject: test

message";
            var parser = new EmailParser(Mock.Of <IEmailViewRenderer>());
            var email  = new Email("Test");

            using (var message = parser.Parse(input, email))
            {
                message.To[0].Address.ShouldEqual("*****@*****.**");
                message.To[0].DisplayName.ShouldEqual("John Smith");
            }
        }
Пример #11
0
        public void Can_detect_HTML_body()
        {
            var input    = @"
To: [email protected]
From: [email protected]
Subject: Test Subject

<p>Hello, World!</p>";
            var renderer = new Mock <IEmailViewRenderer>();
            var parser   = new EmailParser(renderer.Object);

            using (var message = parser.Parse(input, new Email("Test")))
            {
                message.Body.ShouldEqual("<p>Hello, World!</p>");
                message.IsBodyHtml.ShouldBeTrue();
            }
        }
Пример #12
0
        public void Parse_creates_email_addresses_with_display_name()
        {
            var input    = @"
To: John H Smith [email protected]
From: [email protected]
Subject: Test Subject

Hello, World!";
            var renderer = new Mock <IEmailViewRenderer>();
            var parser   = new EmailParser(renderer.Object);

            using (var message = parser.Parse(input, new Email("Test")))
            {
                message.To[0].Address.ShouldEqual("*****@*****.**");
                message.To[0].DisplayName.ShouldEqual("John H Smith");
            }
        }
Пример #13
0
        public void Attachments_are_added_to_MailMessage()
        {
            var input = @"
To: [email protected]
From: [email protected]
Subject: Test Subject

Hello, World!";
            var email = new Email("Test");

            email.Attach(new Attachment(new MemoryStream(), "name"));
            var parser = new EmailParser(Mock.Of <IEmailViewRenderer>());

            var message = parser.Parse(input, email);

            message.Attachments.Count.ShouldEqual(1);
        }
Пример #14
0
        public void Can_parse_multiple_email_addresses_in_header()
        {
            var input    = @"
To: [email protected]
From: [email protected]
CC: [email protected], [email protected], [email protected]
Subject: Test Subject

Hello, World!";
            var renderer = new Mock <IEmailViewRenderer>();
            var parser   = new EmailParser(renderer.Object);

            using (var message = parser.Parse(input, new Email("Test")))
            {
                message.CC[0].Address.ShouldEqual("*****@*****.**");
                message.CC[1].Address.ShouldEqual("*****@*****.**");
                message.CC[2].Address.ShouldEqual("*****@*****.**");
            }
        }
Пример #15
0
        public void Do_not_implicitly_add_To_from_model_when_set_in_view()
        {
            var     input  = @"To: [email protected]
From: [email protected]
Subject: test

message";
            var     parser = new EmailParser(Mock.Of <IEmailViewRenderer>());
            dynamic email  = new Email("Test");

            email.To = "*****@*****.**";
            using (var message = parser.Parse(input, (Email)email))
            {
                // Check for bug reported here: http://aboutcode.net/2010/11/17/going-postal-generating-email-with-aspnet-mvc-view-engines.html#comment-153486994
                // Should not add anything extra to the 'To' list.
                message.To.Count.ShouldEqual(1);
                message.To[0].Address.ShouldEqual("*****@*****.**");
            }
        }
Пример #16
0
        public void Can_parse_empty_header_fields()
        {
            var input = @"To: [email protected]
From: [email protected]
CC: 
Bcc:
Reply-To:  
Subject: test

message";

            var parser = new EmailParser(Mock.Of <IEmailViewRenderer>());
            var email  = new Email("Test");

            using (var message = parser.Parse(input, email)) {
                message.To.Count.ShouldEqual(1);
                message.To[0].Address.ShouldEqual("*****@*****.**");
            }
        }
Пример #17
0
        public void Repeating_CC_adds_each_email_address_to_list()
        {
            var input    = @"
To: [email protected]
From: [email protected]
CC: [email protected]
CC: [email protected]
CC: [email protected]
Subject: Test Subject

Hello, World!";
            var renderer = new Mock <IEmailViewRenderer>();
            var parser   = new EmailParser(renderer.Object);

            using (var message = parser.Parse(input, new Email("Test")))
            {
                message.CC[0].Address.ShouldEqual("*****@*****.**");
                message.CC[1].Address.ShouldEqual("*****@*****.**");
                message.CC[2].Address.ShouldEqual("*****@*****.**");
            }
        }
Пример #18
0
        public void Can_parse_reply_to()
        {
            var input  = @"To: [email protected]
From: [email protected]
Reply-To: [email protected]
Subject: test

message";
            var parser = new EmailParser(Mock.Of <IEmailViewRenderer>());
            var email  = new Email("Test");

            using (var message = parser.Parse(input, email))
            {
                message.ReplyToList[0].Address.ShouldEqual("*****@*****.**");

                // Check for bug reported here: http://aboutcode.net/2010/11/17/going-postal-generating-email-with-aspnet-mvc-view-engines.html#comment-153486994
                // Should not add anything extra to the 'To' list.
                message.To.Count.ShouldEqual(1);
                message.To[0].Address.ShouldEqual("*****@*****.**");
            }
        }