public void EverythingCombinedTest1()
        {
            var p = new PasswordPolicyConfiguration
            {
                DisallowedChars = "abc",
                MaxNumberOfAllowedRepetitions = 4,
                MinNumberOfDigits             = 1,
                MinNumberOfLowerCaseChars     = 1,
                MinNumberOfSymbols            = 1,
                MinNumberOfUpperCaseChars     = 1,
                MinPasswordLength             = 7,
                SelectedSymbols = "~!@"
            };
            var regex = new Regex(PasswordPolicyCheckBuilder.GetRegularExpression(p));

            Assert.IsFalse(regex.IsMatch("PjGar3gS"));
            Assert.IsFalse(regex.IsMatch("PjGzr3gS"));
            Assert.IsFalse(regex.IsMatch("pjg~zr3gs"));
            Assert.IsFalse(regex.IsMatch("Pjg~gg3gg"));

            Assert.IsTrue(regex.IsMatch("PjG~zr3gS"));
            Assert.IsTrue(regex.IsMatch("j4Jf!Lpx4"));
            Assert.IsTrue(regex.IsMatch("9LzMx@Stv"));
            Assert.IsTrue(regex.IsMatch("MB5uu!@Uwf"));
            Assert.IsTrue(regex.IsMatch("9Uv9H~~nh7"));
        }
        public void DisallowedCharsTest2()
        {
            var p = new PasswordPolicyConfiguration {
                DisallowedChars = @"\"
            };
            var regex = new Regex(PasswordPolicyCheckBuilder.GetRegularExpression(p));

            Assert.IsFalse(regex.IsMatch(@"1\23456"));
            Assert.IsTrue(regex.IsMatch("1234567"));
        }
        public void DisallowedCharsTest1()
        {
            var p = new PasswordPolicyConfiguration {
                DisallowedChars = "abcdefghijklmnopqrstuvwxyz"
            };
            var regex = new Regex(PasswordPolicyCheckBuilder.GetRegularExpression(p));

            Assert.IsFalse(regex.IsMatch("123456a"));
            Assert.IsTrue(regex.IsMatch("1234567"));
        }
        public void MinPasswordLengthTest()
        {
            var p = new PasswordPolicyConfiguration {
                MinPasswordLength = 7
            };
            var regex = new Regex(PasswordPolicyCheckBuilder.GetRegularExpression(p));

            Assert.IsFalse(regex.IsMatch("123456"));
            Assert.IsTrue(regex.IsMatch("1234567"));
        }
        public void CombinedMinNumberOfCharsTest()
        {
            var p = new PasswordPolicyConfiguration {
                MinNumberOfUpperCaseChars = 6, MinNumberOfLowerCaseChars = 10
            };
            var regex = new Regex(PasswordPolicyCheckBuilder.GetRegularExpression(p));

            Assert.IsFalse(regex.IsMatch("abcdefghABCDEFGH"));
            Assert.IsTrue(regex.IsMatch("aAbBcCdDeEfFgGhHijklmnop"));
        }
        public void MinPasswordLengthMinNumberOfLowerCaseCharsTest()
        {
            var p = new PasswordPolicyConfiguration {
                MinPasswordLength = 6, MinNumberOfLowerCaseChars = 10
            };
            var regex = new Regex(PasswordPolicyCheckBuilder.GetRegularExpression(p));

            Assert.IsFalse(regex.IsMatch("abcdefgh"));
            Assert.IsTrue(regex.IsMatch("abcdefghijklmnop"));
        }
        public void MinNumberOfSymbolsTest1()
        {
            var p = new PasswordPolicyConfiguration {
                MinNumberOfSymbols = 3
            };
            var regex = new Regex(PasswordPolicyCheckBuilder.GetRegularExpression(p));

            Assert.IsFalse(regex.IsMatch("123456"));
            Assert.IsFalse(regex.IsMatch("12A3456$"));
            Assert.IsFalse(regex.IsMatch("12AB34##56"));
            Assert.IsTrue(regex.IsMatch("123!4@5#67"));
            Assert.IsTrue(regex.IsMatch("1234567!@#"));
            Assert.IsTrue(regex.IsMatch("!@#1234567"));
        }
        public void MaxNumberOfAllowedRepetitionsTest3()
        {
            var p = new PasswordPolicyConfiguration {
                MaxNumberOfAllowedRepetitions = 3
            };
            var regex = new Regex(PasswordPolicyCheckBuilder.GetRegularExpression(p));

            Assert.IsFalse(regex.IsMatch("1A23AA4567A"));
            Assert.IsFalse(regex.IsMatch("A1A2A3456A"));
            Assert.IsFalse(regex.IsMatch("AA234A56A"));

            Assert.IsTrue(regex.IsMatch("1234567"));
            Assert.IsTrue(regex.IsMatch("A12A34567"));
            Assert.IsTrue(regex.IsMatch("A23A45A6"));
        }
        public void MinNumberOfSymbolsTest2()
        {
            var p = new PasswordPolicyConfiguration {
                MinNumberOfSymbols = 3, SelectedSymbols = "^&*"
            };
            var regex = new Regex(PasswordPolicyCheckBuilder.GetRegularExpression(p));

            Assert.IsFalse(regex.IsMatch("123456"));
            Assert.IsFalse(regex.IsMatch("12A3456$"));
            Assert.IsFalse(regex.IsMatch("12AB34##56"));
            Assert.IsFalse(regex.IsMatch("12AB34#^&56"));
            Assert.IsTrue(regex.IsMatch("123^4&5*67"));
            Assert.IsTrue(regex.IsMatch("1234567^&*"));
            Assert.IsTrue(regex.IsMatch("&*^1234567"));
        }
        public void MinNumberOfLowerCaseCharsTest()
        {
            var p = new PasswordPolicyConfiguration {
                MinNumberOfLowerCaseChars = 3
            };
            var regex = new Regex(PasswordPolicyCheckBuilder.GetRegularExpression(p));

            Assert.IsFalse(regex.IsMatch("123456"));
            Assert.IsFalse(regex.IsMatch("12a3456"));
            Assert.IsFalse(regex.IsMatch("12ab3456"));
            Assert.IsFalse(regex.IsMatch("ABC1234567"));
            Assert.IsTrue(regex.IsMatch("123a4b5c67"));
            Assert.IsTrue(regex.IsMatch("1234567abc"));
            Assert.IsTrue(regex.IsMatch("abc1234567"));
            Assert.IsTrue(regex.IsMatch("óöô1234567"));
        }
        public void MinNumberOfUpperCaseCharsTest()
        {
            var p = new PasswordPolicyConfiguration {
                MinNumberOfUpperCaseChars = 3
            };
            var regex = new Regex(PasswordPolicyCheckBuilder.GetRegularExpression(p));

            Assert.IsFalse(regex.IsMatch("123456"));
            Assert.IsFalse(regex.IsMatch("12A3456"));
            Assert.IsFalse(regex.IsMatch("12AB3456"));
            Assert.IsFalse(regex.IsMatch("abc1234567"));
            Assert.IsTrue(regex.IsMatch("123A4B5C67"));
            Assert.IsTrue(regex.IsMatch("1234567ABC"));
            Assert.IsTrue(regex.IsMatch("ABC1234567"));
            Assert.IsTrue(regex.IsMatch("ÓÖÔ1234567"));
        }