public void TestLineCallback() { const string greet = "Test Greet"; const string expectedLine = "fubar"; var handler = new EHLOHandler(); SMTPTransaction actualTransaction = null; AddCoreListProperty("EHLOLines", () => new List <Func <SMTPTransaction, string> > { t => { actualTransaction = t; return(expectedLine); } }); Transaction.InitializeString = s => { }; Transaction.Reset = () => { }; Transaction.SettingsGet = () => new StubIReceiveSettings { GreetGet = () => greet }; handler.Initialize(Core); var response = handler.Execute(Transaction, "test"); Assert.Equal(SMTPStatusCode.Okay, response.Code); Assert.Equal(2, response.Args.Length); Assert.Equal(greet, response.Args[0]); Assert.Equal(expectedLine, response.Args[1]); Assert.Equal(Transaction, actualTransaction); }
public void TestFail() { var handler = new EHLOHandler(); handler.Initialize(Core); var response = handler.Execute(Transaction, ""); Assert.Equal(SMTPStatusCode.SyntaxError, response.Code); }
public void TestSuccess(string parameters, string[] lines) { const string greet = "Test Greet"; var handler = new EHLOHandler(); var init = false; string clientId = null; var reset = false; var lines2 = lines.Select <string, Func <SMTPTransaction, string> >(l => t => l); AddCoreListProperty("EHLOLines", () => new List <Func <SMTPTransaction, string> >(lines2)); Transaction.InitializeString = s => { init = true; clientId = s; }; Transaction.Reset = () => { reset = true; }; Transaction.SettingsGet = () => new StubIReceiveSettings { GreetGet = () => greet }; handler.Initialize(Core); var response = handler.Execute(Transaction, parameters); var expectedLines = lines.Where(l => !string.IsNullOrEmpty(l)).ToArray(); Assert.Equal(SMTPStatusCode.Okay, response.Code); Assert.Equal(1 + expectedLines.Length, response.Args.Length); Assert.Equal(greet, response.Args[0]); foreach (var line in expectedLines) { Assert.Contains(line, response.Args); } Assert.Equal(parameters, clientId); Assert.True(init); Assert.True(reset); }