Example #1
0
        public void TestArgumentExceptions()
        {
            using (var client = new SmtpClient()) {
                var credentials = new NetworkCredential("username", "password");
                var socket      = new Socket(SocketType.Stream, ProtocolType.Tcp);
                var message     = CreateSimpleMessage();
                var sender      = message.From.Mailboxes.FirstOrDefault();
                var recipients  = message.To.Mailboxes.ToList();
                var options     = FormatOptions.Default;
                var empty       = new MailboxAddress[0];

                // Connect
                Assert.Throws <ArgumentNullException> (() => client.Connect((Uri)null));
                Assert.Throws <ArgumentNullException> (async() => await client.ConnectAsync((Uri)null));
                Assert.Throws <ArgumentNullException> (() => client.Connect(null, 25, false));
                Assert.Throws <ArgumentNullException> (async() => await client.ConnectAsync(null, 25, false));
                Assert.Throws <ArgumentException> (() => client.Connect(string.Empty, 25, false));
                Assert.Throws <ArgumentException> (async() => await client.ConnectAsync(string.Empty, 25, false));
                Assert.Throws <ArgumentOutOfRangeException> (() => client.Connect("host", -1, false));
                Assert.Throws <ArgumentOutOfRangeException> (async() => await client.ConnectAsync("host", -1, false));
                Assert.Throws <ArgumentNullException> (() => client.Connect(null, 25, SecureSocketOptions.None));
                Assert.Throws <ArgumentNullException> (async() => await client.ConnectAsync(null, 25, SecureSocketOptions.None));
                Assert.Throws <ArgumentException> (() => client.Connect(string.Empty, 25, SecureSocketOptions.None));
                Assert.Throws <ArgumentException> (async() => await client.ConnectAsync(string.Empty, 25, SecureSocketOptions.None));
                Assert.Throws <ArgumentOutOfRangeException> (() => client.Connect("host", -1, SecureSocketOptions.None));
                Assert.Throws <ArgumentOutOfRangeException> (async() => await client.ConnectAsync("host", -1, SecureSocketOptions.None));

                Assert.Throws <ArgumentNullException> (() => client.Connect(null, "host", 25, SecureSocketOptions.None));
                Assert.Throws <ArgumentException> (() => client.Connect(socket, "host", 25, SecureSocketOptions.None));

                // Authenticate
                Assert.Throws <ArgumentNullException> (() => client.Authenticate(null));
                Assert.Throws <ArgumentNullException> (async() => await client.AuthenticateAsync(null));
                Assert.Throws <ArgumentNullException> (() => client.Authenticate(null, "password"));
                Assert.Throws <ArgumentNullException> (async() => await client.AuthenticateAsync(null, "password"));
                Assert.Throws <ArgumentNullException> (() => client.Authenticate("username", null));
                Assert.Throws <ArgumentNullException> (async() => await client.AuthenticateAsync("username", null));
                Assert.Throws <ArgumentNullException> (() => client.Authenticate(null, credentials));
                Assert.Throws <ArgumentNullException> (async() => await client.AuthenticateAsync(null, credentials));
                Assert.Throws <ArgumentNullException> (() => client.Authenticate(Encoding.UTF8, null));
                Assert.Throws <ArgumentNullException> (async() => await client.AuthenticateAsync(Encoding.UTF8, null));
                Assert.Throws <ArgumentNullException> (() => client.Authenticate(null, "username", "password"));
                Assert.Throws <ArgumentNullException> (async() => await client.AuthenticateAsync(null, "username", "password"));
                Assert.Throws <ArgumentNullException> (() => client.Authenticate(Encoding.UTF8, null, "password"));
                Assert.Throws <ArgumentNullException> (async() => await client.AuthenticateAsync(Encoding.UTF8, null, "password"));
                Assert.Throws <ArgumentNullException> (() => client.Authenticate(Encoding.UTF8, "username", null));
                Assert.Throws <ArgumentNullException> (async() => await client.AuthenticateAsync(Encoding.UTF8, "username", null));

                // Send
                Assert.Throws <ArgumentNullException> (() => client.Send(null));

                Assert.Throws <ArgumentNullException> (() => client.Send(null, message));
                Assert.Throws <ArgumentNullException> (() => client.Send(options, null));

                Assert.Throws <ArgumentNullException> (() => client.Send(message, null, recipients));
                Assert.Throws <ArgumentNullException> (() => client.Send(message, sender, null));
                Assert.Throws <InvalidOperationException> (() => client.Send(message, sender, empty));

                Assert.Throws <ArgumentNullException> (() => client.Send(null, message, sender, recipients));
                Assert.Throws <ArgumentNullException> (() => client.Send(options, message, null, recipients));
                Assert.Throws <ArgumentNullException> (() => client.Send(options, message, sender, null));
                Assert.Throws <InvalidOperationException> (() => client.Send(options, message, sender, empty));

                Assert.Throws <ArgumentNullException> (async() => await client.SendAsync(null));

                Assert.Throws <ArgumentNullException> (async() => await client.SendAsync(null, message));
                Assert.Throws <ArgumentNullException> (async() => await client.SendAsync(options, null));

                Assert.Throws <ArgumentNullException> (async() => await client.SendAsync(message, null, recipients));
                Assert.Throws <ArgumentNullException> (async() => await client.SendAsync(message, sender, null));
                Assert.Throws <InvalidOperationException> (async() => await client.SendAsync(message, sender, empty));

                Assert.Throws <ArgumentNullException> (async() => await client.SendAsync(null, message, sender, recipients));
                Assert.Throws <ArgumentNullException> (async() => await client.SendAsync(options, message, null, recipients));
                Assert.Throws <ArgumentNullException> (async() => await client.SendAsync(options, message, sender, null));
                Assert.Throws <InvalidOperationException> (async() => await client.SendAsync(options, message, sender, empty));

                // Expand
                Assert.Throws <ArgumentNullException> (() => client.Expand(null));
                Assert.Throws <ArgumentException> (() => client.Expand(string.Empty));
                Assert.Throws <ArgumentException> (() => client.Expand("line1\r\nline2"));
                Assert.Throws <ArgumentNullException> (async() => await client.ExpandAsync(null));
                Assert.Throws <ArgumentException> (async() => await client.ExpandAsync(string.Empty));
                Assert.Throws <ArgumentException> (async() => await client.ExpandAsync("line1\r\nline2"));

                // Verify
                Assert.Throws <ArgumentNullException> (() => client.Verify(null));
                Assert.Throws <ArgumentException> (() => client.Verify(string.Empty));
                Assert.Throws <ArgumentException> (() => client.Verify("line1\r\nline2"));
                Assert.Throws <ArgumentNullException> (async() => await client.VerifyAsync(null));
                Assert.Throws <ArgumentException> (async() => await client.VerifyAsync(string.Empty));
                Assert.Throws <ArgumentException> (async() => await client.VerifyAsync("line1\r\nline2"));
            }
        }