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)); }
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); }
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); }
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)); }
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)); }
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)); }
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>())); }
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))); }
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)); } } }
private bool Save(EmailQueue queue) { return(EmailQueueService.GetInstance().Save(queue)); }