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;
            }
        }
Beispiel #7
0
        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
        }
Beispiel #10
0
        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
        }
Beispiel #18
0
        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);
        }
Beispiel #19
0
        // 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();
                }
            }
        }