/// <summary> /// Generates a password according to provided parameters. /// </summary> /// <param name="length">The length.</param> /// <param name="passwordPattern">The password pattern.</param> /// <param name="passwordCase">The password case.</param> /// <returns></returns> public string Generate(int length, PasswordPattern passwordPattern, PasswordCase passwordCase) { StringBuilder sb = new StringBuilder(length); char[] passwordValues = new char[0]; int oldArrayLength = 0; switch(passwordPattern) { case PasswordPattern.AlphaNumericExtended: // Add Extended Chars oldArrayLength = passwordValues.Length; Array.Resize(ref passwordValues, extendedValues.Length); extendedValues.CopyTo(passwordValues, oldArrayLength); goto case PasswordPattern.Alpha; case PasswordPattern.AlphaNumeric: case PasswordPattern.Alpha: oldArrayLength = passwordValues.Length; switch(passwordCase) { case PasswordCase.Lowercase: Array.Resize(ref passwordValues, passwordValues.Length + alphaLowValues.Length); alphaLowValues.CopyTo(passwordValues, oldArrayLength); break; case PasswordCase.Uppercase: Array.Resize(ref passwordValues, passwordValues.Length + alahaUpValues.Length); alahaUpValues.CopyTo(passwordValues, oldArrayLength); break; case PasswordCase.Mixed: Array.Resize(ref passwordValues, passwordValues.Length + alphaLowValues.Length + alahaUpValues.Length); alphaLowValues.CopyTo(passwordValues, oldArrayLength); alahaUpValues.CopyTo(passwordValues, oldArrayLength + alphaLowValues.Length); break; } if(passwordPattern == PasswordPattern.AlphaNumeric || passwordPattern == PasswordPattern.AlphaNumericExtended) goto case PasswordPattern.Numeric; break; case PasswordPattern.Numeric: oldArrayLength = passwordValues.Length; Array.Resize(ref passwordValues, passwordValues.Length + numericValues.Length); numericValues.CopyTo(passwordValues, oldArrayLength); break; } for (int i = 0; i < length; i++) { sb.Append(selectRandomChar(passwordValues)); } return sb.ToString(); }
public void PasswordPatternNotMatches(string pattern, string password) { var passwordPattern = new PasswordPattern(pattern); passwordPattern.IsMatch(password).Should().BeFalse(); }