Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }