summaryrefslogtreecommitdiffstats
path: root/SendGrid/Tests/Transport/TestSMTP.cs
blob: e0e4fe553652ea1cf7ee978311c415885902b5a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System;
using System.Net;
using System.Net.Mail;
using Moq;
using NUnit.Framework;
using SendGridMail;
using SendGridMail.Transport;

namespace Tests.Transport
{
    [TestFixture]
    public class TestSMTP
    {
        [Test]
        public void TestDeliver()
        {
            var mockMessage = new Mock<ISendGrid>();
            var mime = new MailMessage("test-from@sendgrid.com", "test-to@sendgrid.com", "this is a test", "it is only a test");
            mockMessage.Setup(foo => foo.CreateMimeMessage()).Returns(mime);
            var message = mockMessage.Object;

            var mockClient = new Mock<SMTP.ISmtpClient>();
            mockClient.Setup(foo => foo.Send(mime));
            var client = mockClient.Object;
            var credentials = new NetworkCredential("username", "password");
            var test = SMTP.GenerateInstance(client, credentials);
            test.Deliver(message);

            mockClient.Verify(foo => foo.Send(mime), Times.Once());
            mockMessage.Verify(foo => foo.CreateMimeMessage(), Times.Once());
        }

        [Test]
        public void TestConstructor()
        {
            //Test on defaults of port 25 and 
            var mock = new Mock<SMTP.ISmtpClient>();
            mock.SetupProperty(foo => foo.EnableSsl);
            var client = mock.Object;
            var credentials = new NetworkCredential("username", "password");
            var test = SMTP.GenerateInstance(client, credentials);
            mock.Verify(foo => foo.EnableSsl, Times.Never());

            mock = new Mock<SMTP.ISmtpClient>();
            mock.SetupProperty(foo => foo.EnableSsl);
            client = mock.Object;
            credentials = new NetworkCredential("username", "password");
            test = SMTP.GenerateInstance(client, credentials, port:SMTP.SslPort);
            mock.VerifySet(foo => foo.EnableSsl = true);

            mock = new Mock<SMTP.ISmtpClient>();
            mock.SetupProperty(foo => foo.EnableSsl);
            client = mock.Object;
            credentials = new NetworkCredential("username", "password");
            try
            {
                test = SMTP.GenerateInstance(client, credentials, port: SMTP.TlsPort);
                Assert.Fail("should have thrown an unsupported port exception");
            }
            catch (NotSupportedException ex)
            {
                Assert.AreEqual("TLS not supported", ex.Message);
            }
            
            
        }
    }
}