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.

50 lines
1.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. }