validators.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import assert from 'assert';
  2. import * as validators from 'misago/utils/validators';
  3. describe("Validator", function() {
  4. it("required validator", function() {
  5. assert.equal(validators.required()('yup'), undefined,
  6. "non-empty string passed validation.");
  7. assert.equal(
  8. validators.required()(' '), gettext("This field is required."),
  9. "empty string failed validation.");
  10. });
  11. it("email validator", function() {
  12. assert.equal(validators.email()('simple@email.com'), undefined,
  13. "simple e-mail passed validation.");
  14. assert.equal(validators.email()('si.mp.le@ema.il.com'), undefined,
  15. "dotted e-mail passed validation.");
  16. assert.equal(validators.email()('si-mp-le@ema-il.com'), undefined,
  17. "hyphenated e-mail passed validation.");
  18. assert.equal(validators.email()('si_mp_le@ema_il.com'), undefined,
  19. "underscored e-mail passed validation.");
  20. assert.equal(validators.email()('si+mp+le@email.com'), undefined,
  21. "plused e-mail passed validation.");
  22. assert.equal(validators.email('Nope!')('hh'), 'Nope!',
  23. "non-email errored with message providen.");
  24. });
  25. it("minLength validator", function() {
  26. assert.equal(validators.minLength(5)('yusss'), undefined,
  27. "string of required length passed validation.");
  28. assert.equal(
  29. validators.minLength(5)('nope'),
  30. "Ensure this value has at least 5 characters (it has 4).",
  31. "too short string failed validation.");
  32. });
  33. it("maxLength validator", function() {
  34. assert.equal(validators.maxLength(5)('yusss'), undefined,
  35. "string of required length passed validation.");
  36. assert.equal(
  37. validators.maxLength(5)('too long!'),
  38. "Ensure this value has at most 5 characters (it has 9).",
  39. "too long string failed validation.");
  40. });
  41. it("usernameMinLength validator", function() {
  42. var settings = {
  43. username_length_min: 4
  44. };
  45. assert.equal(
  46. validators.usernameMinLength(settings)('yusss'), undefined,
  47. "username of required length passed validation.");
  48. assert.equal(
  49. validators.usernameMinLength(settings)('no'),
  50. "Username must be at least 4 characters long.",
  51. "too short username failed validation.");
  52. });
  53. it("usernameMaxLength validator", function() {
  54. var settings = {
  55. username_length_max: 4
  56. };
  57. assert.equal(
  58. validators.usernameMaxLength(settings)('yuss'), undefined,
  59. "username of required length passed validation.");
  60. assert.equal(
  61. validators.usernameMaxLength(settings)('too long!'),
  62. "Username cannot be longer than 4 characters.",
  63. "too long username failed validation.");
  64. });
  65. it("username validator", function() {
  66. assert.equal(validators.usernameContent()('v4lid'), undefined,
  67. "valid username passed validation.");
  68. assert.equal(
  69. validators.usernameContent()('++++'),
  70. "Username can only contain latin alphabet letters and digits.",
  71. "invalid username failed validation.");
  72. });
  73. it("passwordMinLength validator", function() {
  74. var settings = {
  75. password_length_min: 4
  76. };
  77. assert.equal(
  78. validators.passwordMinLength(settings)('yusss'), undefined,
  79. "password of required length passed validation.");
  80. assert.equal(
  81. validators.passwordMinLength(settings)('no'),
  82. "Valid password must be at least 4 characters long.",
  83. "too short password failed validation.");
  84. });
  85. });