示例#1
0
        public void Process_SaidHeloAlready_Allowed()
        {
            Mocks mocks = new Mocks();

            EhloVerb verb = new EhloVerb();

            verb.Process(mocks.Connection.Object, new SmtpCommand("EHLO foo.blah"));
            verb.Process(mocks.Connection.Object, new SmtpCommand("EHLO foo.blah"));

            mocks.VerifyWriteResponse(StandardSmtpResponseCode.OK);
        }
示例#2
0
        public async Task Process_SaidHeloAlready_Allowed()
        {
            TestMocks mocks = new TestMocks();

            EhloVerb verb = new EhloVerb();
            await verb.Process(mocks.Connection.Object, new SmtpCommand("EHLO foo.blah")).ConfigureAwait(false);

            await verb.Process(mocks.Connection.Object, new SmtpCommand("EHLO foo.blah")).ConfigureAwait(false);

            mocks.VerifyWriteResponseAsync(StandardSmtpResponseCode.OK);
        }
示例#3
0
        public async Task Process_RespondsWithExtensionKeywords()
        {
            TestMocks mocks = new TestMocks();
            Mock <IExtensionProcessor> mockExtensionProcessor1 = new Mock <IExtensionProcessor>();

            mockExtensionProcessor1.Setup(ep => ep.GetEHLOKeywords()).ReturnsAsync(new[] { "EXTN1" });
            Mock <IExtensionProcessor> mockExtensionProcessor2 = new Mock <IExtensionProcessor>();

            mockExtensionProcessor2.Setup(ep => ep.GetEHLOKeywords()).ReturnsAsync(new[] { "EXTN2A", "EXTN2B" });

            mocks.Connection.SetupGet(c => c.ExtensionProcessors).Returns(new[]
            {
                mockExtensionProcessor1.Object,
                mockExtensionProcessor2.Object
            });

            EhloVerb ehloVerb = new EhloVerb();
            await ehloVerb.Process(mocks.Connection.Object, new SmtpCommand("EHLO foobar")).ConfigureAwait(false);

            mocks.Connection.Verify(c => c.WriteResponse(It.Is <SmtpResponse>(r =>

                                                                              r.Message.Contains("EXTN1") &&
                                                                              r.Message.Contains("EXTN2A") &&
                                                                              r.Message.Contains("EXTN2B")
                                                                              )));
        }
示例#4
0
        public void Process_RespondsWithExtensionKeywords()
        {
            Mocks mocks = new Mocks();
            Mock <IExtensionProcessor> mockExtensionProcessor1 = new Mock <IExtensionProcessor>();

            mockExtensionProcessor1.SetupGet(ep => ep.EHLOKeywords).Returns(new[] { "EXTN1" });
            Mock <IExtensionProcessor> mockExtensionProcessor2 = new Mock <IExtensionProcessor>();

            mockExtensionProcessor2.SetupGet(ep => ep.EHLOKeywords).Returns(new[] { "EXTN2A", "EXTN2B" });

            mocks.Connection.SetupGet(c => c.ExtensionProcessors).Returns(new[]
            {
                mockExtensionProcessor1.Object,
                mockExtensionProcessor2.Object
            });

            EhloVerb ehloVerb = new EhloVerb();

            ehloVerb.Process(mocks.Connection.Object, new SmtpCommand("EHLO foobar"));

            mocks.Connection.Verify(c => c.WriteResponse(It.Is <SmtpResponse>(r =>

                                                                              r.Message.Contains("EXTN1") &&
                                                                              r.Message.Contains("EXTN2A") &&
                                                                              r.Message.Contains("EXTN2B")
                                                                              )));
        }
示例#5
0
        public async Task Process_RecordsClientName()
        {
            TestMocks mocks    = new TestMocks();
            EhloVerb  ehloVerb = new EhloVerb();
            await ehloVerb.Process(mocks.Connection.Object, new SmtpCommand("EHLO foobar")).ConfigureAwait(false);

            mocks.Session.VerifySet(s => s.ClientName = "foobar");
        }
示例#6
0
        public void Process_RecordsClientName()
        {
            Mocks    mocks    = new Mocks();
            EhloVerb ehloVerb = new EhloVerb();

            ehloVerb.Process(mocks.Connection.Object, new SmtpCommand("EHLO foobar"));

            mocks.Session.VerifySet(s => s.ClientName = "foobar");
        }
示例#7
0
        public async Task Process_NoArguments_Accepted()
        {
            TestMocks mocks    = new TestMocks();
            EhloVerb  ehloVerb = new EhloVerb();
            await ehloVerb.Process(mocks.Connection.Object, new SmtpCommand("EHLO")).ConfigureAwait(false);

            mocks.VerifyWriteResponse(StandardSmtpResponseCode.OK);

            mocks.Session.VerifySet(s => s.ClientName = "");
        }
示例#8
0
        public void Process_NoArguments_Accepted()
        {
            Mocks    mocks    = new Mocks();
            EhloVerb ehloVerb = new EhloVerb();

            ehloVerb.Process(mocks.Connection.Object, new SmtpCommand("EHLO"));
            mocks.VerifyWriteResponse(StandardSmtpResponseCode.OK);

            mocks.Session.VerifySet(s => s.ClientName = "");
        }
示例#9
0
        public async Task Process_RespondsWith250()
        {
            TestMocks mocks = new TestMocks();
            Mock <IExtensionProcessor> mockExtensionProcessor1 = new Mock <IExtensionProcessor>();

            mockExtensionProcessor1.Setup(ep => ep.GetEHLOKeywords()).ReturnsAsync(new[] { "EXTN1" });
            Mock <IExtensionProcessor> mockExtensionProcessor2 = new Mock <IExtensionProcessor>();

            mockExtensionProcessor2.Setup(ep => ep.GetEHLOKeywords()).ReturnsAsync(new[] { "EXTN2A", "EXTN2B" });

            mocks.Connection.SetupGet(c => c.ExtensionProcessors).Returns(new[]
            {
                mockExtensionProcessor1.Object,
                mockExtensionProcessor2.Object
            });

            EhloVerb ehloVerb = new EhloVerb();
            await ehloVerb.Process(mocks.Connection.Object, new SmtpCommand("EHLO foobar")).ConfigureAwait(false);

            mocks.VerifyWriteResponse(StandardSmtpResponseCode.OK);
        }
示例#10
0
        public void Process_RespondsWith250()
        {
            Mocks mocks = new Mocks();
            Mock <IExtensionProcessor> mockExtensionProcessor1 = new Mock <IExtensionProcessor>();

            mockExtensionProcessor1.SetupGet(ep => ep.EHLOKeywords).Returns(new[] { "EXTN1" });
            Mock <IExtensionProcessor> mockExtensionProcessor2 = new Mock <IExtensionProcessor>();

            mockExtensionProcessor2.SetupGet(ep => ep.EHLOKeywords).Returns(new[] { "EXTN2A", "EXTN2B" });

            mocks.Connection.SetupGet(c => c.ExtensionProcessors).Returns(new[]
            {
                mockExtensionProcessor1.Object,
                mockExtensionProcessor2.Object
            });

            EhloVerb ehloVerb = new EhloVerb();

            ehloVerb.Process(mocks.Connection.Object, new SmtpCommand("EHLO foobar"));

            mocks.VerifyWriteResponse(StandardSmtpResponseCode.OK);
        }