UNPKG

2.76 kBJavaScriptView Raw
1var assert = require("assert"),
2 form = require("../index"),
3 validate = form.validate,
4 utils = require('../lib/utils');
5
6module.exports = {
7 'form : isValid': function() {
8 // Failure.
9 var request = { body: { field: "fail" }};
10 form(validate("field").isEmail())(request, {});
11 assert.strictEqual(request.form.isValid, false);
12
13 // Success
14 var request = { body: { field: "me@dandean.com" }};
15 form(validate("field").isEmail())(request, {});
16 assert.strictEqual(request.form.isValid, true);
17
18 // form.isValid is a getter only
19 request.form.isValid = false;
20 assert.strictEqual(request.form.isValid, true);
21 },
22
23 'form : getErrors': function() {
24 var request = {
25 body: {
26 field0: "win",
27 field1: "fail",
28 field2: "fail",
29 field3: "fail"
30 }
31 };
32
33 form(
34 validate("field0").equals("win"),
35 validate("field1").isEmail(),
36 validate("field2").isEmail().isUrl(),
37 validate("field3").isEmail().isUrl().isIP()
38 )(request, {});
39
40 assert.equal(request.form.isValid, false);
41 assert.equal(request.form.errors.length, 6);
42
43 assert.equal(request.form.getErrors("field0").length, 0);
44 assert.equal(request.form.getErrors("field1").length, 1);
45 assert.equal(request.form.getErrors("field2").length, 2);
46 assert.equal(request.form.getErrors("field3").length, 3);
47 },
48
49 'form : configure : dataSources': function() {
50 form.configure({ dataSources: 'other' });
51
52 var request = { other: { field: "me@dandean.com" }};
53 form(validate("field").isEmail())(request, {});
54 assert.strictEqual(request.form.isValid, true);
55 assert.equal(request.form.field, "me@dandean.com");
56
57 form.configure({ dataSources: ['body', "query", "params"] });
58 },
59
60 'form : configure : autoTrim': function() {
61 // request with username field containing a trailing space
62 var request = {
63 body: {
64 username: 'myuser1 '
65 }
66 };
67
68 var request2 = utils.clone(request);
69
70 // alphanumeric
71 var regex = /^[0-9A-Z]+$/i
72
73 // autoTrim defaults to false, test results with it off
74 assert.strictEqual(form._options.autoTrim, false);
75 form(validate('username').is(regex))(request, {});
76 assert.strictEqual(request.form.isValid, false);
77
78 // test results with autoTrim turned on
79 form.configure({ autoTrim: true });
80 assert.strictEqual(form._options.autoTrim, true);
81 form(validate('username').is(regex))(request2, {});
82 assert.strictEqual(request2.form.isValid, true);
83 assert.strictEqual(request2.form.username, 'myuser1');
84
85 // turn autoTrim back off
86 form.configure({ autoTrim: false });
87 assert.strictEqual(form._options.autoTrim, false);
88 }
89
90};