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))); } } }
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); } } }
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); } }
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); } }