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