public void TestStartTLS() { using (ShimsContext.Create()) { var server = new ShimSMTPServer(); var settings = new StubIReceiveSettings(); var transaction = new SMTPTransaction(server, settings); var args = new CancelEventArgs(); CancelEventArgs actualArgs = null; object actualSender = null; var called = false; transaction.OnStartTLS += (sender, eventArgs) => { called = true; actualSender = sender; actualArgs = eventArgs; }; transaction.StartTLS(args); Assert.True(called); Assert.Same(transaction, actualSender); Assert.Same(args, actualArgs); } }
public override SMTPResponse DoExecute(SMTPTransaction transaction, string parameters) { if (!string.IsNullOrEmpty(parameters)) { return(new SMTPResponse(SMTPStatusCode.SyntaxError)); } if (!transaction.Settings.EnableTLS) { return(new SMTPResponse(SMTPStatusCode.BadSequence)); // TODO: Check response code } if (transaction.TLSActive) { return(new SMTPResponse(SMTPStatusCode.BadSequence)); } var args = new CancelEventArgs(); transaction.StartTLS(args); if (args.Cancel) { return(new SMTPResponse(SMTPStatusCode.TLSNotAvailiable, "TLS not available due to temporary reason")); } return(new SMTPResponse(SMTPStatusCode.Ready, "Ready to start TLS")); }