public void ThrowsQueueInvite() { var mockLogger = new Mock <ILogger <EmailQueueService> >(); var mockJobclient = new Mock <IBackgroundJobClient>(); var mockEmailDelegate = new Mock <IEmailDelegate>(); var mockMessagingVerificationDelegate = new Mock <IMessagingVerificationDelegate>(); var mockWebHosting = new Mock <IWebHostEnvironment>(); IEmailQueueService emailService = new EmailQueueService( mockLogger.Object, mockJobclient.Object, mockEmailDelegate.Object, mockMessagingVerificationDelegate.Object, mockWebHosting.Object); Assert.Throws <ArgumentNullException>(() => emailService.QueueNewInviteEmail(new MessagingVerification())); }
public void ShouldQueueNewInvite() { DateTime now = DateTime.Now; string expectedEmail = "*****@*****.**"; string environment = null; string bodyPrefix = "Mock Body for"; string ActivationHost = "https://localhost/action"; string expectedBody = $"{bodyPrefix} {environment} {ActivationHost}"; string expectedHDID = "hdid"; EmailTemplate emailTemplate = new EmailTemplate() { Id = Guid.Parse("93895b38-cc48-47a3-b592-c02691521b28"), CreatedBy = "Mocked Created By", CreatedDateTime = now, UpdatedBy = "Mocked Updated By", UpdatedDateTime = now, Subject = "Mock Subject", Body = $"{bodyPrefix} ${{Environment}} ${{ActivationHost}}", From = "*****@*****.**", }; Guid expectedEmailId = Guid.Parse("389425bc-0380-467f-b003-e03cfa871f83"); var mockLogger = new Mock <ILogger <EmailQueueService> >(); var mockJobclient = new Mock <IBackgroundJobClient>(); var mockEmailDelegate = new Mock <IEmailDelegate>(); mockEmailDelegate.Setup(s => s.GetEmailTemplate(It.IsAny <string>())).Returns(emailTemplate); mockEmailDelegate.Setup(s => s.InsertEmail(It.IsAny <Email>(), false)). Callback <Email, bool>((email, b) => email.Id = expectedEmailId); var mockMessagingVerificationDelegate = new Mock <IMessagingVerificationDelegate>(); mockMessagingVerificationDelegate.Setup(s => s.Insert(It.IsAny <MessagingVerification>())). Callback <MessagingVerification>(emv => { emv.Id = expectedEmailId; emv.EmailId = expectedEmailId; emv.Email.Id = expectedEmailId; }); var mockWebHosting = new Mock <IWebHostEnvironment>(); IEmailQueueService emailService = new EmailQueueService( mockLogger.Object, mockJobclient.Object, mockEmailDelegate.Object, mockMessagingVerificationDelegate.Object, mockWebHosting.Object); emailService.QueueNewInviteEmail(expectedHDID, expectedEmail, new Uri($"{ActivationHost}/")); mockJobclient.Verify(x => x.Create( It.Is <Job>(job => job.Method.Name == "SendEmail" && (Guid)job.Args[0] == expectedEmailId), It.IsAny <EnqueuedState>())); mockMessagingVerificationDelegate.Verify(x => x.Insert(It.Is <MessagingVerification>(emv => emv.InviteKey != null && emv.HdId == expectedHDID && emv.Validated == false && emv.Email != null && emv.Email.Id == expectedEmailId && emv.Email.To == expectedEmail && emv.Email.Subject == emailTemplate.Subject && emv.Email.Body == expectedBody))); }