Skip to content

Commit

Permalink
PasswordValidator should use PECS generic.
Browse files Browse the repository at this point in the history
Fixes #55.
  • Loading branch information
dfish3r committed May 10, 2017
1 parent 5652181 commit 6662550
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 5 deletions.
6 changes: 3 additions & 3 deletions src/main/java/org/passay/PasswordValidator.java
Expand Up @@ -18,7 +18,7 @@ public class PasswordValidator implements Rule
{

/** Password rules. */
private final List<Rule> passwordRules;
private final List<? extends Rule> passwordRules;

/** Message resolver. */
private final MessageResolver messageResolver;
Expand All @@ -40,7 +40,7 @@ public PasswordValidator(final Rule... rules)
*
* @param rules to validate
*/
public PasswordValidator(final List<Rule> rules)
public PasswordValidator(final List<? extends Rule> rules)
{
this(new PropertiesMessageResolver(), rules);
}
Expand All @@ -64,7 +64,7 @@ public PasswordValidator(final MessageResolver resolver, final Rule... rules)
* @param resolver message resolver.
* @param rules to validate
*/
public PasswordValidator(final MessageResolver resolver, final List<Rule> rules)
public PasswordValidator(final MessageResolver resolver, final List<? extends Rule> rules)
{
messageResolver = resolver;
passwordRules = rules;
Expand Down
Expand Up @@ -33,7 +33,9 @@ private RandomPasswordEntropyFactory() {}
*
* @return random password entropy
*/
public static RandomPasswordEntropy createEntropy(final List<Rule> passwordRules, final PasswordData passwordData)
public static RandomPasswordEntropy createEntropy(
final List<? extends Rule> passwordRules,
final PasswordData passwordData)
{
if (!passwordData.getOrigin().equals(PasswordData.Origin.Generated)) {
throw new IllegalArgumentException("Password data must have an origin of " + PasswordData.Origin.Generated);
Expand Down
Expand Up @@ -50,7 +50,7 @@ private ShannonEntropyFactory() {}
*
* @return shannon entropy
*/
public static ShannonEntropy createEntropy(final List<Rule> passwordRules, final PasswordData passwordData)
public static ShannonEntropy createEntropy(final List<? extends Rule> passwordRules, final PasswordData passwordData)
{
final boolean dictionaryCheck = passwordRules.stream().filter(
rule -> AbstractDictionaryRule.class.isAssignableFrom(
Expand Down
14 changes: 14 additions & 0 deletions src/test/java/org/passay/PasswordValidatorTest.java
Expand Up @@ -621,4 +621,18 @@ public Object[][] messages()
},
};
}


/** @throws Exception On test failure. */
@Test(groups = {"passtest"})
public void producerExtends() throws Exception
{
// test that password validator will accept any list of rules that extends Rule
final List<CharacterRule> l = new ArrayList<>();
l.add(new CharacterRule(EnglishCharacterData.LowerCase));
l.add(new CharacterRule(EnglishCharacterData.UpperCase));
new PasswordValidator(l);
new PasswordValidator(
new CharacterRule(EnglishCharacterData.LowerCase), new CharacterRule(EnglishCharacterData.UpperCase));
}
}

0 comments on commit 6662550

Please sign in to comment.