public void TestStartingConnectionWritesWelcome() { var netStream = new MockNetworkStream(); var smtpStream = new SmtpServerStream(netStream); var smtpConnection = new DummySmtpServerConnection(smtpStream, new MailBag(), Substitute.For <IDummySmtpServerConnectionCollection>()); smtpConnection.Start(); var readData = ReadResponseLine(netStream); Assert.That(readData, Is.EqualTo(SmtpServerResponses.Welcome)); }
public void TestSendingRecipientBeforeHello() { var netStream = new MockNetworkStream(); var smtpStream = new SmtpServerStream(netStream); var smtpConnection = new DummySmtpServerConnection(smtpStream, new MailBag(), Substitute.For <IDummySmtpServerConnectionCollection>()); smtpConnection.Start(); ReadResponseLine(netStream); WriteRequest(netStream, SmtpServerRequests.Recipient); var mailResponse = ReadResponseLine(netStream); Assert.That(mailResponse, Is.EqualTo(SmtpServerResponses.BadCommandSequence)); }
public void TestSendingHelloWritesGreeting() { var netStream = new MockNetworkStream(); var smtpStream = new SmtpServerStream(netStream); var smtpConnection = new DummySmtpServerConnection(smtpStream, new MailBag(), Substitute.For <IDummySmtpServerConnectionCollection>()); smtpConnection.Start(); ReadResponseLine(netStream); WriteRequest(netStream, SmtpServerRequests.Hello); var helloResponse = ReadResponseLine(netStream); Assert.That(helloResponse, Is.EqualTo(SmtpServerResponses.Greeting("unit-test"))); }
private void TestWriteToStream(string expectedOutput_, SmtpStreamAction action_) { var memStream = new MemoryStream(); var smtpStream = new SmtpServerStream(memStream); using (smtpStream) { action_(smtpStream); var buffer = new byte[100]; memStream.Seek(0, SeekOrigin.Begin); var readCount = memStream.Read(buffer, 0, buffer.Length); var welcome = Encoding.ASCII.GetString(buffer, 0, readCount); Assert.That(welcome, Is.EqualTo(expectedOutput_)); } }
public void TestSendingDataBeforeMail() { var netStream = new MockNetworkStream(); var smtpStream = new SmtpServerStream(netStream); var smtpConnection = new DummySmtpServerConnection(smtpStream, new MailBag(), Substitute.For <IDummySmtpServerConnectionCollection>()); smtpConnection.Start(); ReadResponseLine(netStream); // Welcome WriteRequest(netStream, SmtpServerRequests.Hello); ReadResponseLine(netStream); // Greeting to hello WriteRequest(netStream, SmtpServerRequests.Data); var dataResponse = ReadResponseLine(netStream); Assert.That(dataResponse, Is.EqualTo(SmtpServerResponses.BadCommandSequence)); }
public void TestReadCommandAsync() { var memStream = new MemoryStream(); var smtpStream = new SmtpServerStream(memStream); using (smtpStream) { var readTask = smtpStream.ReadCommandAsync(); const string issuedCommand = "EHLO bar.com\r\n"; var bytes = Encoding.ASCII.GetBytes(issuedCommand); memStream.Write(bytes, 0, bytes.Length); memStream.Seek(0, SeekOrigin.Begin); readTask.Wait(); var command = readTask.Result; Assert.That(command, Is.EqualTo(issuedCommand)); } }
private void TestReadMailData(string[] lines_) { var memStream = new MemoryStream(); var smtpStream = new SmtpServerStream(memStream); using (smtpStream) { var expectedData = new StringBuilder(); foreach (var line in lines_) { expectedData.Append(line); var bytes = Encoding.ASCII.GetBytes(line); memStream.Write(bytes, 0, bytes.Length); } expectedData.Replace("\r\n.\r\n", string.Empty); // Remove the terminator. We don't expect to get this as part of the message memStream.Seek(0, SeekOrigin.Begin); var readTask = smtpStream.ReadDataAsync(); readTask.Wait(); var data = readTask.Result; Assert.That(data, Is.EqualTo(expectedData.ToString())); } }
public void TestReadMailDataWhenTerminatorSplitAcrossPackets() { var lines = new[] { "Date: Thu, 21 May 1998 05:33:29 -0700\r\n", "From: John Q. Public <*****@*****.**>\r\n", "Subject: The Next Meeting of the Board\r\n", "To: [email protected]\r\n", "\r\n", "Bill:\r\n", "The next meeting of the board of directors will be\r\n", "on Tuesday.\r\n", "\r\n", ".", "\r\n" }; var netStream = new MockNetworkStream(); var smtpStream = new SmtpServerStream(netStream); using (smtpStream) { var readTask = smtpStream.ReadDataAsync(); var expectedData = new StringBuilder(); foreach (var line in lines) { expectedData.Append(line); var bytes = Encoding.ASCII.GetBytes(line); netStream.WriteRequest(bytes, 0, bytes.Length); } expectedData.Replace("\r\n.\r\n", string.Empty); readTask.Wait(); var data = readTask.Result; Assert.That(data, Is.EqualTo(expectedData.ToString())); } }
public void TestSendingMail() { var netStream = new MockNetworkStream(); var smtpStream = new SmtpServerStream(netStream); var smtpConnection = new DummySmtpServerConnection(smtpStream, new MailBag(), Substitute.For <IDummySmtpServerConnectionCollection>()); smtpConnection.Start(); ReadResponseLine(netStream); // Welcome WriteRequest(netStream, SmtpServerRequests.Hello); ReadResponseLine(netStream); // Greeting to hello WriteRequest(netStream, SmtpServerRequests.Mail); var mailResponse = ReadResponseLine(netStream); Assert.That(mailResponse, Is.EqualTo(SmtpServerResponses.Ok)); WriteRequest(netStream, SmtpServerRequests.Recipient); var recipientResponse = ReadResponseLine(netStream); Assert.That(recipientResponse, Is.EqualTo(SmtpServerResponses.Ok)); WriteRequest(netStream, SmtpServerRequests.AdditionalRecipient); recipientResponse = ReadResponseLine(netStream); Assert.That(recipientResponse, Is.EqualTo(SmtpServerResponses.Ok)); WriteRequest(netStream, SmtpServerRequests.Data); var dataResponse = ReadResponseLine(netStream); Assert.That(dataResponse, Is.EqualTo(SmtpServerResponses.StartMailInput)); WriteRequest(netStream, SmtpServerRequests.MailBody); var mailBodyResponse = ReadResponseLine(netStream); Assert.That(mailBodyResponse, Is.EqualTo(SmtpServerResponses.Ok)); }