I'm using the passay library for validating password against a list of requirements:
<dependencies>
<dependency>
<groupId>org.passay</groupId>
<artifactId>passay</artifactId>
<version>1.4.0</version>
</dependency>
</dependencies>
One of my requirements is that a password must not have any sequence of characters immediately followed by the same sequence. For instance:
I tried using RepeatCharactersRule (javadocs), but that Rule is only for sequence of the same characters (it will find 'aaa', but not 'abab').
Does passay have any rule for doing this or will I have to write a custom rule?
Well, I don't think it does, but you don't have to write your own rule, try this if you want:
public class RepeatingSequenceRegexTest {
final PasswordValidator validator = new PasswordValidator(
new IllegalRegexRule("(.{1,})\\1")
);
@Test
public void checks() {
assertTrue(validator.validate(new PasswordData("normal")).isValid());
assertTrue(validator.validate(new PasswordData("abcdef")).isValid());
assertTrue(validator.validate(new PasswordData("abacadaeaf")).isValid());
assertTrue(validator.validate(new PasswordData("xyzxy")).isValid());
assertTrue(validator.validate(new PasswordData("12345")).isValid());
assertTrue(validator.validate(new PasswordData("121314")).isValid());
assertTrue(validator.validate(new PasswordData("1234123121")).isValid());
assertTrue(validator.validate(new PasswordData("123xy123")).isValid());
assertTrue(validator.validate(new PasswordData("1")).isValid());
assertTrue(validator.validate(new PasswordData("")).isValid());
assertFalse(validator.validate(new PasswordData("apple")).isValid());
assertFalse(validator.validate(new PasswordData("banana")).isValid());
assertFalse(validator.validate(new PasswordData("112233")).isValid());
assertFalse(validator.validate(new PasswordData("123123")).isValid());
assertFalse(validator.validate(new PasswordData("1212")).isValid());
assertFalse(validator.validate(new PasswordData("11")).isValid());
assertFalse(validator.validate(new PasswordData("123xy123xy")).isValid());
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With