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 SenderValidationBadRequest() { var provider = new SenderValidationProvider(); var transportMoq = new Mock <ITransport>(MockBehavior.Loose); var context = new SmtpSessionContext() { Transport = transportMoq.Object }; transportMoq.Setup(m => m.Read()).Returns("BAD COMMAND"); var result = provider.RunAsync(context).Result as SenderValidationResult; Assert.IsNotNull(result, "Response is of the incorrect type"); Assert.AreEqual(SmtpStatusCode.UNKNOWN_COMMAND, result.StatusCode); }
public void SenderValidationFailure() { var provider = new SenderValidationProvider(); var transportMoq = new Mock <ITransport>(MockBehavior.Loose); Mock <IMessageSenderValidator> validator = GetValidator(false); var context = new SmtpSessionContext() { Transport = transportMoq.Object, SenderValidator = validator.Object }; transportMoq.Setup(m => m.Read()).Returns("MAIL FROM:<*****@*****.**"); var result = provider.RunAsync(context).Result as SenderValidationResult; Assert.IsNotNull(result, "Response is of the incorrect type"); Assert.AreEqual(SmtpStatusCode.MAILBOX_NOT_FOUND, result.StatusCode); }