Ejemplo n.º 1
0
        public void ShouldProcessTemplate()
        {
            string emailTo = "*****@*****.**";
            Dictionary <string, string> d = new Dictionary <string, string>();

            d.Add("SUBJECT", "Test Subject");
            d.Add("PARM1", "PARM1");
            d.Add("PARM2", "PARM2");
            d.Add("PARM3", "PARM3");
            EmailTemplate template = new EmailTemplate()
            {
                Subject    = "Subject=${SUBJECT}",
                Body       = "PARM1=${PARM1}, PARM2=${PARM2}, PARM3=${PARM3}",
                FormatCode = EmailFormat.Text,
                Priority   = EmailPriority.Standard,
            };
            Email expected = new Email()
            {
                To      = emailTo,
                Subject = "Subject=Test Subject",
                Body    = "PARM1=PARM1, PARM2=PARM2, PARM3=PARM3"
            };
            IEmailQueueService emailService = new EmailQueueService(
                new Mock <ILogger <EmailQueueService> >().Object,
                new Mock <IBackgroundJobClient>().Object,
                new Mock <IEmailDelegate>().Object,
                new Mock <IMessagingVerificationDelegate>().Object,
                new Mock <IWebHostEnvironment>().Object);
            Email actual = emailService.ProcessTemplate(emailTo, template, d);

            expected.Id = actual.Id;
            Assert.True(expected.IsDeepEqual(actual));
        }
Ejemplo n.º 2
0
        public void ShouldProcessTemplateNonProd()
        {
            string        emailTo      = "*****@*****.**";
            string        bodyPrefix   = "Mock Body";
            string        environment  = "mock environment";
            string        expectedBody = $"{bodyPrefix} {environment}";
            EmailTemplate template     = new EmailTemplate()
            {
                Subject    = "Mock Subject",
                Body       = $"{bodyPrefix} ${{Environment}}",
                FormatCode = EmailFormat.Text,
                Priority   = EmailPriority.Standard,
            };
            Dictionary <string, string> d = new Dictionary <string, string>();
            var mockWebHosting            = new Mock <IWebHostEnvironment>();

            // mockWebHosting.Setup(s => s.IsProduction()).Returns(false);
            mockWebHosting.Setup(s => s.EnvironmentName).Returns(environment);
            IEmailQueueService emailService = new EmailQueueService(
                new Mock <ILogger <EmailQueueService> >().Object,
                new Mock <IBackgroundJobClient>().Object,
                new Mock <IEmailDelegate>().Object,
                new Mock <IMessagingVerificationDelegate>().Object,
                mockWebHosting.Object);
            Email actual = emailService.ProcessTemplate(emailTo, template, d);

            Assert.True(actual.Body == expectedBody);
        }
Ejemplo n.º 3
0
        public void ShouldCloneandQueueThrowsNoTo()
        {
            DateTime now          = DateTime.Now;
            string   environment  = "mock environment";
            string   bodyPrefix   = "Mock Body for";
            string   expectedBody = $"{bodyPrefix} {environment}";
            Email    email        = new Email()
            {
                Id              = Guid.Parse("93895b38-cc48-47a3-b592-c02691521b28"),
                CreatedBy       = "Mocked Created By",
                CreatedDateTime = now,
                UpdatedBy       = "Mocked Updated By",
                UpdatedDateTime = now,
                Subject         = "Mock Subject",
                Body            = expectedBody,
                From            = "*****@*****.**",
            };
            Guid emailId           = 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.GetEmail(It.IsAny <Guid>())).Returns(email);
            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.CloneAndQueue(emailId, true));
        }
    public async Task Should_AddAsync()
    {
        // Arrange
        var        configuration = GetConfiguration();
        IAmazonSQS client        = configuration.GetAWSOptions().CreateServiceClient <IAmazonSQS>();
        var        subject       = new EmailQueueService(configuration, Mock.Of <ILogger <EmailQueueService> >());
        // Act
        var result = await subject.AddAsync(ContactFormModelMock.GetNew());

        // Assert
        Assert.True(result);
    }
