not-node 6.5.35 → 6.5.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/package.json +2 -1
  2. package/src/common.js +40 -0
  3. package/src/core/fields/ID.js +7 -0
  4. package/src/core/fields/__version.js +7 -1
  5. package/src/core/fields/__versions.js +3 -1
  6. package/src/core/fields/_id.js +3 -2
  7. package/src/core/fields/boolean.js +3 -0
  8. package/src/core/fields/boolean.system.js +5 -2
  9. package/src/core/fields/codeName.js +3 -0
  10. package/src/core/fields/createdAt.js +3 -1
  11. package/src/core/fields/description.js +6 -0
  12. package/src/core/fields/email.js +3 -0
  13. package/src/core/fields/expiredAt.js +3 -1
  14. package/src/core/fields/height.js +6 -1
  15. package/src/core/fields/identity.js +2 -0
  16. package/src/core/fields/ip.js +3 -0
  17. package/src/core/fields/objectId.js +2 -0
  18. package/src/core/fields/ownerModel.js +3 -1
  19. package/src/core/fields/price.js +6 -1
  20. package/src/core/fields/requiredObject.js +2 -0
  21. package/src/core/fields/session.js +3 -0
  22. package/src/core/fields/size.js +6 -1
  23. package/src/core/fields/telephone.js +3 -0
  24. package/src/core/fields/title.js +3 -0
  25. package/src/core/fields/updatedAt.js +3 -1
  26. package/src/core/fields/uuid.js +3 -0
  27. package/src/core/fields/width.js +6 -1
  28. package/src/core/index.js +2 -1
  29. package/src/core/validators/boolean.false.js +8 -0
  30. package/src/core/validators/boolean.js +8 -0
  31. package/src/core/validators/boolean.true.js +8 -0
  32. package/src/core/validators/date.js +11 -0
  33. package/src/core/validators/index.js +33 -0
  34. package/src/core/validators/number.int.js +9 -0
  35. package/src/core/validators/number.js +8 -0
  36. package/src/core/validators/number.positive.js +9 -0
  37. package/src/core/validators/number.positive.or.zero.js +9 -0
  38. package/src/core/validators/object.identity.js +110 -0
  39. package/src/core/validators/object.js +10 -0
  40. package/src/core/validators/objectId.js +13 -0
  41. package/src/core/{fields/validators → validators}/objectId.list.js +6 -1
  42. package/src/core/validators/string.10-10000.js +32 -0
  43. package/src/core/{fields/validators/email.js → validators/string.email.js} +1 -0
  44. package/src/core/{fields/validators/ip.js → validators/string.ip.js} +3 -2
  45. package/src/core/validators/string.js +8 -0
  46. package/src/core/{fields/validators/title.js → validators/string.not.empty.js} +4 -3
  47. package/src/core/{fields/validators/telephone.js → validators/string.telephone.js} +2 -1
  48. package/src/core/{fields/validators/uuid.js → validators/string.uuid.js} +2 -1
  49. package/src/form/form.js +4 -0
  50. package/src/form/transformers/parseNumber.js +1 -1
  51. package/src/identity/index.js +9 -2
  52. package/test/core.validators.js +790 -0
  53. package/src/core/fields/validators/ID.js +0 -20
  54. package/src/core/fields/validators/boolean.js +0 -1
  55. package/src/core/fields/validators/boolean.system.js +0 -8
  56. package/src/core/fields/validators/codeName.js +0 -16
  57. package/src/core/fields/validators/date.js +0 -8
  58. package/src/core/fields/validators/description.js +0 -33
  59. package/src/core/fields/validators/identity.js +0 -68
  60. package/src/core/fields/validators/modelName.js +0 -16
  61. package/src/core/fields/validators/objectId.js +0 -12
  62. package/src/core/fields/validators/owner.js +0 -8
  63. package/src/core/fields/validators/positive.or.zero.number.js +0 -14
  64. package/src/core/fields/validators/requiredObject.js +0 -10
  65. package/src/core/fields/validators/session.js +0 -16
