Exemplo n.º 1
0
        public void TestInitialize(bool TLSEnabled, bool TLSActive, bool inEHLO)
        {
            using (ShimsContext.Create())
            {
                var ehloLines = new List <Func <SMTPTransaction, string> >();
                AddCoreListProperty("EHLOLines", () => ehloLines);

                Transaction.TLSActiveGet = () => TLSActive;
                Transaction.SettingsGet  = () => new StubIReceiveSettings
                {
                    EnableTLSGet = () => TLSEnabled
                };

                var handler = new STARTTLSHandler();
                handler.Initialize(Core);

                if (inEHLO)
                {
                    Assert.Contains("STARTTLS", ehloLines.Select(e => e(Transaction)));
                }
                else
                {
                    Assert.DoesNotContain("STARTTLS", ehloLines.Select(e => e(Transaction)));
                }
            }
        }
Exemplo n.º 2
0
        public void TestOnCommandExecute(bool unsecuredAllowed, bool requireEncryption, bool isSecured, bool error)
        {
            using (ShimsContext.Create())
            {
                Transaction.SettingsGet = () => new StubIReceiveSettings
                {
                    RequireTLSGet = () => requireEncryption
                };

                Transaction.TLSActiveGet = () => isSecured;

                ICommandHandler otherHandler = unsecuredAllowed
                    ? (ICommandHandler) new HandlerWithUnsecureAllowed()
                    : new StubICommandHandler();

                var handler = new STARTTLSHandler();
                var args    = new CommandExecuteEventArgs(Transaction, otherHandler, "");
                handler.OnCommandExecute(otherHandler, args);

                if (error)
                {
                    Assert.NotNull(args.Response);
                    Assert.Equal(SMTPStatusCode.AuthRequired, args.Response.Code);
                }
                else
                {
                    Assert.Null(args.Response);
                }
            }
        }
Exemplo n.º 3
0
        public void TestDoExecuteError(bool enableTLS, bool isSecured, string parameters, SMTPStatusCode code)
        {
            using (ShimsContext.Create())
            {
                Transaction.SettingsGet = () => new StubIReceiveSettings
                {
                    EnableTLSGet = () => enableTLS
                };
                Transaction.TLSActiveGet = () => isSecured;

                var started = false;
                Transaction.StartTLSCancelEventArgs = args => { started = true; };

                var handler  = new STARTTLSHandler();
                var response = handler.DoExecute(Transaction, parameters);

                Assert.Equal(code, response.Code);
                Assert.False(started);
            }
        }
Exemplo n.º 4
0
        public void TestDoExecuteSuccess()
        {
            using (ShimsContext.Create())
            {
                Transaction.SettingsGet = () => new StubIReceiveSettings
                {
                    EnableTLSGet = () => true
                };
                Transaction.TLSActiveGet = () => false;

                var started = false;
                Transaction.StartTLSCancelEventArgs = args => { started = true; };

                var handler  = new STARTTLSHandler();
                var response = handler.DoExecute(Transaction, "");

                Assert.Equal(SMTPStatusCode.Ready, response.Code);
                Assert.True(started);
            }
        }