示例#1
0
        public void When_User_Is_Unlocked_FailedPasswordAttemptWindowStart_Must_Be_Reset_To_Default()
        {
            // Arrange
            User user = new User("username", password, passwordCoder);

            // Act

            user.IncrementFailedPasswordAttemptCount();
            user.IncrementFailedPasswordAttemptCount();
            user.TryToLockoutUser(2);
            var wasLockedOut = user.IsLockedOut;

            user.UnlockUser();

            // Assert
            Assert.IsTrue(wasLockedOut, "User wasn't ever locked out.");
            Assert.AreEqual(DateTime.MinValue.ToLocalTime(), user.FailedPasswordAttemptWindowStart, "FailedPasswordAttemptWindowstart isn't set to default.");
            Assert.IsTrue(DateTime.MinValue.ToLocalTime() == user.FailedPasswordAttemptWindowStart, "FailedPasswordAttemptWindowstart isn't set to default.");
        }
示例#2
0
        public void When_User_Is_Declared_As_LockedOut_LastLockoutDate_Must_Be_Set()
        {
            // Arrange
            User user = new User("username", password, passwordCoder);

            user.IncrementFailedPasswordAttemptCount();
            user.IncrementFailedPasswordAttemptCount();

            // Act
            user.TryToLockoutUser(2);

            // Assert
            Assert.IsTrue(user.IsLockedOut, "User isn't locked out.");
            Assert.AreNotEqual(DateTime.MinValue.ToLocalTime(), user.LastLockoutDate, "LastLockoutDate isn't set when user is declared as locked out.");
        }
示例#3
0
        public void When_User_Is_Unlocked_FailedPasswordAttemptCount_Must_Be_Reset_To_Zero()
        {
            // Arrange
            User user = new User("username", password, passwordCoder);

            user.IncrementFailedPasswordAttemptCount();
            user.IncrementFailedPasswordAttemptCount();

            // Act
            user.UnlockUser();

            // Assert
            Assert.AreEqual(0, user.FailedPasswordAnswerAttemptCount, "FailedPasswordAttemptCount isn't set to zero.");
        }
示例#4
0
        public void When_Incrementing_FailedPasswordAttemptCount_Must_Set_Its_StartWindow()
        {
            // Arrange
            User user = new User("username", password, passwordCoder);

            // Act
            user.IncrementFailedPasswordAttemptCount();
            user.IncrementFailedPasswordAttemptCount();

            // Assert
            Assert.IsTrue(user.FailedPasswordAttemptWindowStart > DateTime.MinValue.ToLocalTime(), "FailedPasswordAttemptWindowStart is not changed.");
            Assert.AreNotEqual(DateTime.MinValue.ToLocalTime(), user.FailedPasswordAttemptWindowStart, "FailedPasswordAttemptWindowStart and DateTime.MinValue are equal.");
        }
示例#5
0
        public void If_Time_Of_Tracking_Bad_Attempts_Is_Passed_Counters_Must_Be_Reset()
        {
            // Arrange
            User user = new User("username", password, passwordCoder);

            user.IncrementFailedPasswordAttemptCount();
            user.IncrementFailedPasswordAttemptCount();
            user.IncrementFailedPasswordAnswerAttemptCount();

            PropertyInfo passwordAnswerProperty = user.GetType().GetProperty("FailedPasswordAnswerAttemptWindowStart",
                BindingFlags.Public | BindingFlags.Instance);

            passwordAnswerProperty.SetValue(user, DateTime.Now.AddMinutes(-30), null);

            PropertyInfo passwordProperty = user.GetType().GetProperty("FailedPasswordAttemptWindowStart",
                BindingFlags.Public | BindingFlags.Instance);
            passwordProperty.SetValue(user, DateTime.Now.AddMinutes(-30), null);

            // Act
            user.CheckTrackingFailedAttempts(1);

            // Assert
            Assert.AreEqual(0, user.FailedPasswordAnswerAttemptCount, "FailedPasswordAnswerAttempt counter isn't reset.");
            Assert.AreEqual(DateTime.MinValue.ToLocalTime(), user.FailedPasswordAnswerAttemptWindowStart, "FailedPasswordAnswerAttemptWindowStart isn't reset to min datetime.");
            Assert.AreEqual(0, user.FailedPasswordAttemptCount, "FailedPasswordAttempt counter isn't reset.");
            Assert.AreEqual(DateTime.MinValue.ToLocalTime(), user.FailedPasswordAttemptWindowStart, "FailedPasswordAttemptWindowStart isn't reset to min datetime.");
        }
示例#6
0
        public void If_Time_Of_Tracking_Bad_Attempts_Is_Not_Passed_Counters_Must_Be_Reset()
        {
            // Arrange
            User user = new User("username", password, passwordCoder);

            user.IncrementFailedPasswordAttemptCount();
            user.IncrementFailedPasswordAttemptCount();

            // Act
            user.CheckTrackingFailedAttempts(30);

            // Assert
            Assert.AreEqual(0, user.FailedPasswordAnswerAttemptCount, "FailedPasswordAnswerAttempt counter is reset.");
            Assert.AreEqual(2, user.FailedPasswordAttemptCount, "FailedPasswordAttempt counter is reset.");
        }
示例#7
0
        public void Can_Reset_FailedPasswordAttemptCount()
        {
            // Arrange
            User user = new User("username", password, passwordCoder);

            user.IncrementFailedPasswordAttemptCount();
            user.IncrementFailedPasswordAttemptCount();

            // Act
            user.ResetFailedPasswordAttemptCount();

            // Assert
            Assert.AreEqual(0, user.FailedPasswordAttemptCount, "FailedPasswordAttemptCount isn't set to zero.");
        }
示例#8
0
        public void Can_Increment_FailedPasswordAttemptCount()
        {
            // Arrange
            User user = new User("username", password, passwordCoder);

            // Act
            user.IncrementFailedPasswordAttemptCount();
            user.IncrementFailedPasswordAttemptCount();
            user.IncrementFailedPasswordAttemptCount();

            // Assert
            Assert.AreEqual(3, user.FailedPasswordAttemptCount, "Can't increment FailedPasswordAttemptCount.");
        }