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