emailAddress.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. describe('emailAddress', function() {
  2. beforeEach(function() {
  3. $([
  4. '<form class="form-horizontal" id="emailAddressForm">',
  5. '<div id="msg"></div>',
  6. '<div class="form-group">',
  7. '<input type="text" name="email-address-or-addresses" data-bv-emailaddress />',
  8. '</div>',
  9. '</form>'
  10. ].join('\n')).appendTo('body');
  11. $('#emailAddressForm').bootstrapValidator();
  12. this.bv = $('#emailAddressForm').data('bootstrapValidator');
  13. this.$emailAddressOrAddresses = this.bv.getFieldElements('email-address-or-addresses');
  14. });
  15. afterEach(function() {
  16. $('#emailAddressForm').bootstrapValidator('destroy').remove();
  17. });
  18. var validEmailAddresses = [
  19. 'admin@mailserver1',
  20. 'niceandsimple@example.com',
  21. 'very.common@example.com',
  22. 'a.little.lengthy.but.fine@dept.example.com',
  23. 'disposable.style.email.with+symbol@example.com',
  24. 'other.email-with-dash@example.com',
  25. '"much.more unusual"@example.com',
  26. '"very.unusual.@.unusual.com"@example.com',
  27. '"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com',
  28. '" "@example.org',
  29. 'üñîçøðé@example.com'
  30. ];
  31. var invalidEmailAddresses = [
  32. // "!#$%&'*+-/=?^_`{}|~@example.org", // This is actually passing validation; see https://github.com/nghuuphuoc/bootstrapvalidator/issues/673
  33. 'üñîçøðé@üñîçøðé.com',
  34. 'Abc.example.com',
  35. 'A@b@c@example.com',
  36. 'a"b(c)d,e:f;gi[j\k]l@example.com',
  37. 'just"not"right@example.com',
  38. 'this is"not\allowed@example.com',
  39. 'this\ still\"not\\allowed@example.com'
  40. ];
  41. var validMultipleEmailAddressesForDefaultSeparators = [
  42. 'niceandsimple@example.com,very.common@example.com',
  43. 'niceandsimple@example.com;very.common@example.com',
  44. 'niceandsimple@example.com;very.common@example.com,a.little.lengthy.but.fine@dept.example.com'
  45. ];
  46. var invalidMultipleEmailAddressesForDefaultSeparators = [
  47. 'niceandsimple@example.com+very.common@example.com',
  48. 'niceandsimple@example.com|very.common@example.com'
  49. ];
  50. var validMultipleEmailAddressesForCommaOrDollarSignSeparators = [
  51. 'niceandsimple@example.com,very.common@example.com',
  52. 'niceandsimple@example.com$very.common@example.com',
  53. 'niceandsimple@example.com,very.common@example.com$a.little.lengthy.but.fine@dept.example.com'
  54. ];
  55. var invalidMultipleEmailAddressesForCommaOrDollarSignSeparators = [
  56. 'niceandsimple@example.com;very.common@example.com',
  57. 'niceandsimple@example.com;very.common@example.com,a.little.lengthy.but.fine@dept.example.com'
  58. ];
  59. it('Valid email addresses (multiple=false)', function() {
  60. var that = this;
  61. $.each(validEmailAddresses, function(index, emailAddress) {
  62. that.bv.resetForm();
  63. that.$emailAddressOrAddresses.val(emailAddress);
  64. that.bv.validate();
  65. expect(that.bv.isValid()).toBeTruthy();
  66. });
  67. });
  68. it('Invalid email addresses (multiple=false)', function() {
  69. var that = this;
  70. var addresses = invalidEmailAddresses
  71. .concat(validMultipleEmailAddressesForDefaultSeparators)
  72. .concat(invalidMultipleEmailAddressesForDefaultSeparators)
  73. .concat(validMultipleEmailAddressesForCommaOrDollarSignSeparators)
  74. .concat(invalidMultipleEmailAddressesForCommaOrDollarSignSeparators);
  75. $.each(addresses, function(index, emailAddress) {
  76. that.bv.resetForm();
  77. that.$emailAddressOrAddresses.val(emailAddress);
  78. that.bv.validate();
  79. expect(that.bv.isValid()).toEqual(false);
  80. });
  81. });
  82. it('Invalid email addresses (multiple=false,separator=/[,\$]/)', function() {
  83. var that = this;
  84. that.bv.updateOption('email-address-or-addresses', 'emailAddress', 'separator', /[,;]/);
  85. var addresses = invalidEmailAddresses
  86. .concat(validMultipleEmailAddressesForDefaultSeparators)
  87. .concat(invalidMultipleEmailAddressesForDefaultSeparators)
  88. .concat(validMultipleEmailAddressesForCommaOrDollarSignSeparators)
  89. .concat(invalidMultipleEmailAddressesForCommaOrDollarSignSeparators);
  90. $.each(addresses, function(index, emailAddress) {
  91. that.bv.resetForm();
  92. that.$emailAddressOrAddresses.val(emailAddress);
  93. that.bv.validate();
  94. expect(that.bv.isValid()).toEqual(false);
  95. });
  96. });
  97. it('Valid email addresses (multiple=true)', function() {
  98. var that = this;
  99. that.bv.updateOption('email-address-or-addresses', 'emailAddress', 'multiple', true);
  100. var addresses = validEmailAddresses
  101. .concat(validMultipleEmailAddressesForDefaultSeparators);
  102. $.each(addresses, function(index, emailAddress) {
  103. that.bv.resetForm();
  104. that.$emailAddressOrAddresses.val(emailAddress);
  105. that.bv.validate();
  106. expect(that.bv.isValid()).toBeTruthy();
  107. });
  108. });
  109. it('Invalid email addresses (multiple=true)', function() {
  110. var that = this;
  111. that.bv.updateOption('email-address-or-addresses', 'emailAddress', 'multiple', true);
  112. var addresses = invalidEmailAddresses
  113. .concat(invalidMultipleEmailAddressesForDefaultSeparators);
  114. $.each(addresses, function(index, emailAddress) {
  115. that.bv.resetForm();
  116. that.$emailAddressOrAddresses.val(emailAddress);
  117. that.bv.validate();
  118. expect(that.bv.isValid()).toEqual(false);
  119. });
  120. });
  121. it('Valid email addresses (multiple=true,separator=/[,\$]/)', function() {
  122. var that = this;
  123. that.bv.updateOption('email-address-or-addresses', 'emailAddress', 'multiple', true);
  124. that.bv.updateOption('email-address-or-addresses', 'emailAddress', 'separator', /[,\$]/);
  125. var addresses = validEmailAddresses
  126. .concat(validMultipleEmailAddressesForCommaOrDollarSignSeparators);
  127. $.each(addresses, function(index, emailAddress) {
  128. that.bv.resetForm();
  129. that.$emailAddressOrAddresses.val(emailAddress);
  130. that.bv.validate();
  131. expect(that.bv.isValid()).toBeTruthy();
  132. });
  133. });
  134. it('Invalid email addresses (multiple=true,separator=/[,\$]/)', function() {
  135. var that = this;
  136. that.bv.updateOption('email-address-or-addresses', 'emailAddress', 'multiple', true);
  137. that.bv.updateOption('email-address-or-addresses', 'emailAddress', 'separator', /[,\$]/);
  138. var addresses = invalidEmailAddresses
  139. .concat(invalidMultipleEmailAddressesForCommaOrDollarSignSeparators);
  140. $.each(addresses, function(index, emailAddress) {
  141. that.bv.resetForm();
  142. that.$emailAddressOrAddresses.val(emailAddress);
  143. that.bv.validate();
  144. expect(that.bv.isValid()).toEqual(false);
  145. });
  146. });
  147. });