id.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454
  1. describe('id', function() {
  2. beforeEach(function () {
  3. $([
  4. '<form class="form-horizontal" id="idForm">',
  5. '<div class="form-group">',
  6. '<select class="form-control" name="country">',
  7. '<option value="BA">Bosnia and Herzegovina</option>',
  8. '<option value="BG">Bulgaria</option>',
  9. '<option value="BR">Brazil</option>',
  10. '<option value="CH">Switzerland</option>',
  11. '<option value="CL">Chile</option>',
  12. '<option value="CZ">Czech</option>',
  13. '<option value="DK">Denmark</option>',
  14. '<option value="EE">Estonia</option>',
  15. '<option value="ES">Spain</option>',
  16. '<option value="FI">Finland</option>',
  17. '<option value="HR">Croatia</option>',
  18. '<option value="IE">Ireland</option>',
  19. '<option value="IS">Iceland</option>',
  20. '<option value="LT">Lithuania</option>',
  21. '<option value="LV">Latvia</option>',
  22. '<option value="ME">Montenegro</option>',
  23. '<option value="MK">Macedonia</option>',
  24. '<option value="NL">Netherlands</option>',
  25. '<option value="RO">Romania</option>',
  26. '<option value="RS">Serbia</option>',
  27. '<option value="SE">Sweden</option>',
  28. '<option value="SI">Slovenia</option>',
  29. '<option value="SK">Slovakia</option>',
  30. '<option value="SM">San Marino</option>',
  31. '<option value="ZA">South Africa</option>',
  32. '</select>',
  33. '</div>',
  34. '<div class="form-group">',
  35. '<input class="form-control" type="text" name="id" data-bv-id />',
  36. '</div>',
  37. '</form>'
  38. ].join('\n')).appendTo('body');
  39. $('#idForm').bootstrapValidator();
  40. /**
  41. * @type {BootstrapValidator}
  42. */
  43. this.bv = $('#idForm').data('bootstrapValidator');
  44. this.$country = this.bv.getFieldElements('country');
  45. this.$id = this.bv.getFieldElements('id');
  46. });
  47. afterEach(function () {
  48. $('#idForm').bootstrapValidator('destroy').remove();
  49. });
  50. it('dynamic country', function() {
  51. this.$id.attr('data-bv-id-country', 'country');
  52. this.bv.destroy();
  53. this.bv = $('#idForm').bootstrapValidator().data('bootstrapValidator');
  54. this.$country.val('BG');
  55. this.$id.val('7552010005');
  56. this.bv.validate();
  57. expect(this.bv.isValid()).toBeTruthy();
  58. this.bv.resetForm();
  59. this.$country.val('BR');
  60. this.$id.val('231.002.999-00');
  61. this.bv.validate();
  62. expect(this.bv.isValid()).toEqual(false);
  63. });
  64. it('Bulgarian national identification number (EGN)', function() {
  65. this.bv.updateOption('id', 'id', 'country', 'BG');
  66. // Valid samples
  67. var validSamples = ['7523169263', '8032056031', '803205 603 1', '8001010008', '7501020018', '7552010005', '7542011030'];
  68. for (var i in validSamples) {
  69. this.bv.resetForm();
  70. this.$id.val(validSamples[i]);
  71. this.bv.validate();
  72. expect(this.bv.isValid()).toBeTruthy();
  73. }
  74. // Invalid samples
  75. var invalidSamples = ['8019010008'];
  76. for (i in invalidSamples) {
  77. this.bv.resetForm();
  78. this.$id.val(invalidSamples[i]);
  79. this.bv.validate();
  80. expect(this.bv.isValid()).toEqual(false);
  81. }
  82. });
  83. it('Brazilian national identification number (CPF)', function() {
  84. this.bv.updateOption('id', 'id', 'country', 'BR');
  85. // Valid samples
  86. var validSamples = ['39053344705', '390.533.447-05', '111.444.777-35'];
  87. for (var i in validSamples) {
  88. this.bv.resetForm();
  89. this.$id.val(validSamples[i]);
  90. this.bv.validate();
  91. expect(this.bv.isValid()).toBeTruthy();
  92. }
  93. // Invalid samples
  94. var invalidSamples = ['231.002.999-00'];
  95. for (i in invalidSamples) {
  96. this.bv.resetForm();
  97. this.$id.val(invalidSamples[i]);
  98. this.bv.validate();
  99. expect(this.bv.isValid()).toEqual(false);
  100. }
  101. });
  102. it('Swiss Social Security Number (AHV-Nr/No AVS)', function() {
  103. this.bv.updateOption('id', 'id', 'country', 'CH');
  104. // Valid samples
  105. var validSamples = ['756.1234.5678.95', '7561234567895'];
  106. for (var i in validSamples) {
  107. this.bv.resetForm();
  108. this.$id.val(validSamples[i]);
  109. this.bv.validate();
  110. expect(this.bv.isValid()).toBeTruthy();
  111. }
  112. });
  113. it('Chilean national identification number (RUN/RUT)', function() {
  114. this.bv.updateOption('id', 'id', 'country', 'CL');
  115. console.log('Chilean ruts');
  116. // Valid samples
  117. var validSamples = ['76086428-5', '22060449-7', '12531909-2','12937893-K','12937893-k'];
  118. for (var i in validSamples) {
  119. this.bv.resetForm();
  120. this.$id.val(validSamples[i]);
  121. this.bv.validate();
  122. expect(this.bv.isValid()).toBeTruthy();
  123. }
  124. });
  125. it('Czech national identification number (RC)', function() {
  126. this.bv.updateOption('id', 'id', 'country', 'CZ');
  127. // Valid samples
  128. var validSamples = ['7103192745', '991231123'];
  129. for (var i in validSamples) {
  130. this.bv.resetForm();
  131. this.$id.val(validSamples[i]);
  132. this.bv.validate();
  133. expect(this.bv.isValid()).toBeTruthy();
  134. }
  135. // Invalid samples
  136. var invalidSamples = ['1103492745', '590312123'];
  137. for (i in invalidSamples) {
  138. this.bv.resetForm();
  139. this.$id.val(invalidSamples[i]);
  140. this.bv.validate();
  141. expect(this.bv.isValid()).toEqual(false);
  142. }
  143. });
  144. it('Danish Personal Identification number (CPR)', function() {
  145. this.bv.updateOption('id', 'id', 'country', 'DK');
  146. // Valid samples
  147. var validSamples = ['2110625629', '211062-5629'];
  148. for (var i in validSamples) {
  149. this.bv.resetForm();
  150. this.$id.val(validSamples[i]);
  151. this.bv.validate();
  152. expect(this.bv.isValid()).toBeTruthy();
  153. }
  154. // Invalid samples
  155. var invalidSamples = ['511062-5629'];
  156. for (i in invalidSamples) {
  157. this.bv.resetForm();
  158. this.$id.val(invalidSamples[i]);
  159. this.bv.validate();
  160. expect(this.bv.isValid()).toEqual(false);
  161. }
  162. });
  163. it('Estonian Personal Identification Code (isikukood)', function() {
  164. this.bv.updateOption('id', 'id', 'country', 'EE');
  165. // Valid samples
  166. var validSamples = ['37605030299'];
  167. for (var i in validSamples) {
  168. this.bv.resetForm();
  169. this.$id.val(validSamples[i]);
  170. this.bv.validate();
  171. expect(this.bv.isValid()).toBeTruthy();
  172. }
  173. });
  174. it('Spanish personal identity code (DNI/NIE)', function() {
  175. this.bv.updateOption('id', 'id', 'country', 'ES');
  176. // Valid samples
  177. var validSamples = ['54362315K', '54362315-K', 'X2482300W', 'X-2482300W', 'X-2482300-W'];
  178. for (var i in validSamples) {
  179. this.bv.resetForm();
  180. this.$id.val(validSamples[i]);
  181. this.bv.validate();
  182. expect(this.bv.isValid()).toBeTruthy();
  183. }
  184. // Invalid samples
  185. var invalidSamples = ['54362315Z', 'X-2482300A'];
  186. for (i in invalidSamples) {
  187. this.bv.resetForm();
  188. this.$id.val(invalidSamples[i]);
  189. this.bv.validate();
  190. expect(this.bv.isValid()).toEqual(false);
  191. }
  192. });
  193. it('Finnish Personal Identity Code (HETU)', function() {
  194. this.bv.updateOption('id', 'id', 'country', 'FI');
  195. // Valid samples
  196. var validSamples = ['311280-888Y', '131052-308T'];
  197. for (var i in validSamples) {
  198. this.bv.resetForm();
  199. this.$id.val(validSamples[i]);
  200. this.bv.validate();
  201. expect(this.bv.isValid()).toBeTruthy();
  202. }
  203. // Invalid samples
  204. var invalidSamples = ['131052-308U', '310252-308Y'];
  205. for (i in invalidSamples) {
  206. this.bv.resetForm();
  207. this.$id.val(invalidSamples[i]);
  208. this.bv.validate();
  209. expect(this.bv.isValid()).toEqual(false);
  210. }
  211. });
  212. it('Croatian personal identification number (OIB)', function() {
  213. this.bv.updateOption('id', 'id', 'country', 'HR');
  214. // Valid samples
  215. var validSamples = ['33392005961'];
  216. for (var i in validSamples) {
  217. this.bv.resetForm();
  218. this.$id.val(validSamples[i]);
  219. this.bv.validate();
  220. expect(this.bv.isValid()).toBeTruthy();
  221. }
  222. // Invalid samples
  223. var invalidSamples = ['33392005962'];
  224. for (i in invalidSamples) {
  225. this.bv.resetForm();
  226. this.$id.val(invalidSamples[i]);
  227. this.bv.validate();
  228. expect(this.bv.isValid()).toEqual(false);
  229. }
  230. });
  231. it('Irish Personal Public Service Number (PPS)', function() {
  232. this.bv.updateOption('id', 'id', 'country', 'IE');
  233. // Valid samples
  234. var validSamples = ['6433435F', '6433435FT', '6433435FW', '6433435OA', '6433435IH', '1234567TW', '1234567FA'];
  235. for (var i in validSamples) {
  236. this.bv.resetForm();
  237. this.$id.val(validSamples[i]);
  238. this.bv.validate();
  239. expect(this.bv.isValid()).toBeTruthy();
  240. }
  241. // Invalid samples
  242. var invalidSamples = ['6433435E', '6433435VH'];
  243. for (i in invalidSamples) {
  244. this.bv.resetForm();
  245. this.$id.val(invalidSamples[i]);
  246. this.bv.validate();
  247. expect(this.bv.isValid()).toEqual(false);
  248. }
  249. });
  250. it('Iceland national identification number (Kennitala)', function() {
  251. this.bv.updateOption('id', 'id', 'country', 'IS');
  252. // Valid samples
  253. var validSamples = ['120174-3399', '1201743399', '0902862349'];
  254. for (var i in validSamples) {
  255. this.bv.resetForm();
  256. this.$id.val(validSamples[i]);
  257. this.bv.validate();
  258. expect(this.bv.isValid()).toBeTruthy();
  259. }
  260. });
  261. it('Lithuanian Personal Code (Asmens kodas)', function() {
  262. this.bv.updateOption('id', 'id', 'country', 'LT');
  263. // Valid samples
  264. var validSamples = ['38703181745'];
  265. for (var i in validSamples) {
  266. this.bv.resetForm();
  267. this.$id.val(validSamples[i]);
  268. this.bv.validate();
  269. expect(this.bv.isValid()).toBeTruthy();
  270. }
  271. // Invalid samples
  272. var invalidSamples = ['38703181746', '78703181745', '38703421745'];
  273. for (i in invalidSamples) {
  274. this.bv.resetForm();
  275. this.$id.val(invalidSamples[i]);
  276. this.bv.validate();
  277. expect(this.bv.isValid()).toEqual(false);
  278. }
  279. });
  280. it('Latvian Personal Code (Personas kods)', function() {
  281. this.bv.updateOption('id', 'id', 'country', 'LV');
  282. // Valid samples
  283. var validSamples = ['161175-19997', '16117519997'];
  284. for (var i in validSamples) {
  285. this.bv.resetForm();
  286. this.$id.val(validSamples[i]);
  287. this.bv.validate();
  288. expect(this.bv.isValid()).toBeTruthy();
  289. }
  290. // Invalid samples
  291. var invalidSamples = ['161375-19997'];
  292. for (i in invalidSamples) {
  293. this.bv.resetForm();
  294. this.$id.val(invalidSamples[i]);
  295. this.bv.validate();
  296. expect(this.bv.isValid()).toEqual(false);
  297. }
  298. });
  299. it('Dutch national identification number (BSN)', function() {
  300. this.bv.updateOption('id', 'id', 'country', 'NL');
  301. // Valid samples
  302. var validSamples = ['111222333', '941331490', '9413.31.490'];
  303. for (var i in validSamples) {
  304. this.bv.resetForm();
  305. this.$id.val(validSamples[i]);
  306. this.bv.validate();
  307. expect(this.bv.isValid()).toBeTruthy();
  308. }
  309. // Invalid samples
  310. var invalidSamples = ['111252333'];
  311. for (i in invalidSamples) {
  312. this.bv.resetForm();
  313. this.$id.val(invalidSamples[i]);
  314. this.bv.validate();
  315. expect(this.bv.isValid()).toEqual(false);
  316. }
  317. });
  318. it('Romanian numerical personal code (CNP)', function() {
  319. this.bv.updateOption('id', 'id', 'country', 'RO');
  320. // Valid samples
  321. var validSamples = ['1630615123457', '1800101221144'];
  322. for (var i in validSamples) {
  323. this.bv.resetForm();
  324. this.$id.val(validSamples[i]);
  325. this.bv.validate();
  326. expect(this.bv.isValid()).toBeTruthy();
  327. }
  328. // Invalid samples
  329. var invalidSamples = ['8800101221144', '1632215123457', '1630615123458'];
  330. for (i in invalidSamples) {
  331. this.bv.resetForm();
  332. this.$id.val(invalidSamples[i]);
  333. this.bv.validate();
  334. expect(this.bv.isValid()).toEqual(false);
  335. }
  336. });
  337. it('Swedish personal identity number (personnummer)', function() {
  338. this.bv.updateOption('id', 'id', 'country', 'SE');
  339. // Valid samples
  340. var validSamples = ['8112289874', '811228-9874', '811228+9874'];
  341. for (var i in validSamples) {
  342. this.bv.resetForm();
  343. this.$id.val(validSamples[i]);
  344. this.bv.validate();
  345. expect(this.bv.isValid()).toBeTruthy();
  346. }
  347. // Invalid samples
  348. var invalidSamples = ['811228-9873'];
  349. for (i in invalidSamples) {
  350. this.bv.resetForm();
  351. this.$id.val(invalidSamples[i]);
  352. this.bv.validate();
  353. expect(this.bv.isValid()).toEqual(false);
  354. }
  355. });
  356. it('Slovak national identifier number (RC)', function() {
  357. this.bv.updateOption('id', 'id', 'country', 'SK');
  358. // Valid samples
  359. var validSamples = ['7103192745', '991231123'];
  360. for (var i in validSamples) {
  361. this.bv.resetForm();
  362. this.$id.val(validSamples[i]);
  363. this.bv.validate();
  364. expect(this.bv.isValid()).toBeTruthy();
  365. }
  366. // Invalid samples
  367. var invalidSamples = ['7103192746', '1103492745'];
  368. for (i in invalidSamples) {
  369. this.bv.resetForm();
  370. this.$id.val(invalidSamples[i]);
  371. this.bv.validate();
  372. expect(this.bv.isValid()).toEqual(false);
  373. }
  374. });
  375. it('South African ID', function() {
  376. this.bv.updateOption('id', 'id', 'country', 'ZA');
  377. // Valid samples
  378. var validSamples = ['8001015009087'];
  379. for (var i in validSamples) {
  380. this.bv.resetForm();
  381. this.$id.val(validSamples[i]);
  382. this.bv.validate();
  383. expect(this.bv.isValid()).toBeTruthy();
  384. }
  385. // Invalid samples
  386. var invalidSamples = ['8001015009287', '8001015009086'];
  387. for (i in invalidSamples) {
  388. this.bv.resetForm();
  389. this.$id.val(invalidSamples[i]);
  390. this.bv.validate();
  391. expect(this.bv.isValid()).toEqual(false);
  392. }
  393. });
  394. });