import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import java.util.regex.Pattern; import static org.junit.jupiter.api.Assertions.*; class PasswordGeneratorTest { static PasswordGenerator passwordGenerator; @BeforeAll static void init() { passwordGenerator = new PasswordGenerator(); } @Test void testGeneratedPasswordLength() { assertNotSame("", passwordGenerator.generateRandomPassword()); assertEquals(passwordGenerator.generateRandomPassword().length(), passwordGenerator.getLength()); passwordGenerator.setLength(33); assertEquals(passwordGenerator.getLength(), 33); assertEquals(passwordGenerator.generateRandomPassword().length(), passwordGenerator.getLength()); } @Test void testPasswordLowercaseRequirement() { passwordGenerator.setUseLowercase(false); assertFalse(Pattern.compile("^(?=.*[a-z]).+$").matcher(passwordGenerator.generateRandomPassword()).matches()); passwordGenerator.setUseLowercase(true); assertTrue(Pattern.compile("^(?=.*[a-z]).+$").matcher(passwordGenerator.generateRandomPassword()).matches()); } @Test void testPasswordUppercaseRequirement() { passwordGenerator.setUseUppercase(false); assertFalse(Pattern.compile("^(?=.*[A-Z]).+$").matcher(passwordGenerator.generateRandomPassword()).matches()); passwordGenerator.setUseUppercase(true); assertTrue(Pattern.compile("^(?=.*[A-Z]).+$").matcher(passwordGenerator.generateRandomPassword()).matches()); } @Test void testPasswordDigitsRequirement() { passwordGenerator.setUseDigits(false); assertFalse(Pattern.compile("^(?=.*\\d).+$").matcher(passwordGenerator.generateRandomPassword()).matches()); passwordGenerator.setUseDigits(true); assertTrue(Pattern.compile("^(?=.*\\d).+$").matcher(passwordGenerator.generateRandomPassword()).matches()); } @Test void testPasswordSpecialCharactersRequirement() { passwordGenerator.setUseSpecialCharacters(false); assertFalse(Pattern.compile("^(?=.*[.!?=@#$()%^&/*_\\-+]).+$").matcher(passwordGenerator.generateRandomPassword()).matches()); passwordGenerator.setUseSpecialCharacters(true); assertTrue(Pattern.compile("^(?=.*[.!?=@#$()%^&/*_\\-+]).+$").matcher(passwordGenerator.generateRandomPassword()).matches()); } @Test void testPasswordForEveryRequiredCharacter() { passwordGenerator.setRequireEveryConfiguredCharacterType(true); PasswordValidator passwordValidator = new PasswordValidator(); assertTrue(passwordValidator.validate(passwordGenerator.generateRandomPassword())); } @Test void testShufflePassword() { String testInput = "ABcdefgh123"; assertNotEquals(passwordGenerator.shufflePassword(testInput), testInput); assertEquals(passwordGenerator.shufflePassword(testInput).length(), testInput.length()); } }