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.

77 lines
3.3 KiB

  1. import org.junit.jupiter.api.Test;
  2. import static org.junit.jupiter.api.Assertions.*;
  3. class PasswordValidatorTest {
  4. @Test
  5. void validate() {
  6. PasswordValidator passwordValidator = new PasswordValidator();
  7. assertFalse(passwordValidator.validate(""));
  8. // test minimum password length
  9. passwordValidator.setMinLength(6);
  10. passwordValidator.setRequireUppercase(false);
  11. passwordValidator.setRequireLowercase(false);
  12. passwordValidator.setRequireDigit(false);
  13. passwordValidator.setCheckPwned(false);
  14. assertFalse(passwordValidator.validate("abcde"));
  15. assertTrue(passwordValidator.validate("abcdef"));
  16. assertTrue(passwordValidator.validate("abcdefg"));
  17. // test uppercase requirement
  18. passwordValidator.setRequireUppercase(true);
  19. passwordValidator.setRequireLowercase(false);
  20. passwordValidator.setRequireDigit(false);
  21. passwordValidator.setCheckPwned(false);
  22. assertFalse(passwordValidator.validate("abcdef"));
  23. assertTrue(passwordValidator.validate("abCdef"));
  24. assertTrue(passwordValidator.validate("ABCDEF"));
  25. // test lowercase requirement
  26. passwordValidator.setRequireUppercase(true);
  27. passwordValidator.setRequireLowercase(true);
  28. passwordValidator.setRequireDigit(false);
  29. passwordValidator.setCheckPwned(false);
  30. assertFalse(passwordValidator.validate("abcdef"));
  31. assertTrue(passwordValidator.validate("abCdef"));
  32. assertFalse(passwordValidator.validate("ABCDEF"));
  33. // test digits requirement
  34. passwordValidator.setRequireUppercase(true);
  35. passwordValidator.setRequireLowercase(true);
  36. passwordValidator.setRequireDigit(true);
  37. passwordValidator.setCheckPwned(false);
  38. assertFalse(passwordValidator.validate("8"));
  39. assertFalse(passwordValidator.validate("12345678"));
  40. assertFalse(passwordValidator.validate("abcdef"));
  41. assertFalse(passwordValidator.validate("abcdef8"));
  42. assertFalse(passwordValidator.validate("abCdef"));
  43. assertFalse(passwordValidator.validate("ABCDEF"));
  44. assertFalse(passwordValidator.validate("ABCDEF8"));
  45. assertTrue(passwordValidator.validate("abCDE8F"));
  46. // test password pwned check
  47. passwordValidator.setRequireUppercase(true);
  48. passwordValidator.setRequireLowercase(true);
  49. passwordValidator.setRequireDigit(true);
  50. passwordValidator.setCheckPwned(true);
  51. assertFalse(passwordValidator.validate("8"));
  52. assertFalse(passwordValidator.validate("asdf12"));
  53. assertTrue(passwordValidator.validate("=phan0johB4aisae6Mie0jeip9Saejahc0iuvuth7ahv9uoni6o*_.+"));
  54. }
  55. @Test
  56. void getSHA1Hash() {
  57. assertEquals("356A192B7913B04C54574D18C28D46E6395428AB".toLowerCase(), PasswordValidator.getSHA1Hash("1"));
  58. assertEquals("A233F0E898ED0661D6D47ED0958F16B52E537231".toLowerCase(), PasswordValidator.getSHA1Hash("asdf12"));
  59. assertNull(PasswordValidator.getSHA1Hash(""));
  60. }
  61. @Test
  62. void isPwned() {
  63. assertTrue(PasswordValidator.isPwned("asdf12"));
  64. assertFalse(PasswordValidator.isPwned("=phan0johB4aisae6Mie0jeip9Saejahc0iuvuth7ahv9uoni6o*_.+"));
  65. assertFalse(PasswordValidator.isPwned(""));
  66. }
  67. }