private static async Task SendEmailsAsync(Server sut, params MimeMessage[] msgs) { using (var client = new SmtpClient()) { await client.ConnectAsync("localhost", sut.Port, false); foreach (var msg in msgs) { await client.SendAsync(msg); } client.Disconnect(true); } }
public async Task Should_forward_emails() { using (var forwardServer = new Server(RandomPortNumber())) using (var sut = new Server(RandomPortNumber(), new SMTP.ForwardServerConfig(forwardServer.Port, "localhost"))) { var msg = CreateMessage(); var emails = await GetEmails(forwardServer, s => s.GetEmails(), () => SendEmailsAsync(sut, msg)); var actual = emails.Single(); AssertEmailsAreEqual(actual, msg); } }
private static async Task <IEnumerable <SMTP.EMail> > GetEmails( Server sut, Func <Server, IEnumerable <SMTP.EMail> > getEmailsFunc, params Func <Task>[] sendEmails) { using (var countdown = new CountdownEvent(sendEmails.Count())) using (sut.EmailReceived.Subscribe(actual => { countdown.Signal(); })) { foreach (var t in sendEmails) { await t(); } countdown.Wait(); return(getEmailsFunc(sut)); } }
private static async Task<IEnumerable<SMTP.EMail>> GetEmails( Server sut, Func<Server, IEnumerable<SMTP.EMail>> getEmailsFunc, params Func<Task>[] sendEmails) { using (var countdown = new CountdownEvent(sendEmails.Count())) using (sut.EmailReceived.Subscribe(actual => { countdown.Signal(); })) { foreach (var t in sendEmails) await t(); countdown.Wait (); return getEmailsFunc(sut); } }
private static async Task SendEmailsAsync (Server sut, params MimeMessage[] msgs) { using (var client = new SmtpClient ()) { await client.ConnectAsync ("localhost", sut.Port, false); foreach (var msg in msgs) { await client.SendAsync (msg); } client.Disconnect (true); } }