Ejemplo n.º 5
0
        private void SendWarningHtml(string lang, int pid, string pname, string email, int uid)
        {
            string     url   = string.Format("{0}/plant/warningfilter/?pid={1}&uid={2}", domainUrl, pid, uid);
            string     html  = Tool.LoadContent(url, lang);
            EmailQueue queue = new EmailQueue();

            queue.title    = pname + " Warning Report";
            queue.content  = html;
            queue.receiver = email;
            queue.state    = 0;
            queue.sender   = "*****@*****.**";
            EmailQueueService.GetInstance().Save(queue);
        }
        public void ShouldQueueEmail()
        {
            DateTime      now           = DateTime.Now;
            string        expectedEmail = "*****@*****.**";
            string        environment   = "mock environment";
            string        bodyPrefix    = "Mock Body for";
            string        expectedBody  = $"{bodyPrefix} {environment}";
            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}}",
                From            = "*****@*****.**",
            };

            Dictionary <string, string> configDictionary = new Dictionary <string, string>
            {
                { "WebClient:EmailVerificationExpirySeconds", "10" },
            };

            Guid expectedEmailId           = Guid.Parse("389425bc-0380-467f-b003-e03cfa871f83");
            Dictionary <string, string> kv = new Dictionary <string, string>();

            kv.Add("environment", environment);
            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>(), true)).Callback <Email, bool>((email, b) => email.Id = expectedEmailId);

            var mockWebHosting = new Mock <IWebHostEnvironment>();

            IEmailQueueService emailService = new EmailQueueService(
                mockLogger.Object,
                mockJobclient.Object,
                mockEmailDelegate.Object,
                mockWebHosting.Object);

            emailService.QueueNewEmail(expectedEmail, string.Empty, kv, true);
            mockJobclient.Verify(x => x.Create(
                                     It.Is <Job>(job => job.Method.Name == "SendEmail" && (Guid)job.Args[0] == expectedEmailId),
                                     It.IsAny <EnqueuedState>()));
            mockEmailDelegate.Verify(x => x.InsertEmail(It.Is <Email>(email => email.To == expectedEmail &&
                                                                      email.Subject == emailTemplate.Subject &&
                                                                      email.Body == expectedBody), true));
        }
Ejemplo n.º 7
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()));
        }
        public void ShouldCloneandQueueThrowsNoEmail()
        {
            Guid emailId           = 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.GetEmail(It.IsAny <Guid>())).Returns <Email>(null);
            var mockWebHosting = new Mock <IWebHostEnvironment>();
            IEmailQueueService emailService = new EmailQueueService(
                mockLogger.Object,
                mockJobclient.Object,
                mockEmailDelegate.Object,
                mockWebHosting.Object);

            Assert.Throws <ArgumentException>(() => emailService.CloneAndQueue(emailId, true));
        }
Ejemplo n.º 9
0
        public void ShouldCloneandQueue()
        {
            DateTime now           = DateTime.Now;
            string   environment   = "mock environment";
            string   bodyPrefix    = "Mock Body for";
            string   expectedBody  = $"{bodyPrefix} {environment}";
            Email    expectedEmail = new Email()
            {
                Id      = Guid.Parse("93895b38-cc48-47a3-b592-c02691521b28"),
                From    = "*****@*****.**",
                To      = "*****@*****.**",
                Subject = "Mock Subject",
                Body    = expectedBody,
            };
            Guid expectedNewEmailId        = Guid.Parse("389425bc-0380-467f-b003-e03cfa871f83");
            Dictionary <string, string> kv = new Dictionary <string, string>();

            kv.Add("environment", environment);
            var mockLogger        = new Mock <ILogger <EmailQueueService> >();
            var mockJobclient     = new Mock <IBackgroundJobClient>();
            var mockEmailDelegate = new Mock <IEmailDelegate>();

            mockEmailDelegate.Setup(s => s.GetEmail(It.IsAny <Guid>())).Returns(expectedEmail);
            mockEmailDelegate.Setup(s => s.InsertEmail(It.IsAny <Email>(), true)).Callback <Email, bool>((email, b) => email.Id = expectedNewEmailId);
            var mockMessagingVerificationDelegate = new Mock <IMessagingVerificationDelegate>();
            var mockWebHosting = new Mock <IWebHostEnvironment>();
            IEmailQueueService emailService = new EmailQueueService(
                mockLogger.Object,
                mockJobclient.Object,
                mockEmailDelegate.Object,
                mockMessagingVerificationDelegate.Object,
                mockWebHosting.Object);

            emailService.CloneAndQueue(expectedEmail.Id, true);
            mockJobclient.Verify(x => x.Create(
                                     It.Is <Job>(job => job.Method.Name == "SendEmail" && job.Args[0] is Guid),
                                     It.IsAny <EnqueuedState>()));
            mockEmailDelegate.Verify(x => x.InsertEmail(It.Is <Email>(email =>
                                                                      email.Id == expectedNewEmailId &&
                                                                      email.From == expectedEmail.From &&
                                                                      email.To == expectedEmail.To &&
                                                                      email.Subject == expectedEmail.Subject &&
                                                                      email.Body == expectedEmail.Body), true));
        }
