public void TestNotifiactionTypeValuesSave() { var counter = 0; foreach (var notificationType in Enum.GetValues(typeof(EmailPreferences.NotificationTypes))) { #region Arrange var emailQueue = GetValid(9); emailQueue.NotificationType = (EmailPreferences.NotificationTypes)notificationType; #endregion Arrange #region Act EmailQueueRepository.DbContext.BeginTransaction(); EmailQueueRepository.EnsurePersistent(emailQueue); EmailQueueRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.AreEqual((EmailPreferences.NotificationTypes)notificationType, emailQueue.NotificationType); Assert.IsFalse(emailQueue.IsTransient()); Assert.IsTrue(emailQueue.IsValid()); #endregion Assert counter++; } Assert.AreEqual(3, counter); }
public void TestEmailQueuesFieldOrderWithAValueOfNullDoesNotSave() { EmailQueue record = null; try { #region Arrange record = GetValid(9); record.Order = null; #endregion Arrange #region Act EmailQueueRepository.DbContext.BeginTransaction(); EmailQueueRepository.EnsurePersistent(record); EmailQueueRepository.DbContext.CommitTransaction(); #endregion Act } catch (Exception) { Assert.IsNotNull(record); Assert.AreEqual(record.Order, null); var results = record.ValidationResults().AsMessageList(); results.AssertErrorsAre("The Order field is required."); Assert.IsTrue(record.IsTransient()); Assert.IsFalse(record.IsValid()); throw; } }
public void TestEmailQueueNewOrderDoesNotSave() { var thisFar = false; try { #region Arrange var record = GetValid(9); record.Order = new Order(); thisFar = true; #endregion Arrange #region Act EmailQueueRepository.DbContext.BeginTransaction(); EmailQueueRepository.EnsurePersistent(record); EmailQueueRepository.DbContext.CommitTransaction(); #endregion Act } catch (Exception ex) { Assert.IsTrue(thisFar); Assert.IsNotNull(ex); Assert.AreEqual("object references an unsaved transient instance - save the transient instance before flushing or set cascade action for the property to something that would make it autosave. Type: Purchasing.Core.Domain.Order, Entity: Purchasing.Core.Domain.Order", ex.Message); throw; } }
public void TestEmailWithInvalidEmailDoesNotSave() { EmailQueue emailQueue = null; try { #region Arrange emailQueue = GetValid(9); emailQueue.Email = "x@@x.com"; #endregion Arrange #region Act EmailQueueRepository.DbContext.BeginTransaction(); EmailQueueRepository.EnsurePersistent(emailQueue); EmailQueueRepository.DbContext.CommitTransaction(); #endregion Act } catch (Exception) { Assert.IsNotNull(emailQueue); var results = emailQueue.ValidationResults().AsMessageList(); results.AssertErrorsAre(string.Format("The {0} field is not a valid e-mail address.", "Email")); Assert.IsTrue(emailQueue.IsTransient()); Assert.IsFalse(emailQueue.IsValid()); throw; } }
public void TestTextWithSpacesOnlyDoesNotSave() { EmailQueue emailQueue = null; try { #region Arrange emailQueue = GetValid(9); emailQueue.Text = " "; #endregion Arrange #region Act EmailQueueRepository.DbContext.BeginTransaction(); EmailQueueRepository.EnsurePersistent(emailQueue); EmailQueueRepository.DbContext.CommitTransaction(); #endregion Act } catch (Exception) { Assert.IsNotNull(emailQueue); var results = emailQueue.ValidationResults().AsMessageList(); results.AssertErrorsAre(string.Format("The {0} field is required.", "Text")); Assert.IsTrue(emailQueue.IsTransient()); Assert.IsFalse(emailQueue.IsValid()); throw; } }
public void TestEmailWithTooLongValueDoesNotSave() { EmailQueue emailQueue = null; try { #region Arrange emailQueue = GetValid(9); emailQueue.Email = string.Format("x{0}@x.x", "x".RepeatTimes((96))); #endregion Arrange #region Act EmailQueueRepository.DbContext.BeginTransaction(); EmailQueueRepository.EnsurePersistent(emailQueue); EmailQueueRepository.DbContext.CommitTransaction(); #endregion Act } catch (Exception) { Assert.IsNotNull(emailQueue); Assert.AreEqual(100 + 1, emailQueue.Email.Length); var results = emailQueue.ValidationResults().AsMessageList(); results.AssertErrorsAre(string.Format("The field {0} must be a string with a maximum length of {1}.", "Email", "100")); Assert.IsTrue(emailQueue.IsTransient()); Assert.IsFalse(emailQueue.IsValid()); throw; } }
public void SaveEmailAndRemoveTest() { var clientMailer = new ClientMailer( new EmailQueueServiceCore( new EmailQueueRepository() ) ); var response = clientMailer.Send( new CoreEmailDto() { EmailType = 2, TriesLeft = 5, AvailableToSendFromUtc = DateTime.UtcNow, From = new EmailRecipient("*****@*****.**", "abcTestName"), SubjectTemplate = "Subject", BodyTemplate = "Body", Host = "123", Port = 25, To = new List <EmailRecipient>() { new EmailRecipient("*****@*****.**", "abcTestName") } }); Assert.IsTrue(response.MailIds.Count == 1); using (var dbContext = new EmailQueueRepository().MailerContext) { var savedEmailId = response.MailIds[0]; var addedEmailQueue = dbContext.EmailQueues.Where(x => x.EmailQueueId == savedEmailId).ToList().FirstOrDefault(); var addedEmailMessage = dbContext.EmailMessages.Where(x => x.EmailMessageId == addedEmailQueue.EmailMessageId).ToList().FirstOrDefault(); Assert.IsNotNull(addedEmailQueue); Assert.IsNotNull(addedEmailMessage); dbContext.EmailQueues.Remove(addedEmailQueue); dbContext.EmailMessages.Remove(addedEmailMessage); dbContext.SaveChanges(); var removedEmailQueue = dbContext.EmailQueues.Where(x => x.EmailQueueId == savedEmailId).ToList().FirstOrDefault(); var removedEmailMessage = dbContext.EmailMessages.Where(x => x.EmailMessageId == addedEmailQueue.EmailMessageId).ToList().FirstOrDefault(); Assert.IsNull(removedEmailQueue); Assert.IsNull(removedEmailMessage); } }
public void TestStatusWithOneCharacterSaves() { #region Arrange var emailQueue = GetValid(9); emailQueue.Status = "x"; #endregion Arrange #region Act EmailQueueRepository.DbContext.BeginTransaction(); EmailQueueRepository.EnsurePersistent(emailQueue); EmailQueueRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.IsFalse(emailQueue.IsTransient()); Assert.IsTrue(emailQueue.IsValid()); #endregion Assert }
public void TestEmailWithNullValueSaves() { #region Arrange var emailQueue = GetValid(9); emailQueue.Email = null; #endregion Arrange #region Act EmailQueueRepository.DbContext.BeginTransaction(); EmailQueueRepository.EnsurePersistent(emailQueue); EmailQueueRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.IsFalse(emailQueue.IsTransient()); Assert.IsTrue(emailQueue.IsValid()); #endregion Assert }
public void TestDetailsWithOneSpaceSaves() { #region Arrange var emailQueueV2 = GetValid(9); emailQueueV2.Details = " "; #endregion Arrange #region Act EmailQueueRepository.DbContext.BeginTransaction(); EmailQueueRepository.EnsurePersistent(emailQueueV2); EmailQueueRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.IsFalse(emailQueueV2.IsTransient()); Assert.IsTrue(emailQueueV2.IsValid()); #endregion Assert }
public void TestDateTimeSentWithNullValueWillSave() { #region Arrange EmailQueue record = GetValid(99); record.DateTimeSent = null; #endregion Arrange #region Act EmailQueueRepository.DbContext.BeginTransaction(); EmailQueueRepository.EnsurePersistent(record); EmailQueueRepository.DbContext.CommitChanges(); #endregion Act #region Assert Assert.IsFalse(record.IsTransient()); Assert.IsTrue(record.IsValid()); Assert.AreEqual(null, record.DateTimeSent); #endregion Assert }
public void TestStatusWithLongValueSaves() { #region Arrange var emailQueue = GetValid(9); emailQueue.Status = "x".RepeatTimes(999); #endregion Arrange #region Act EmailQueueRepository.DbContext.BeginTransaction(); EmailQueueRepository.EnsurePersistent(emailQueue); EmailQueueRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.AreEqual(999, emailQueue.Status.Length); Assert.IsFalse(emailQueue.IsTransient()); Assert.IsTrue(emailQueue.IsValid()); #endregion Assert }
public void TestPendingIsFalseSaves() { #region Arrange EmailQueue emailQueue = GetValid(9); emailQueue.Pending = false; #endregion Arrange #region Act EmailQueueRepository.DbContext.BeginTransaction(); EmailQueueRepository.EnsurePersistent(emailQueue); EmailQueueRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.IsFalse(emailQueue.Pending); Assert.IsFalse(emailQueue.IsTransient()); Assert.IsTrue(emailQueue.IsValid()); #endregion Assert }
public void TestEmailQueueWithNullUserSaves() { #region Arrange var record = GetValid(9); record.User = null; #endregion Arrange #region Act EmailQueueRepository.DbContext.BeginTransaction(); EmailQueueRepository.EnsurePersistent(record); EmailQueueRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.AreEqual(null, record.User); Assert.IsFalse(record.IsTransient()); Assert.IsTrue(record.IsValid()); #endregion Assert }
public void TestEmailWithLongValueSaves() { #region Arrange var emailQueue = GetValid(9); emailQueue.Email = emailQueue.Email = string.Format("x{0}@x.x", "x".RepeatTimes((95))); #endregion Arrange #region Act EmailQueueRepository.DbContext.BeginTransaction(); EmailQueueRepository.EnsurePersistent(emailQueue); EmailQueueRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.AreEqual(100, emailQueue.Email.Length); Assert.IsFalse(emailQueue.IsTransient()); Assert.IsTrue(emailQueue.IsValid()); #endregion Assert }
public void TestEmailQueueWithExistingOrderSaves() { #region Arrange var record = GetValid(9); record.Order = OrderRepository.Queryable.Single(a => a.Id == 3); #endregion Arrange #region Act EmailQueueRepository.DbContext.BeginTransaction(); EmailQueueRepository.EnsurePersistent(record); EmailQueueRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.AreEqual(3, record.Order.Id); Assert.IsFalse(record.IsTransient()); Assert.IsTrue(record.IsValid()); #endregion Assert }
public void TestDateTimeSentWithFutureDateDateWillSave() { #region Arrange var compareDate = DateTime.UtcNow.ToPacificTime().AddDays(15); var record = GetValid(99); record.DateTimeSent = compareDate; #endregion Arrange #region Act EmailQueueRepository.DbContext.BeginTransaction(); EmailQueueRepository.EnsurePersistent(record); EmailQueueRepository.DbContext.CommitChanges(); #endregion Act #region Assert Assert.IsFalse(record.IsTransient()); Assert.IsTrue(record.IsValid()); Assert.AreEqual(compareDate, record.DateTimeSent); #endregion Assert }
public UnitOfWork(string connection, IContextService env) { _logger = LoggerFactory.Create(opt => { opt.AddFilter("Microsoft", LogLevel.Warning) .AddFilter("Microsoft.EntityFrameworkCore", LogLevel.Warning) .AddFilter("System", LogLevel.Warning) .AddConsole(); }); switch (env.InstanceType) { case InstanceContext.DeployedOrLocal: case InstanceContext.End2EndTest: case InstanceContext.SystemTest: case InstanceContext.IntegrationTest: { #if !RELEASE var builder = new DbContextOptionsBuilder <IdentityEntities>() .UseSqlServer(connection) .UseLoggerFactory(_logger) .EnableSensitiveDataLogging(); #else var builder = new DbContextOptionsBuilder <IdentityEntities>() .UseSqlServer(connection); #endif _context = new IdentityEntities(builder.Options); } break; case InstanceContext.UnitTest: { //_context = Create.MockedDbContextFor<IdentityEntities>(); } break; default: throw new NotImplementedException(); } _context.ChangeTracker.LazyLoadingEnabled = false; _context.ChangeTracker.CascadeDeleteTiming = CascadeTiming.Immediate; InstanceType = env.InstanceType; Audiences = new AudienceRepository(_context, env); AuthActivity = new AuthActivityRepository(_context); Claims = new ClaimRepository(_context); EmailActivity = new EmailActivityRepository(_context); EmailQueue = new EmailQueueRepository(_context); Issuers = new IssuerRepository(_context); Logins = new LoginRepository(_context); MOTDs = new MOTDRepository(_context); Refreshes = new RefreshRepository(_context); Roles = new RoleRepository(_context); Settings = new SettingRepository(_context); States = new StateRepository(_context); TextActivity = new TextActivityRepository(_context); TextQueue = new TextQueueRepository(_context); Urls = new UrlRepository(_context); Users = new UserRepository(_context, env); }
// Method to Send a E-mail from the queue of unsend E-mails in the database. public static void SendEmailFromQueue() { SqlConnection constr = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString); EmailQueueRepository emailrepo = new EmailQueueRepository(); MailLogRepository mailrepo = new MailLogRepository(); ExceptionRepository exceptionrepo = new ExceptionRepository(); try { Emails email = new Emails(); List <EmailQueue> emails = emailrepo.Read(); for (int i = 0; i < emails.Count; i++) { if (!emails[i].isDeleted && emails[i].Tries < 6) { emailrepo.Delete(emails[i].Id); while (emails[i].Tries < 6) { if (email.Send_Mail(emails[i].ToAddress, emails[i].FromAddress, emails[i].Subject, emails[i].Body)) { MailLog mail = new MailLog() { ToAddress = emails[i].ToAddress, FromAddress = emails[i].FromAddress, Subject = emails[i].Subject, Body = emails[i].Body, EmailStatus = true }; mailrepo.Insert(mail); break; } emails[i].Tries++; emailrepo.Undelete(emails[i].Id); } emailrepo.Update(emails[i]); } } } catch (Exception ex) { MethodBase method = MethodBase.GetCurrentMethod(); Exceptions exception = new Exceptions { Number = ex.HResult.ToString(), Message = ex.Message, Method = method.Name, Url = System.Web.HttpContext.Current.Request.Url.AbsoluteUri }; int r = exceptionrepo.Exception_Create(exception); if (r == 0) { exceptionrepo.Exception_InsertInLogFile(exception); } if (constr.State != ConnectionState.Open) { constr.Close(); constr.Open(); } } }