From 660844010e0b0870d93136fbc957aca42340773c Mon Sep 17 00:00:00 2001 From: binsky Date: Sat, 5 Feb 2022 14:52:48 +0100 Subject: [PATCH] implement check for existing lowercase character in password --- src/main/java/PasswordValidator.java | 12 ++++++++++++ src/test/java/PasswordValidatorTest.java | 9 +++++++++ 2 files changed, 21 insertions(+) diff --git a/src/main/java/PasswordValidator.java b/src/main/java/PasswordValidator.java index 5c126a7..71367da 100644 --- a/src/main/java/PasswordValidator.java +++ b/src/main/java/PasswordValidator.java @@ -3,14 +3,18 @@ import java.util.regex.Pattern; public class PasswordValidator { int minLength = 6; boolean requireUppercase = true; + boolean requireLowercase = true; private final Pattern uppercasePattern = Pattern.compile("^(?=.*[A-Z]).+$"); + private final Pattern lowercasePattern = Pattern.compile("^(?=.*[a-z]).+$"); public boolean validate(String password) { if (password.length() < minLength) { return false; } else if (requireUppercase && !uppercasePattern.matcher(password).matches()) { return false; + } else if (requireLowercase && !lowercasePattern.matcher(password).matches()) { + return false; } return true; } @@ -30,4 +34,12 @@ public class PasswordValidator { public void setRequireUppercase(boolean requireUppercase) { this.requireUppercase = requireUppercase; } + + public boolean isRequireLowercase() { + return requireLowercase; + } + + public void setRequireLowercase(boolean requireLowercase) { + this.requireLowercase = requireLowercase; + } } diff --git a/src/test/java/PasswordValidatorTest.java b/src/test/java/PasswordValidatorTest.java index 9794e36..96c050d 100644 --- a/src/test/java/PasswordValidatorTest.java +++ b/src/test/java/PasswordValidatorTest.java @@ -12,14 +12,23 @@ class PasswordValidatorTest { // test minimum password length passwordValidator.setMinLength(6); passwordValidator.setRequireUppercase(false); + passwordValidator.setRequireLowercase(false); assertFalse(passwordValidator.validate("abcde")); assertTrue(passwordValidator.validate("abcdef")); assertTrue(passwordValidator.validate("abcdefg")); // test uppercase requirement passwordValidator.setRequireUppercase(true); + passwordValidator.setRequireLowercase(false); assertFalse(passwordValidator.validate("abcdef")); assertTrue(passwordValidator.validate("abCdef")); assertTrue(passwordValidator.validate("ABCDEF")); + + // test lowercase requirement + passwordValidator.setRequireUppercase(true); + passwordValidator.setRequireLowercase(true); + assertFalse(passwordValidator.validate("abcdef")); + assertTrue(passwordValidator.validate("abCdef")); + assertFalse(passwordValidator.validate("ABCDEF")); } }