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.
- package/package.json +2 -1
- package/src/common.js +40 -0
- package/src/core/fields/ID.js +7 -0
- package/src/core/fields/__version.js +7 -1
- package/src/core/fields/__versions.js +3 -1
- package/src/core/fields/_id.js +3 -2
- package/src/core/fields/boolean.js +3 -0
- package/src/core/fields/boolean.system.js +5 -2
- package/src/core/fields/codeName.js +3 -0
- package/src/core/fields/createdAt.js +3 -1
- package/src/core/fields/description.js +6 -0
- package/src/core/fields/email.js +3 -0
- package/src/core/fields/expiredAt.js +3 -1
- package/src/core/fields/height.js +6 -1
- package/src/core/fields/identity.js +2 -0
- package/src/core/fields/ip.js +3 -0
- package/src/core/fields/objectId.js +2 -0
- package/src/core/fields/ownerModel.js +3 -1
- package/src/core/fields/price.js +6 -1
- package/src/core/fields/requiredObject.js +2 -0
- package/src/core/fields/session.js +3 -0
- package/src/core/fields/size.js +6 -1
- package/src/core/fields/telephone.js +3 -0
- package/src/core/fields/title.js +3 -0
- package/src/core/fields/updatedAt.js +3 -1
- package/src/core/fields/uuid.js +3 -0
- package/src/core/fields/width.js +6 -1
- package/src/core/index.js +2 -1
- package/src/core/validators/boolean.false.js +8 -0
- package/src/core/validators/boolean.js +8 -0
- package/src/core/validators/boolean.true.js +8 -0
- package/src/core/validators/date.js +11 -0
- package/src/core/validators/index.js +33 -0
- package/src/core/validators/number.int.js +9 -0
- package/src/core/validators/number.js +8 -0
- package/src/core/validators/number.positive.js +9 -0
- package/src/core/validators/number.positive.or.zero.js +9 -0
- package/src/core/validators/object.identity.js +110 -0
- package/src/core/validators/object.js +10 -0
- package/src/core/validators/objectId.js +13 -0
- package/src/core/{fields/validators → validators}/objectId.list.js +6 -1
- package/src/core/validators/string.10-10000.js +32 -0
- package/src/core/{fields/validators/email.js → validators/string.email.js} +1 -0
- package/src/core/{fields/validators/ip.js → validators/string.ip.js} +3 -2
- package/src/core/validators/string.js +8 -0
- package/src/core/{fields/validators/title.js → validators/string.not.empty.js} +4 -3
- package/src/core/{fields/validators/telephone.js → validators/string.telephone.js} +2 -1
- package/src/core/{fields/validators/uuid.js → validators/string.uuid.js} +2 -1
- package/src/form/form.js +4 -0
- package/src/form/transformers/parseNumber.js +1 -1
- package/src/identity/index.js +9 -2
- package/test/core.validators.js +790 -0
- package/src/core/fields/validators/ID.js +0 -20
- package/src/core/fields/validators/boolean.js +0 -1
- package/src/core/fields/validators/boolean.system.js +0 -8
- package/src/core/fields/validators/codeName.js +0 -16
- package/src/core/fields/validators/date.js +0 -8
- package/src/core/fields/validators/description.js +0 -33
- package/src/core/fields/validators/identity.js +0 -68
- package/src/core/fields/validators/modelName.js +0 -16
- package/src/core/fields/validators/objectId.js +0 -12
- package/src/core/fields/validators/owner.js +0 -8
- package/src/core/fields/validators/positive.or.zero.number.js +0 -14
- package/src/core/fields/validators/requiredObject.js +0 -10
- 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
|
+
});
|