@@ -0,0 +1,790 @@
1
+ const { describe } = require("mocha");
2
+ const Validator = require("validator");
3
+ const Ajv = require("ajv");
4
+ const expect = require("chai").expect;
5
+
6
+ const runner = (validators, val, envs = {}) => {
7
+ return () => {
8
+ for (let { message, validator } of validators) {
9
+ if (
10
+ !validator(val, {
11
+ validator: Validator,
12
+ ajv: new Ajv(),
13
+ ...envs,
14
+ })
15
+ ) {
16
+ throw new Error(message);
17
+ }
18
+ }
19
+ return true;
20
+ };
21
+ };
22
+
23
+ describe("Core Validators", () => {
24
+ describe("Boolean", () => {
25
+ describe("Type", () => {
26
+ const validators = require("../src/core/validators/boolean");
27
+ const listOfInvalidValues = {
28
+ "not-node:value_type_is_not_boolean": [
29
+ undefined,
30
+ "",
31
+ "123123 123",
32
+ {},
33
+ new Date(),
34
+ 1,
35
+ 0,
36
+ -0,
37
+ ],
38
+ };
39
+
40
+ Object.keys(listOfInvalidValues).forEach((error_message) => {
41
+ listOfInvalidValues[error_message].forEach((val) => {
42
+ it(
43
+ "invalid: " + (val && val.toString && val.toString()) ||
44
+ typeof val,
45
+ () =>
46
+ expect(runner(validators, val)).to.throw(
47
+ error_message
48
+ )
49
+ );
50
+ });
51
+ });
52
+ it("valid: true", () =>
53
+ expect(runner(validators, true)()).to.be.true);
54
+ it("valid: false", () =>
55
+ expect(runner(validators, false)()).to.be.true);
56
+ });
57
+
58
+ describe("true", () => {
59
+ const validators = require("../src/core/validators/boolean.true");
60
+ it("valid: true", () =>
61
+ expect(runner(validators, true)()).to.be.true);
62
+ it("invalid: false", () =>
63
+ expect(runner(validators, false)).to.be.throw(
64
+ "not-node:value_type_is_not_boolean_true"
65
+ ));
66
+ });
67
+
68
+ describe("false", () => {
69
+ const validators = require("../src/core/validators/boolean.false");
70
+ it("invalid: true", () =>
71
+ expect(runner(validators, true)).to.be.throw(
72
+ "not-node:value_type_is_not_boolean_false"
73
+ ));
74
+ it("valid: false", () =>
75
+ expect(runner(validators, false)()).to.be.true);
76
+ });
77
+ });
78
+
79
+ describe("Date", () => {
80
+ describe("type", () => {
81
+ const validators = require("../src/core/validators/date");
82
+
83
+ const listOfInvalidValues = {
84
+ "not-node:value_type_is_not_date": [
85
+ undefined,
86
+ true,
87
+ false,
88
+ {},
89
+ 1,
90
+ 0,
91
+ -0,
92
+ [],
93
+ "connichiwa",
94
+ ],
95
+ };
96
+
97
+ Object.keys(listOfInvalidValues).forEach((error_message) => {
98
+ listOfInvalidValues[error_message].forEach((val) => {
99
+ it(
100
+ "invalid: " + (val && val.toString && val.toString()) ||
101
+ typeof val,
102
+ () =>
103
+ expect(
104
+ runner(validators, val, {
105
+ validator: Validator,
106
+ })
107
+ ).to.throw(error_message)
108
+ );
109
+ });
110
+ });
111
+
112
+ it(
113
+ "valid: " + new Date().toString(),
114
+ () =>
115
+ expect(
116
+ runner(validators, new Date(), {
117
+ validator: Validator,
118
+ })()
119
+ ).to.be.true
120
+ );
121
+ it(
122
+ "valid: " + new Date().toISOString(),
123
+ () =>
124
+ expect(
125
+ runner(validators, new Date().toISOString(), {
126
+ validator: Validator,
127
+ })()
128
+ ).to.be.true
129
+ );
130
+ });
131
+ });
132
+
133
+ describe("Number", () => {
134
+ describe("type", () => {
135
+ const validators = require("../src/core/validators/number");
136
+
137
+ const listOfInvalidValues = {
138
+ "not-node:value_is_not_number": [
139
+ undefined,
140
+ true,
141
+ false,
142
+ {},
143
+ new (class {})(),
144
+ "0",
145
+ "-0",
146
+ [],
147
+ new RegExp(""),
148
+ ],
149
+ };
150
+
151
+ Object.keys(listOfInvalidValues).forEach((error_message) => {
152
+ listOfInvalidValues[error_message].forEach((val) => {
153
+ it(
154
+ "invalid: " + (val && val.toString && val.toString()) ||
155
+ typeof val,
156
+ () =>
157
+ expect(
158
+ runner(validators, val, {
159
+ validator: Validator,
160
+ })
161
+ ).to.throw(error_message)
162
+ );
163
+ });
164
+ });
165
+
166
+ const listOfValidValues = [1, 0.0, -0.0, 1e3];
167
+ listOfValidValues.forEach((val) => {
168
+ it(
169
+ "valid: " + (val.toString && val.toString()) || typeof val,
170
+ () => expect(runner(validators, val)()).to.be.true
171
+ );
172
+ });
173
+ });
174
+
175
+ describe("int", () => {
176
+ const validators = require("../src/core/validators/number.int");
177
+
178
+ const listOfInvalidValues = {
179
+ "not-node:value_is_not_integer": [1.1, 0.2, 1.00000000000003],
180
+ };
181
+
182
+ Object.keys(listOfInvalidValues).forEach((error_message) => {
183
+ listOfInvalidValues[error_message].forEach((val) => {
184
+ it(
185
+ "invalid: " + (val && val.toString && val.toString()) ||
186
+ typeof val,
187
+ () =>
188
+ expect(
189
+ runner(validators, val, {
190
+ validator: Validator,
191
+ })
192
+ ).to.throw(error_message)
193
+ );
194
+ });
195
+ });
196
+
197
+ const listOfValidValues = [1, -90, 0, 1e3];
198
+ listOfValidValues.forEach((val) => {
199
+ it(
200
+ "valid: " + (val.toString && val.toString()) || typeof val,
201
+ () => expect(runner(validators, val)()).to.be.true
202
+ );
203
+ });
204
+ });
205
+
206
+ describe("positive", () => {
207
+ const validators = require("../src/core/validators/number.positive");
208
+
209
+ const listOfInvalidValues = {
210
+ "not-node:value_should_be_greater_than_zero": [-1, 0, -0, +0],
211
+ };
212
+
213
+ Object.keys(listOfInvalidValues).forEach((error_message) => {
214
+ listOfInvalidValues[error_message].forEach((val) => {
215
+ it(
216
+ "invalid: " + (val && val.toString && val.toString()) ||
217
+ typeof val,
218
+ () =>
219
+ expect(
220
+ runner(validators, val, {
221
+ validator: Validator,
222
+ })
223
+ ).to.throw(error_message)
224
+ );
225
+ });
226
+ });
227
+
228
+ const listOfValidValues = [1, 0.1];
229
+ listOfValidValues.forEach((val) => {
230
+ it(
231
+ "valid: " + (val.toString && val.toString()) || typeof val,
232
+ () => expect(runner(validators, val)()).to.be.true
233
+ );
234
+ });
235
+ });
236
+ describe("positiveOrZero", () => {
237
+ const validators = require("../src/core/validators/number.positive.or.zero");
238
+
239
+ const listOfInvalidValues = {
240
+ "not-node:value_should_be_zero_or_greater": [-1],
241
+ };
242
+
243
+ Object.keys(listOfInvalidValues).forEach((error_message) => {
244
+ listOfInvalidValues[error_message].forEach((val) => {
245
+ it(
246
+ "invalid: " + (val && val.toString && val.toString()) ||
247
+ typeof val,
248
+ () =>
249
+ expect(
250
+ runner(validators, val, {
251
+ validator: Validator,
252
+ })
253
+ ).to.throw(error_message)
254
+ );
255
+ });
256
+ });
257
+
258
+ const listOfValidValues = [1, 0.1, 0, +0];
259
+ listOfValidValues.forEach((val) => {
260
+ it(
261
+ "valid: " + (val.toString && val.toString()) || typeof val,
262
+ () => expect(runner(validators, val)()).to.be.true
263
+ );
264
+ });
265
+ });
266
+ });
267
+
268
+ describe("Object", () => {
269
+ describe("type", () => {
270
+ const validators = require("../src/core/validators/object");
271
+ const listOfInvalidValues = {
272
+ "not-node:value_is_not_object": [
273
+ undefined,
274
+ true,
275
+ false,
276
+ 1,
277
+ 0,
278
+ -0,
279
+ ],
280
+ };
281
+
282
+ Object.keys(listOfInvalidValues).forEach((error_message) => {
283
+ listOfInvalidValues[error_message].forEach((val) => {
284
+ it(
285
+ "invalid: " + (val && val.toString && val.toString()) ||
286
+ typeof val,
287
+ () =>
288
+ expect(runner(validators, val)).to.throw(
289
+ error_message
290
+ )
291
+ );
292
+ });
293
+ });
294
+
295
+ const listOfValidValues = [
296
+ {},
297
+ [],
298
+ null,
299
+ new Map(),
300
+ new Date(),
301
+ new RegExp(""),
302
+ ];
303
+ listOfValidValues.forEach((val) => {
304
+ it(
305
+ "valid: " + (val && val.toString && val.toString()) ||
306
+ typeof val,
307
+ () => expect(runner(validators, val)()).to.be.true
308
+ );
309
+ });
310
+ });
311
+ describe("identity", () => {
312
+ const validators = require("../src/core/validators/object.identity");
313
+ const listOfInvalidValues = {
314
+ "not-node:identity_object_is_not_valid": [
315
+ { root: null },
316
+ { root: true, admin: null },
317
+ { root: true, admin: false, auth: null },
318
+ {
319
+ root: true,
320
+ admin: false,
321
+ auth: true,
322
+ role: ["admin", 123],
323
+ },
324
+ { root: null },
325
+ ],
326
+ "not-node:identity_root_and_admin_cant_be_both_true": [
327
+ {
328
+ root: true,
329
+ admin: true,
330
+ auth: true,
331
+ role: ["admin"],
332
+ primaryRole: "admin",
333
+ uid: "66fd56f6608685a1486b8b29",
334
+ sid: "23984y5v9b201875439v20185v39",
335
+ provider: "SessionProvider",
336
+ },
337
+ ],
338
+ "not-node:identity_role_should_contain_primaryRole": [
339
+ {
340
+ root: false,
341
+ admin: false,
342
+ auth: true,
343
+ role: [],
344
+ primaryRole: "user",
345
+ uid: "66fd56f6608685a1486b8b29",
346
+ sid: "23984y5v9b201875439v20185v39",
347
+ provider: "SessionProvider",
348
+ },
349
+ {
350
+ root: false,
351
+ admin: true,
352
+ auth: true,
353
+ role: ["manager"],
354
+ primaryRole: "admin",
355
+ uid: "66fd56f6608685a1486b8b29",
356
+ sid: "23984y5v9b201875439v20185v39",
357
+ provider: "SessionProvider",
358
+ },
359
+ ],
360
+ "not-node:identity_root_should_have_primaryRole_root": [
361
+ {
362
+ root: true,
363
+ admin: false,
364
+ auth: true,
365
+ role: ["user"],
366
+ primaryRole: "user",
367
+ uid: "66fd56f6608685a1486b8b29",
368
+ sid: "23984y5v9b201875439v20185v39",
369
+ provider: "SessionProvider",
370
+ },
371
+ {
372
+ root: true,
373
+ admin: false,
374
+ auth: true,
375
+ role: ["admin"],
376
+ primaryRole: "admin",
377
+ uid: "66fd56f6608685a1486b8b29",
378
+ sid: "23984y5v9b201875439v20185v39",
379
+ provider: "SessionProvider",
380
+ },
381
+ ],
382
+ "not-node:identity_admin_should_have_primaryRole_admin": [
383
+ {
384
+ root: false,
385
+ admin: true,
386
+ auth: true,
387
+ role: ["user"],
388
+ primaryRole: "user",
389
+ uid: "66fd56f6608685a1486b8b29",
390
+ sid: "23984y5v9b201875439v20185v39",
391
+ provider: "SessionProvider",
392
+ },
393
+ {
394
+ root: false,
395
+ admin: true,
396
+ auth: true,
397
+ role: ["manager", "client"],
398
+ primaryRole: "client",
399
+ uid: "66fd56f6608685a1486b8b29",
400
+ sid: "23984y5v9b201875439v20185v39",
401
+ provider: "SessionProvider",
402
+ },
403
+ ],
404
+ "not-node:identity_guest_should_have_primaryRole_guest": [
405
+ {
406
+ root: false,
407
+ admin: false,
408
+ auth: false,
409
+ role: ["user"],
410
+ primaryRole: "user",
411
+ uid: "66fd56f6608685a1486b8b29",
412
+ sid: "23984y5v9b201875439v20185v39",
413
+ provider: "SessionProvider",
414
+ },
415
+ {
416
+ root: false,
417
+ admin: false,
418
+ auth: false,
419
+ role: ["manager"],
420
+ primaryRole: "admin",
421
+ uid: "66fd56f6608685a1486b8b29",
422
+ sid: "23984y5v9b201875439v20185v39",
423
+ provider: "SessionProvider",
424
+ },
425
+ ],
426
+ };
427
+
428
+ Object.keys(listOfInvalidValues).forEach((error_message) => {
429
+ listOfInvalidValues[error_message].forEach((val) => {
430
+ it(
431
+ "invalid: " + (val && val.toString && val.toString()) ||
432
+ typeof val,
433
+ () =>
434
+ expect(runner(validators, val)).to.throw(
435
+ error_message
436
+ )
437
+ );
438
+ });
439
+ });
440
+
441
+ const listOfValidValues = [
442
+ {
443
+ root: false,
444
+ admin: false,
445
+ auth: true,
446
+ role: ["user"],
447
+ primaryRole: "user",
448
+ uid: "66fd56f6608685a1486b8b29",
449
+ sid: "23984y5v9b201875439v20185v39",
450
+ provider: "SessionProvider",
451
+ },
452
+ ];
453
+ listOfValidValues.forEach((val) => {
454
+ it(
455
+ "valid: " + (val && val.toString && val.toString()) ||
456
+ typeof val,
457
+ () => expect(runner(validators, val)()).to.be.true
458
+ );
459
+ });
460
+ });
461
+ });
462
+
463
+ describe("ObjectId", () => {
464
+ describe("type", () => {
465
+ const validators = require("../src/core/validators/objectId");
466
+ const listOfInvalidValues = {
467
+ "not-node:value_item_format_is_not_objectId": [
468
+ undefined,
469
+ true,
470
+ false,
471
+ 1,
472
+ 0,
473
+ -0,
474
+ "asdfsefsdf",
475
+ {},
476
+ new Date(),
477
+ ],
478
+ };
479
+
480
+ Object.keys(listOfInvalidValues).forEach((error_message) => {
481
+ listOfInvalidValues[error_message].forEach((val) => {
482
+ it(
483
+ "invalid: " + (val && val.toString && val.toString()) ||
484
+ typeof val,
485
+ () =>
486
+ expect(runner(validators, val)).to.throw(
487
+ error_message
488
+ )
489
+ );
490
+ });
491
+ });
492
+
493
+ const listOfValidValues = [
494
+ "66fd56f6608685a1486b8b29",
495
+ "66fd56f6608685a1486b8b29",
496
+ ];
497
+ listOfValidValues.forEach((val) => {
498
+ it(
499
+ "valid: " + (val && val.toString && val.toString()) ||
500
+ typeof val,
501
+ () => expect(runner(validators, val)()).to.be.true
502
+ );
503
+ });
504
+ });
505
+
506
+ describe("list", () => {
507
+ const validators = require("../src/core/validators/objectId.list");
508
+ const listOfInvalidValues = {
509
+ "not-node:value_is_not_array": [
510
+ undefined,
511
+ true,
512
+ false,
513
+ 1,
514
+ 0,
515
+ -0,
516
+ "asdfsefsdf",
517
+ {},
518
+ new Date(),
519
+ ],
520
+ "not-node:value_items_are_not_all_objectId": [
521
+ ["undeaedaed"],
522
+ [123123],
523
+ ["12312"],
524
+ [new Date()],
525
+ [null],
526
+ [undefined],
527
+ ],
528
+ };
529
+
530
+ Object.keys(listOfInvalidValues).forEach((error_message) => {
531
+ listOfInvalidValues[error_message].forEach((val) => {
532
+ it(
533
+ "invalid: " + (val && val.toString && val.toString()) ||
534
+ typeof val,
535
+ () =>
536
+ expect(runner(validators, val)).to.throw(
537
+ error_message
538
+ )
539
+ );
540
+ });
541
+ });
542
+
543
+ const listOfValidValues = [
544
+ ["66fd56f6608685a1486b8b29", "66fd56f6608685a1486b8b29"],
545
+ [],
546
+ ];
547
+ listOfValidValues.forEach((val) => {
548
+ it(
549
+ "valid: " + (val && val.toString && val.toString()) ||
550
+ typeof val,
551
+ () => expect(runner(validators, val)()).to.be.true
552
+ );
553
+ });
554
+ });
555
+ });
556
+
557
+ describe("String", () => {
558
+ describe("type", () => {
559
+ const validators = require("../src/core/validators/string");
560
+ const listOfInvalidValues = {
561
+ "not-node:value_type_is_not_string": [
562
+ undefined,
563
+ true,
564
+ false,
565
+ {},
566
+ new Date(),
567
+ 1,
568
+ 0,
569
+ -0,
570
+ [],
571
+ ],
572
+ };
573
+
574
+ Object.keys(listOfInvalidValues).forEach((error_message) => {
575
+ listOfInvalidValues[error_message].forEach((val) => {
576
+ it(
577
+ "invalid: " + (val && val.toString && val.toString()) ||
578
+ typeof val,
579
+ () =>
580
+ expect(runner(validators, val)).to.throw(
581
+ error_message
582
+ )
583
+ );
584
+ });
585
+ });
586
+
587
+ const listOfValidValues = ["", "asdfq2843rv20198435y01843"];
588
+ listOfValidValues.forEach((val) => {
589
+ it(
590
+ "valid: " + (val && val.toString && val.toString()) ||
591
+ typeof val,
592
+ () => expect(runner(validators, val)()).to.be.true
593
+ );
594
+ });
595
+ });
596
+
597
+ describe("from10to10000", () => {
598
+ const validators = require("../src/core/validators/string.10-10000");
599
+ const listOfInvalidValues = {
600
+ "not-node:value_is_too_short_10": ["", "1", "123456789"],
601
+ "not-node:value_is_too_long_10000": [
602
+ "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",
603
+ ],
604
+ };
605
+
606
+ Object.keys(listOfInvalidValues).forEach((error_message) => {
607
+ listOfInvalidValues[error_message].forEach((val) => {
608
+ it("invalid: length of string " + val.length, () =>
609
+ expect(runner(validators, val)).to.throw(error_message)
610
+ );
611
+ });
612
+ });
613
+
614
+ const listOfValidValues = [
615
+ "1234567890",
616
+ "asdfq2843rv20198435y01843",
617
+ ];
618
+ listOfValidValues.forEach((val) => {
619
+ it(
620
+ "valid: length of string " + val.length,
621
+ () => expect(runner(validators, val)()).to.be.true
622
+ );
623
+ });
624
+ });
625
+
626
+ describe("email", () => {
627
+ const validators = require("../src/core/validators/string.email");
628
+ const listOfInvalidValues = {
629
+ "not-node:email_is_not_valid": [
630
+ "",
631
+ "1",
632
+ "123,456789",
633
+ "asdfljiasdlkjfn.com",
634
+ "asda,sd@local",
635
+ ],
636
+ };
637
+
638
+ Object.keys(listOfInvalidValues).forEach((error_message) => {
639
+ listOfInvalidValues[error_message].forEach((val) => {
640
+ it("invalid: " + val, () =>
641
+ expect(runner(validators, val)).to.throw(error_message)
642
+ );
643
+ });
644
+ });
645
+
646
+ const listOfValidValues = ["test@mail.host", "mail@compuserv.com"];
647
+ listOfValidValues.forEach((val) => {
648
+ it(
649
+ "valid: " + val,
650
+ () => expect(runner(validators, val)()).to.be.true
651
+ );
652
+ });
653
+ });
654
+
655
+ describe("ip", () => {
656
+ const validators = require("../src/core/validators/string.ip");
657
+ const listOfInvalidValues = {
658
+ "not-node:value_is_not_ip_address": [
659
+ "",
660
+ "1",
661
+ "123,456789",
662
+ "asdfljiasdlkjfn.com",
663
+ "asda,sd@local",
664
+ "900.-1.7.101",
665
+ "0.1.7.257",
666
+ "1.0.257",
667
+ ],
668
+ };
669
+
670
+ Object.keys(listOfInvalidValues).forEach((error_message) => {
671
+ listOfInvalidValues[error_message].forEach((val) => {
672
+ it("invalid: " + val, () =>
673
+ expect(runner(validators, val)).to.throw(error_message)
674
+ );
675
+ });
676
+ });
677
+
678
+ const listOfValidValues = ["127.0.1.1", "10.8.1.10", "0.0.0.0"];
679
+ listOfValidValues.forEach((val) => {
680
+ it(
681
+ "valid: " + val,
682
+ () => expect(runner(validators, val)()).to.be.true
683
+ );
684
+ });
685
+ });
686
+
687
+ describe("notEmpty", () => {
688
+ const validators = require("../src/core/validators/string.not.empty");
689
+
690
+ const listOfInvalidValues = {
691
+ "not-node:value_is_empty": [""],
692
+ };
693
+
694
+ Object.keys(listOfInvalidValues).forEach((error_message) => {
695
+ listOfInvalidValues[error_message].forEach((val) => {
696
+ it(
697
+ "invalid: " + (val && val.toString && val.toString()) ||
698
+ typeof val,
699
+ () =>
700
+ expect(runner(validators, val)).to.throw(
701
+ error_message
702
+ )
703
+ );
704
+ });
705
+ });
706
+
707
+ it("valid: 'true'", () =>
708
+ expect(runner(validators, "true")()).to.be.true);
709
+ it("valid: 'f'", () =>
710
+ expect(runner(validators, "f")()).to.be.true);
711
+ });
712
+
713
+ describe("telephone", () => {
714
+ const validators = require("../src/core/validators/string.telephone");
715
+ const listOfInvalidValues = {
716
+ "not-node:value_is_not_telephone": [
717
+ "",
718
+ "1",
719
+ "14589",
720
+ "asdfljiasdlkjfn.com",
721
+ "asda,sd@local",
722
+ ".-1.7.101",
723
+ ".1.7.257",
724
+ "1.0.257",
725
+ "12345",
726
+ "+91239991234567",
727
+ ],
728
+ };
729
+
730
+ Object.keys(listOfInvalidValues).forEach((error_message) => {
731
+ listOfInvalidValues[error_message].forEach((val) => {
732
+ it("invalid: " + val, () =>
733
+ expect(runner(validators, val)).to.throw(error_message)
734
+ );
735
+ });
736
+ });
737
+
738
+ const listOfValidValues = [
739
+ "117123456789",
740
+ "+7 (123) 123-12-12",
741
+ "+4 (321) 000 - 12 - 99",
742
+ ];
743
+ listOfValidValues.forEach((val) => {
744
+ it(
745
+ "valid: " + val,
746
+ () => expect(runner(validators, val)()).to.be.true
747
+ );
748
+ });
749
+ });
750
+
751
+ describe("uuid", () => {
752
+ const validators = require("../src/core/validators/string.uuid");
753
+ const listOfInvalidValues = {
754
+ "not-node:value_is_not_uuid": [
755
+ "",
756
+ "1",
757
+ "14589",
758
+ "asdfljiasdlkjfn.com",
759
+ "asda,sd@local",
760
+ ".-1.7.101",
761
+ ".1.7.257",
762
+ "1.0.257",
763
+ "12345",
764
+ "+91239991234567",
765
+ ],
766
+ };
767
+
768
+ Object.keys(listOfInvalidValues).forEach((error_message) => {
769
+ listOfInvalidValues[error_message].forEach((val) => {
770
+ it("invalid: " + val, () =>
771
+ expect(runner(validators, val)).to.throw(error_message)
772
+ );
773
+ });
774
+ });
775
+
776
+ const listOfValidValues = [
777
+ "dfba64ce-80c5-11ef-b864-0242ac120002", //v1
778
+ "85f030bd-80a3-45b1-aaab-577437954966", //v4
779
+ "01924d83-408c-73fe-89cc-bed77e27b1c5", //v7
780
+ "00000000-0000-0000-0000-000000000000", //empty
781
+ ];
782
+ listOfValidValues.forEach((val) => {
783
+ it(
784
+ "valid: " + val,
785
+ () => expect(runner(validators, val)()).to.be.true
786
+ );
787
+ });
788
+ });
789
+ });
790
+ });