You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
2.9 KiB

  1. import org.junit.jupiter.api.BeforeAll;
  2. import org.junit.jupiter.api.Test;
  3. import java.util.regex.Pattern;
  4. import static org.junit.jupiter.api.Assertions.*;
  5. class PasswordGeneratorTest {
  6. static PasswordGenerator passwordGenerator;
  7. @BeforeAll
  8. static void init() {
  9. passwordGenerator = new PasswordGenerator();
  10. }
  11. @Test
  12. void testGeneratedPasswordLength() {
  13. assertNotSame("", passwordGenerator.generateRandomPassword());
  14. assertEquals(passwordGenerator.generateRandomPassword().length(), passwordGenerator.getLength());
  15. passwordGenerator.setLength(33);
  16. assertEquals(passwordGenerator.getLength(), 33);
  17. assertEquals(passwordGenerator.generateRandomPassword().length(), passwordGenerator.getLength());
  18. }
  19. @Test
  20. void testPasswordLowercaseRequirement() {
  21. passwordGenerator.setUseLowercase(false);
  22. assertFalse(Pattern.compile("^(?=.*[a-z]).+$").matcher(passwordGenerator.generateRandomPassword()).matches());
  23. passwordGenerator.setUseLowercase(true);
  24. assertTrue(Pattern.compile("^(?=.*[a-z]).+$").matcher(passwordGenerator.generateRandomPassword()).matches());
  25. }
  26. @Test
  27. void testPasswordUppercaseRequirement() {
  28. passwordGenerator.setUseUppercase(false);
  29. assertFalse(Pattern.compile("^(?=.*[A-Z]).+$").matcher(passwordGenerator.generateRandomPassword()).matches());
  30. passwordGenerator.setUseUppercase(true);
  31. assertTrue(Pattern.compile("^(?=.*[A-Z]).+$").matcher(passwordGenerator.generateRandomPassword()).matches());
  32. }
  33. @Test
  34. void testPasswordDigitsRequirement() {
  35. passwordGenerator.setUseDigits(false);
  36. assertFalse(Pattern.compile("^(?=.*\\d).+$").matcher(passwordGenerator.generateRandomPassword()).matches());
  37. passwordGenerator.setUseDigits(true);
  38. assertTrue(Pattern.compile("^(?=.*\\d).+$").matcher(passwordGenerator.generateRandomPassword()).matches());
  39. }
  40. @Test
  41. void testPasswordSpecialCharactersRequirement() {
  42. passwordGenerator.setUseSpecialCharacters(false);
  43. assertFalse(Pattern.compile("^(?=.*[.!?=@#$()%^&/*_\\-+]).+$").matcher(passwordGenerator.generateRandomPassword()).matches());
  44. passwordGenerator.setUseSpecialCharacters(true);
  45. assertTrue(Pattern.compile("^(?=.*[.!?=@#$()%^&/*_\\-+]).+$").matcher(passwordGenerator.generateRandomPassword()).matches());
  46. }
  47. @Test
  48. void testPasswordForEveryRequiredCharacter() {
  49. passwordGenerator.setRequireEveryConfiguredCharacterType(true);
  50. PasswordValidator passwordValidator = new PasswordValidator();
  51. assertTrue(passwordValidator.validate(passwordGenerator.generateRandomPassword()));
  52. }
  53. @Test
  54. void testShufflePassword() {
  55. String testInput = "ABcdefgh123";
  56. assertNotEquals(passwordGenerator.shufflePassword(testInput), testInput);
  57. assertEquals(passwordGenerator.shufflePassword(testInput).length(), testInput.length());
  58. }
  59. }