From 5341ff8d16ff222e85d71257a3769c972101edbf Mon Sep 17 00:00:00 2001 From: Mohammad Abdul Aziz Date: Tue, 7 Jul 2026 14:58:46 +0200 Subject: [PATCH] add special character validation --- src/main/java/PasswordValidator.java | 15 +++++++++++++++ src/test/java/PasswordValidatorTest.java | 21 +++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/src/main/java/PasswordValidator.java b/src/main/java/PasswordValidator.java index 2b51ed6..1bf70d0 100644 --- a/src/main/java/PasswordValidator.java +++ b/src/main/java/PasswordValidator.java @@ -81,4 +81,19 @@ public static boolean isValid(String password) { return true; } + + public static boolean containsSpecialChar(String password, String allowed) { + + if (password == null) { + return false; + } + + for (char c : password.toCharArray()) { + if (allowed.indexOf(c) != -1) { + return true; + } + } + + return false; + } } \ No newline at end of file diff --git a/src/test/java/PasswordValidatorTest.java b/src/test/java/PasswordValidatorTest.java index a658c2a..ec3cbea 100644 --- a/src/test/java/PasswordValidatorTest.java +++ b/src/test/java/PasswordValidatorTest.java @@ -143,4 +143,25 @@ void isValidShouldReturnFalseWhenPasswordIsNull() { assertFalse(PasswordValidator.isValid(null)); } + // special char test cases + @Test + void containsSpecialCharShouldReturnTrueWhenPasswordContainsExclamation() { + assertTrue(PasswordValidator.containsSpecialChar("Password1!", "!@#$%^&*()-_+=?.,;:")); + } + + @Test + void containsSpecialCharShouldReturnTrueWhenPasswordContainsAtSign() { + assertTrue(PasswordValidator.containsSpecialChar("Password1@", "!@#$%^&*()-_+=?.,;:")); + } + + @Test + void containsSpecialCharShouldReturnFalseWhenPasswordHasNoSpecialCharacter() { + assertFalse(PasswordValidator.containsSpecialChar("Password1", "!@#$%^&*()-_+=?.,;:")); + } + + @Test + void containsSpecialCharShouldReturnFalseWhenPasswordIsNull() { + assertFalse(PasswordValidator.containsSpecialChar(null, "!@#$%^&*()-_+=?.,;:")); + } + } \ No newline at end of file