Ejemplo n.º 1
0
        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()));
        }
Ejemplo n.º 2
0
        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)));
        }