express-form
Version:
Form validation and data filtering for Express
277 lines (247 loc) • 8.82 kB
JavaScript
var assert = require("assert"),
form = require("../index"),
filter = form.filter;
module.exports = {
'filter : trim': function() {
var request = { body: { field: "\r\n value \t" }};
form(filter("field").trim())(request, {});
assert.equal(request.form.field, "value");
},
'filter : ltrim': function() {
var request = { body: { field: "\r\n value \t" }};
form(filter("field").ltrim())(request, {});
assert.equal(request.form.field, "value \t");
},
'filter : rtrim': function() {
var request = { body: { field: "\r\n value \t" }};
form(filter("field").rtrim())(request, {});
assert.equal(request.form.field, "\r\n value");
},
'filter : ifNull': function() {
// Replace missing value with "value"
var request = { body: {} };
form(filter("field").ifNull("value"))(request, {});
assert.equal(request.form.field, "value");
// Replace empty string with value
var request = { body: { field: "" }};
form(filter("field").ifNull("value"))(request, {});
assert.equal(request.form.field, "value");
// Replace NULL with value
var request = { body: { field: null }};
form(filter("field").ifNull("value"))(request, {});
assert.equal(request.form.field, "value");
// Replace undefined with value
var request = { body: { field: undefined }};
form(filter("field").ifNull("value"))(request, {});
assert.equal(request.form.field, "value");
// DO NOT replace false
var request = { body: { field: false }};
form(filter("field").ifNull("value"))(request, {});
assert.equal(request.form.field, false);
// DO NOT replace zero
var request = { body: { field: 0 }};
form(filter("field").ifNull("value"))(request, {});
assert.equal(request.form.field, 0);
},
'filter : toFloat': function() {
var request = { body: { field: "50.01" }};
form(filter("field").toFloat())(request, {});
assert.ok(typeof request.form.field == "number");
assert.equal(request.form.field, 50.01);
var request = { body: { field: "fail" }};
form(filter("field").toFloat())(request, {});
assert.ok(typeof request.form.field == "number");
assert.ok(isNaN(request.form.field));
},
'filter : toInt': function() {
var request = { body: { field: "50.01" }};
form(filter("field").toInt())(request, {});
assert.ok(typeof request.form.field == "number");
assert.equal(request.form.field, 50);
var request = { body: { field: "fail" }};
form(filter("field").toInt())(request, {});
assert.ok(typeof request.form.field == "number");
assert.ok(isNaN(request.form.field));
},
'filter : toBoolean': function() {
// Truthy values
var request = { body: {
field1: true,
field2: "true",
field3: "hi",
field4: new Date(),
field5: 50,
field6: -1,
field7: "3000"
}};
form(
filter("field1").toBoolean(),
filter("field2").toBoolean(),
filter("field3").toBoolean(),
filter("field4").toBoolean(),
filter("field5").toBoolean(),
filter("field6").toBoolean(),
filter("field7").toBoolean()
)(request, {});
"1234567".split("").forEach(function(i) {
var name = "field" + i;
assert.strictEqual(typeof request.form[name], "boolean");
assert.strictEqual(request.form[name], true);
});
// Falsy values
var request = { body: {
field1: false,
field2: "false",
field3: null,
field4: undefined,
field5: 0,
field6: "0",
field7: ""
}};
form(
filter("field1").toBoolean(),
filter("field2").toBoolean(),
filter("field3").toBoolean(),
filter("field4").toBoolean(),
filter("field5").toBoolean(),
filter("field6").toBoolean(),
filter("field7").toBoolean()
)(request, {});
"1234567".split("").forEach(function(i) {
var name = "field" + i;
assert.strictEqual(typeof request.form[name], "boolean");
assert.strictEqual(request.form[name], false);
});
},
'filter : toBooleanStrict': function() {
// Truthy values
var request = { body: {
field1: true,
field2: "true",
field3: 1,
field4: "1"
}};
form(
filter("field1").toBooleanStrict(),
filter("field2").toBooleanStrict(),
filter("field3").toBooleanStrict(),
filter("field4").toBooleanStrict()
)(request, {});
"1234".split("").forEach(function(i) {
var name = "field" + i;
assert.strictEqual(typeof request.form[name], "boolean");
assert.strictEqual(request.form[name], true);
});
// Falsy values
var request = { body: {
field1: false,
field2: "false",
field3: null,
field4: undefined,
field5: 0,
field6: "0",
field7: "",
field8: new Date(),
field9: 50,
field0: -1,
fielda: "3000"
}};
form(
filter("field1").toBooleanStrict(),
filter("field2").toBooleanStrict(),
filter("field3").toBooleanStrict(),
filter("field4").toBooleanStrict(),
filter("field5").toBooleanStrict(),
filter("field6").toBooleanStrict(),
filter("field7").toBooleanStrict(),
filter("field8").toBooleanStrict(),
filter("field9").toBooleanStrict(),
filter("field0").toBooleanStrict(),
filter("fielda").toBooleanStrict()
)(request, {});
"1234567890a".split("").forEach(function(i) {
var name = "field" + i;
assert.strictEqual(typeof request.form[name], "boolean");
assert.strictEqual(request.form[name], false);
});
},
'filter : entityEncode': function() {
// NOTE: single quotes are not encoded
var request = { body: { field: "&\"<>hello!" }};
form(filter("field").entityEncode())(request, {});
assert.equal(request.form.field, "&"<>hello!");
},
'filter : entityDecode': function() {
var request = { body: { field: "&"<>hello!" }};
form(filter("field").entityDecode())(request, {});
assert.equal(request.form.field, "&\"<>hello!");
},
'filter : toUpper': function() {
var request = { body: { field: "hellö!" }};
form(filter("field").toUpper())(request, {});
assert.equal(request.form.field, "HELLÖ!");
},
'filter : toUpper : object': function() {
var request = { body: { email: { key: '1' }}};
form(filter("email").toUpper())(request, {});
assert.strictEqual(request.form.email, '[OBJECT OBJECT]');
},
'filter : toUpper : array': function() {
var request = { body: { email: ['MyEmaiL1@example.com', 'myemail2@example.org'] }};
form(filter("email").toUpper())(request, {});
assert.strictEqual(request.form.email, 'MYEMAIL1@EXAMPLE.COM');
},
'filter : toLower': function() {
var request = { body: { field: "HELLÖ!" }};
form(filter("field").toLower())(request, {});
assert.equal(request.form.field, "hellö!");
},
'filter : toLower : object': function() {
var request = { body: { email: { key: '1' }}};
form(filter("email").toLower())(request, {});
assert.strictEqual(request.form.email, '[object object]');
},
'filter : toLower : array': function() {
var request = { body: { email: ['MyEmaiL1@example.com', 'myemail2@example.org'] }};
form(filter("email").toLower())(request, {});
assert.strictEqual(request.form.email, 'myemail1@example.com');
},
'filter : truncate': function() {
var request = { body: {
field1: "1234567890",
field2: "",
field3: "123",
field4: "123456",
field5: "1234567890"
}};
form(
filter("field1").truncate(3), // ...
filter("field2").truncate(3), // EMPTY
filter("field3").truncate(3), // 123
filter("field4").truncate(5), // 12...
filter("field5").truncate(7) // 1234...
)(request, {});
assert.equal(request.form.field1, "...");
assert.equal(request.form.field2, "");
assert.equal(request.form.field3, "123");
assert.equal(request.form.field4, "12...");
assert.equal(request.form.field5, "1234...");
},
'filter : truncate : object': function() {
var request = { body: { email: { key: '1', length: 100 }}};
form(filter("email").truncate(10))(request, {});
assert.strictEqual(request.form.email, '[object...');
},
'filter : truncate : array': function() {
var request = { body: { email: ['myemail1@example.com', 'myemail2@example.org'] }};
form(filter("email").truncate(11))(request, {});
assert.strictEqual(request.form.email, 'myemail1...');
},
'filter : custom': function() {
var request = { body: { field: "value!" }};
form(filter("field").custom(function(value) {
return "!!!";
}))(request, {});
assert.equal(request.form.field, "!!!");
}
};