Ejemplo n.º 10
0
        public void ShouldQueueInviteByGuid()
        {
            Guid inviteGuid        = Guid.NewGuid();
            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);

            emailService.QueueInviteEmail(inviteGuid);
            mockJobclient.Verify(x => x.Create(
                                     It.Is <Job>(job => job.Method.Name == "SendEmail" && (Guid)job.Args[0] == inviteGuid),
                                     It.IsAny <EnqueuedState>()));
        }
Ejemplo n.º 11
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)));
        }
Ejemplo n.º 12
0
        public void Run()
        {
            InitData();
            foreach (DefineReport report in normalReport)
            {
                if (string.IsNullOrEmpty(report.config.email))
                {
                    continue;
                }
                if (string.IsNullOrEmpty(report.config.sendMode))
                {
                    continue;
                }
                bool isSuccess = false;
                switch (report.config.sendMode.ToLower())//报告发送模式 1循环 2定时
                {
                case "1":
                    Console.WriteLine("处理模式1运行时报告" + report.config.id);
                    //if ((DateTime.Now - report.config.lastSendTime).TotalHours > Convert.ToDouble(report.config.tinterval))
                    if ((DateTime.Now > report.config.lastSendTime))
                    {
                        //report.config.lastSendTime = DateTime.Now.AddSeconds(0 - DateTime.Now.Second);
                        report.config.lastSendTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, 0).AddHours(Convert.ToDouble(report.config.tinterval));
                        isSuccess = true;
                    }
                    //Console.WriteLine("处理模式1运行时报告,isSuccess is " + isSuccess);
                    break;

                case "2":
                    string[] para = new string[6];    //年 月 日 时  分 周
                    string[] t    = null;
                    t = report.config.fixedTime.Split(',');
                    switch (report.ReportType)
                    {
                    case 1:        //日报表
                        para[3] = t[0];
                        para[4] = t[1];
                        break;

                    case 2:        //周报表
                        para[3] = t[1];
                        para[5] = t[0];
                        break;

                    case 3:        //月报表
                        para[2] = t[0];
                        para[3] = t[1];
                        break;

                    case 4:        //年报表
                    case 5:
                        para[1] = t[0];
                        para[2] = t[1];
                        para[3] = t[2];
                        break;

                    default:
                        break;
                    }
                    if (para == null || para.Length < 6)
                    {
                        para = new string[6];
                    }
                    DateTime update = DateTime.Now;
                    Console.WriteLine("处理模式2运行时报告" + report.config.id);
                    if (Tool.DateEquals(para[0], para[1], para[2], para[3], para[4], para[5], report.config.lastSendTime, report.ReportType, ref update))
                    {
                        report.config.lastSendTime = update;
                        isSuccess = true;
                    }
                    //Console.WriteLine("处理模式2运行时报告,isSuccess is " + isSuccess);
                    break;
                }
                if (isSuccess)
                {
                    string culture = "en-us";
                    if (report.user == null)
                    {
                        Plant plant = PlantService.GetInstance().GetPlantInfoById(report.PlantId);
                        if (plant != null)
                        {
                            report.user = UserService.GetInstance().Get(Convert.ToInt32(plant.userID));
                        }
                    }
                    if (report.user != null && report.user.Language != null && (string.IsNullOrEmpty(report.user.Language.codename) == false))
                    {
                        culture = report.user.Language.codename;
                    }

                    string     url   = string.Format("{5}/reports/viewreport?rId={0}&cTime={1}&tId={2}&pId={3}&type=email&lang={4}", report.Id, DateTime.Now.ToString("yyyy-MM-dd"), report.ReportType, report.config.plantId == 0 ? "" : report.config.plantId.ToString(), culture.ToLower(), domainUrl);
                    string     html  = Tool.LoadContent(url, culture);
                    EmailQueue queue = new EmailQueue();
                    queue.title   = report.ReportName;
                    queue.content = html;
                    if (string.IsNullOrEmpty(queue.content))
                    {
                        continue;
                    }
                    queue.receiver = report.config.email;
                    queue.state    = 0;
                    queue.sender   = "*****@*****.**";
                    EmailQueueService.GetInstance().Save(queue);
                    ReportConfigService.GetInstance().UPdateReportLastSendTime(report.config);//更新最后发送时间
                    Console.WriteLine(string.Format("{0}-({1})-{2}", url, report.ReportName, DateTime.Now));
                }
            }
        }
Ejemplo n.º 13
0
 private bool Save(EmailQueue queue)
 {
     return(EmailQueueService.GetInstance().Save(queue));
 }