UNPKG

8.82 kBJavaScriptView Raw
1var assert = require("assert"),
2 form = require("../index"),
3 filter = form.filter;
4
5module.exports = {
6 'filter : trim': function() {
7 var request = { body: { field: "\r\n value \t" }};
8 form(filter("field").trim())(request, {});
9 assert.equal(request.form.field, "value");
10 },
11
12 'filter : ltrim': function() {
13 var request = { body: { field: "\r\n value \t" }};
14 form(filter("field").ltrim())(request, {});
15 assert.equal(request.form.field, "value \t");
16 },
17
18 'filter : rtrim': function() {
19 var request = { body: { field: "\r\n value \t" }};
20 form(filter("field").rtrim())(request, {});
21 assert.equal(request.form.field, "\r\n value");
22 },
23
24 'filter : ifNull': function() {
25 // Replace missing value with "value"
26 var request = { body: {} };
27 form(filter("field").ifNull("value"))(request, {});
28 assert.equal(request.form.field, "value");
29
30 // Replace empty string with value
31 var request = { body: { field: "" }};
32 form(filter("field").ifNull("value"))(request, {});
33 assert.equal(request.form.field, "value");
34
35 // Replace NULL with value
36 var request = { body: { field: null }};
37 form(filter("field").ifNull("value"))(request, {});
38 assert.equal(request.form.field, "value");
39
40 // Replace undefined with value
41 var request = { body: { field: undefined }};
42 form(filter("field").ifNull("value"))(request, {});
43 assert.equal(request.form.field, "value");
44
45 // DO NOT replace false
46 var request = { body: { field: false }};
47 form(filter("field").ifNull("value"))(request, {});
48 assert.equal(request.form.field, false);
49
50 // DO NOT replace zero
51 var request = { body: { field: 0 }};
52 form(filter("field").ifNull("value"))(request, {});
53 assert.equal(request.form.field, 0);
54 },
55
56 'filter : toFloat': function() {
57 var request = { body: { field: "50.01" }};
58 form(filter("field").toFloat())(request, {});
59 assert.ok(typeof request.form.field == "number");
60 assert.equal(request.form.field, 50.01);
61
62 var request = { body: { field: "fail" }};
63 form(filter("field").toFloat())(request, {});
64 assert.ok(typeof request.form.field == "number");
65 assert.ok(isNaN(request.form.field));
66 },
67
68 'filter : toInt': function() {
69 var request = { body: { field: "50.01" }};
70 form(filter("field").toInt())(request, {});
71 assert.ok(typeof request.form.field == "number");
72 assert.equal(request.form.field, 50);
73
74 var request = { body: { field: "fail" }};
75 form(filter("field").toInt())(request, {});
76 assert.ok(typeof request.form.field == "number");
77 assert.ok(isNaN(request.form.field));
78 },
79
80 'filter : toBoolean': function() {
81 // Truthy values
82 var request = { body: {
83 field1: true,
84 field2: "true",
85 field3: "hi",
86 field4: new Date(),
87 field5: 50,
88 field6: -1,
89 field7: "3000"
90 }};
91 form(
92 filter("field1").toBoolean(),
93 filter("field2").toBoolean(),
94 filter("field3").toBoolean(),
95 filter("field4").toBoolean(),
96 filter("field5").toBoolean(),
97 filter("field6").toBoolean(),
98 filter("field7").toBoolean()
99 )(request, {});
100 "1234567".split("").forEach(function(i) {
101 var name = "field" + i;
102 assert.strictEqual(typeof request.form[name], "boolean");
103 assert.strictEqual(request.form[name], true);
104 });
105
106 // Falsy values
107 var request = { body: {
108 field1: false,
109 field2: "false",
110 field3: null,
111 field4: undefined,
112 field5: 0,
113 field6: "0",
114 field7: ""
115 }};
116 form(
117 filter("field1").toBoolean(),
118 filter("field2").toBoolean(),
119 filter("field3").toBoolean(),
120 filter("field4").toBoolean(),
121 filter("field5").toBoolean(),
122 filter("field6").toBoolean(),
123 filter("field7").toBoolean()
124 )(request, {});
125 "1234567".split("").forEach(function(i) {
126 var name = "field" + i;
127 assert.strictEqual(typeof request.form[name], "boolean");
128 assert.strictEqual(request.form[name], false);
129 });
130 },
131
132 'filter : toBooleanStrict': function() {
133 // Truthy values
134 var request = { body: {
135 field1: true,
136 field2: "true",
137 field3: 1,
138 field4: "1"
139 }};
140 form(
141 filter("field1").toBooleanStrict(),
142 filter("field2").toBooleanStrict(),
143 filter("field3").toBooleanStrict(),
144 filter("field4").toBooleanStrict()
145 )(request, {});
146 "1234".split("").forEach(function(i) {
147 var name = "field" + i;
148 assert.strictEqual(typeof request.form[name], "boolean");
149 assert.strictEqual(request.form[name], true);
150 });
151
152 // Falsy values
153 var request = { body: {
154 field1: false,
155 field2: "false",
156 field3: null,
157 field4: undefined,
158 field5: 0,
159 field6: "0",
160 field7: "",
161 field8: new Date(),
162 field9: 50,
163 field0: -1,
164 fielda: "3000"
165 }};
166 form(
167 filter("field1").toBooleanStrict(),
168 filter("field2").toBooleanStrict(),
169 filter("field3").toBooleanStrict(),
170 filter("field4").toBooleanStrict(),
171 filter("field5").toBooleanStrict(),
172 filter("field6").toBooleanStrict(),
173 filter("field7").toBooleanStrict(),
174 filter("field8").toBooleanStrict(),
175 filter("field9").toBooleanStrict(),
176 filter("field0").toBooleanStrict(),
177 filter("fielda").toBooleanStrict()
178 )(request, {});
179 "1234567890a".split("").forEach(function(i) {
180 var name = "field" + i;
181 assert.strictEqual(typeof request.form[name], "boolean");
182 assert.strictEqual(request.form[name], false);
183 });
184 },
185
186 'filter : entityEncode': function() {
187 // NOTE: single quotes are not encoded
188 var request = { body: { field: "&\"<>hello!" }};
189 form(filter("field").entityEncode())(request, {});
190 assert.equal(request.form.field, "&amp;&quot;&lt;&gt;hello!");
191 },
192
193 'filter : entityDecode': function() {
194 var request = { body: { field: "&amp;&quot;&lt;&gt;hello!" }};
195 form(filter("field").entityDecode())(request, {});
196 assert.equal(request.form.field, "&\"<>hello!");
197 },
198
199 'filter : toUpper': function() {
200 var request = { body: { field: "hellö!" }};
201 form(filter("field").toUpper())(request, {});
202 assert.equal(request.form.field, "HELLÖ!");
203 },
204
205 'filter : toUpper : object': function() {
206 var request = { body: { email: { key: '1' }}};
207 form(filter("email").toUpper())(request, {});
208 assert.strictEqual(request.form.email, '[OBJECT OBJECT]');
209 },
210
211 'filter : toUpper : array': function() {
212 var request = { body: { email: ['MyEmaiL1@example.com', 'myemail2@example.org'] }};
213 form(filter("email").toUpper())(request, {});
214 assert.strictEqual(request.form.email, 'MYEMAIL1@EXAMPLE.COM');
215 },
216
217 'filter : toLower': function() {
218 var request = { body: { field: "HELLÖ!" }};
219 form(filter("field").toLower())(request, {});
220 assert.equal(request.form.field, "hellö!");
221 },
222
223 'filter : toLower : object': function() {
224 var request = { body: { email: { key: '1' }}};
225 form(filter("email").toLower())(request, {});
226 assert.strictEqual(request.form.email, '[object object]');
227 },
228
229 'filter : toLower : array': function() {
230 var request = { body: { email: ['MyEmaiL1@example.com', 'myemail2@example.org'] }};
231 form(filter("email").toLower())(request, {});
232 assert.strictEqual(request.form.email, 'myemail1@example.com');
233 },
234
235 'filter : truncate': function() {
236 var request = { body: {
237 field1: "1234567890",
238 field2: "",
239 field3: "123",
240 field4: "123456",
241 field5: "1234567890"
242 }};
243 form(
244 filter("field1").truncate(3), // ...
245 filter("field2").truncate(3), // EMPTY
246 filter("field3").truncate(3), // 123
247 filter("field4").truncate(5), // 12...
248 filter("field5").truncate(7) // 1234...
249 )(request, {});
250 assert.equal(request.form.field1, "...");
251 assert.equal(request.form.field2, "");
252 assert.equal(request.form.field3, "123");
253 assert.equal(request.form.field4, "12...");
254 assert.equal(request.form.field5, "1234...");
255 },
256
257 'filter : truncate : object': function() {
258 var request = { body: { email: { key: '1', length: 100 }}};
259 form(filter("email").truncate(10))(request, {});
260 assert.strictEqual(request.form.email, '[object...');
261 },
262
263 'filter : truncate : array': function() {
264 var request = { body: { email: ['myemail1@example.com', 'myemail2@example.org'] }};
265 form(filter("email").truncate(11))(request, {});
266 assert.strictEqual(request.form.email, 'myemail1...');
267 },
268
269 'filter : custom': function() {
270 var request = { body: { field: "value!" }};
271 form(filter("field").custom(function(value) {
272 return "!!!";
273 }))(request, {});
274 assert.equal(request.form.field, "!!!");
275 }
276
277};
\No newline at end of file