public async Task WrongAlias_Email_NotFound() { using (IdentityWsDbContext ef = CreateEf()) { Alias alias; ef.Aliases.Add(alias = new Alias { EmailAddress = "*****@*****.**" }); await ef.SaveChangesAsync(); AliasesController patient = new AliasesController(ef, dummyLog, now, dummyRunner); IActionResult result = await patient.Email("*****@*****.**", new AliasesController.EmailRequestBody()); result.Should().BeOfType <NotFoundResult>("the email address doesn't match"); } }
public async Task RightAlias_Email_NewDbRecordAndNudge() { using (IdentityWsDbContext ef = CreateEf()) { Alias alias; ef.Aliases.Add(alias = new Alias { EmailAddress = "*****@*****.**" }); await ef.SaveChangesAsync(); bool nudged = false; Mock <IBackgroundJobRunner <EmailQueueProcessor> > mock_runner = new Mock <IBackgroundJobRunner <EmailQueueProcessor> >(); mock_runner.Setup(m => m.Nudge()).Callback(() => nudged = true); AliasesController patient = new AliasesController(ef, dummyLog, now, mock_runner.Object); IActionResult result = await patient.Email("*****@*****.**", new AliasesController.EmailRequestBody { from = "*****@*****.**", replyTo = "*****@*****.**", subject = "Testing", bodyText = "Hello, World!" }); Email email = await ef.Emails.FirstAsync(e => e.AliasID == alias.AliasID); result.Should().BeOfType <NoContentResult>("email processing is asynchronous"); email.Should().Match <Email>(e => e.From == "*****@*****.**" && e.ReplyTo == "*****@*****.**" && e.Subject == "Testing" && e.BodyText == "Hello, World!" && !e.SendIfUnconfirmed, "all values should be stored as-is in the database except SendIfUnconfirmed, which defaults to false"); nudged.Should().BeTrue("a new queue run should be triggered sooner rather than later"); } }