public void InsertInvalidRoleValuePositive()
        {
            var source = new DomainSource();
            var user   = User();

            user.RoleValue = 2;
            source.Insert(user);
        }
        public void InsertInvalidLastLoggedInOn()
        {
            var source = new DomainSource();
            var user   = User();

            user.LastLoggedInOn = DateTime.UtcNow.AddDays(1);
            source.Insert(user);
        }
        public void InsertInvalidPartitionKey()
        {
            var source = new DomainSource();
            var user   = User();

            user.PartitionKey = StringHelper.NullEmptyWhiteSpace();
            source.Insert(user);
        }
        public void InsertInvalidNameIdentifier()
        {
            var source = new DomainSource();
            var user   = User();

            user.NameIdentifier = StringHelper.NullEmptyWhiteSpace();
            source.Insert(user);
        }
        public void InsertInvalidPasswordLastChangedOn()
        {
            var source = new DomainSource();
            var user   = User();

            user.PasswordLastChangedOn = DateTime.UtcNow.AddDays(1);
            source.Insert(user);
        }
        public void InsertInvalidRoleValueNegative()
        {
            var    source = new DomainSource();
            var    user   = User();
            Random random = new Random();

            user.RoleValue = random.Next(-1);
            source.Insert(user);
        }
        public void UpdateUser()
        {
            var source = new DomainSource();
            var user   = User();

            source.Insert(user);

            var saved = source.GetUserById(user.ApplicationId, user.Id);

            Assert.IsNotNull(saved);
            Assert.AreEqual <DateTime>(saved.CreatedOn, user.CreatedOn);
            Assert.AreEqual <DateTime>(saved.LastLoggedInOn, user.LastLoggedInOn);
            Assert.AreEqual <DateTime>(saved.LastActivityOn, user.LastActivityOn);
            Assert.AreEqual <DateTime>(saved.PasswordLastChangedOn, user.PasswordLastChangedOn);
            Assert.AreEqual <string>(saved.Email, user.Email);
            Assert.AreEqual <string>(saved.OpenId, user.OpenId);
            Assert.AreEqual <string>(saved.UserName, user.UserName);
            Assert.AreEqual <int>(saved.RoleValue, user.RoleValue);
            Assert.AreEqual <bool>(saved.IsApproved, user.IsApproved);
            Assert.AreEqual <bool>(saved.IsLockedOut, user.IsLockedOut);
            Assert.AreEqual <DateTime>(saved.LastLockedOutOn, user.LastLockedOutOn);

            var preUpdate = user;

            preUpdate.LastLoggedInOn        = DateTime.UtcNow.AddHours(-34);
            preUpdate.IsLockedOut           = true;
            preUpdate.IsApproved            = false;
            preUpdate.LastActivityOn        = DateTime.UtcNow.AddHours(-88);
            preUpdate.Email                 = StringHelper.ValidString();
            preUpdate.OpenId                = StringHelper.ValidString();
            preUpdate.PasswordLastChangedOn = DateTime.UtcNow.AddHours(-22);

            source.Update(preUpdate);

            var updated = source.GetUserById(user.ApplicationId, user.Id);

            Assert.IsNotNull(preUpdate);
            Assert.AreEqual <DateTime>(preUpdate.CreatedOn, updated.CreatedOn);
            Assert.AreEqual <DateTime>(preUpdate.LastLoggedInOn.Date, updated.LastLoggedInOn.Date);
            Assert.AreEqual <DateTime>(preUpdate.LastActivityOn.Date, updated.LastActivityOn.Date);
            Assert.AreEqual <DateTime>(preUpdate.PasswordLastChangedOn.Date, updated.PasswordLastChangedOn.Date);
            Assert.AreEqual <string>(preUpdate.Email, updated.Email);
            Assert.AreEqual <string>(preUpdate.OpenId, updated.OpenId);
            Assert.AreEqual <string>(preUpdate.UserName, updated.UserName);
            Assert.AreEqual <int>(preUpdate.RoleValue, updated.RoleValue);
            Assert.AreEqual <bool>(preUpdate.IsApproved, updated.IsApproved);
            Assert.AreEqual <bool>(preUpdate.IsLockedOut, updated.IsLockedOut);
            Assert.AreEqual <DateTime>(preUpdate.LastLockedOutOn, updated.LastLockedOutOn);
        }
        public void GetUserById()
        {
            var source = new DomainSource();
            var user   = User();

            source.Insert(user);

            var saved = source.GetUserById(user.ApplicationId, user.Id);

            Assert.IsNotNull(saved);
            Assert.AreEqual <DateTime>(saved.CreatedOn, user.CreatedOn);
            Assert.AreEqual <DateTime>(saved.LastLoggedInOn, user.LastLoggedInOn);
            Assert.AreEqual <DateTime>(saved.LastActivityOn, user.LastActivityOn);
            Assert.AreEqual <DateTime>(saved.PasswordLastChangedOn, user.PasswordLastChangedOn);
            Assert.AreEqual <string>(saved.Email, user.Email);
            Assert.AreEqual <string>(saved.OpenId, user.OpenId);
            Assert.AreEqual <string>(saved.UserName, user.UserName);
            Assert.AreEqual <int>(saved.RoleValue, user.RoleValue);
            Assert.AreEqual <bool>(saved.IsApproved, user.IsApproved);
            Assert.AreEqual <bool>(saved.IsLockedOut, user.IsLockedOut);
            Assert.AreEqual <DateTime>(saved.LastLockedOutOn, user.LastLockedOutOn);
        }
        public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool approved, object providerUserKey, out MembershipCreateStatus status)
        {
            using (new PerformanceMonitor())
            {
                MembershipUser membership = null;
                status = MembershipCreateStatus.UserRejected;

                UserData userValidation = null;
                if (!string.IsNullOrWhiteSpace(email))
                {
                    userValidation = source.GetUserByEmail(Application.Default.Identifier, email);
                    if (null != userValidation)
                    {
                        status = MembershipCreateStatus.DuplicateEmail;
                    }
                }

                if (!string.IsNullOrWhiteSpace(username))
                {
                    userValidation = source.GetUserByEmail(Application.Default.Identifier, username);
                    if (null != userValidation)
                    {
                        status = MembershipCreateStatus.DuplicateUserName;
                    }
                }

                if (null == userValidation)
                {
                    userValidation = source.GetUserByNameIdentifier(Application.Default.Identifier, providerUserKey.ToString());
                    if (null != userValidation)
                    {
                        status = MembershipCreateStatus.DuplicateProviderUserKey;
                    }
                    else
                    {
                        var user = new UserData(email, providerUserKey.ToString(), username)
                        {
                            RoleValue = (int)TableMembershipProvider.DetermineRoleType(email),
                        };

                        source.Insert(user);

                        var returnedUser = source.GetUserById(Application.Default.Identifier, user.Id);
                        if (null == returnedUser)
                        {
                            status = MembershipCreateStatus.ProviderError;
                        }
                        else if (!returnedUser.IsApproved)
                        {
                            status = MembershipCreateStatus.UserRejected;
                        }
                        else if (returnedUser.IsLockedOut)
                        {
                            status = MembershipCreateStatus.UserRejected;
                        }
                        else
                        {
                            status     = MembershipCreateStatus.Success;
                            membership = new MembershipUser(ProviderName, returnedUser.UserName, returnedUser.NameIdentifier, returnedUser.Email, passwordQuestion, string.Empty, returnedUser.IsApproved, returnedUser.IsLockedOut, returnedUser.CreatedOn, returnedUser.LastLoggedInOn, returnedUser.LastActivityOn, returnedUser.PasswordLastChangedOn, returnedUser.LastLockedOutOn);

                            logger.Log("New user signed up.");
                        }
                    }
                }

                return(membership);
            }
        }
        public void InsertNullUserData()
        {
            var source = new DomainSource();

            source.Insert(null);
        }