virtual protected async Task ProcessSession() { _tokenSource = new CancellationTokenSource(); var token = _tokenSource.Token; var handshakeResult = await HandshakeProvider.RunAsync(_sessionContext, token); SendReponse(handshakeResult.StatusReason, handshakeResult.StatusCode); if (AuthProvider != null) { var authresult = await AuthProvider.RunAsync(_sessionContext, token); SendReponse(authresult.StatusReason, authresult.StatusCode); } var senderValidationResult = await SenderValidationProvider.RunAsync(_sessionContext, token); SendReponse(senderValidationResult.StatusReason, senderValidationResult.StatusCode); var recipientValidationResult = await RecipientValidationProvider.RunAsync(_sessionContext, token); SendReponse(recipientValidationResult.StatusReason, recipientValidationResult.StatusCode); var messageReaderResult = await MessageReaderProvider.RunAsync(_sessionContext, token); SendReponse(messageReaderResult.StatusReason, messageReaderResult.StatusCode); }
public void BasicHandshakeBadResponse() { var provider = new HandshakeProvider(); var transportMoq = new Mock <ITransport>(); var context = new SmtpSessionContext() { ServerName = "localhost", Transport = transportMoq.Object }; transportMoq.Setup(m => m.Read()).Returns("HELLO"); var result = provider.RunAsync(context).Result; Assert.AreEqual(SmtpStatusCode.UNKNOWN_COMMAND, result.StatusCode); }
public void BasicHandshake() { var provider = new HandshakeProvider(); var transportMoq = new Mock <ITransport>(MockBehavior.Loose); var context = new SmtpSessionContext() { ServerName = "localhost", Transport = transportMoq.Object }; transportMoq.Setup(m => m.Read()).Returns("HELO"); provider.RunAsync(context) .ContinueWith(x => { var result = x.Result; Assert.AreEqual(SmtpStatusCode.OK, result.StatusCode); }); }