blob: 264c8f4cd6fdd4227c11a44875b1e5c01cda3137 [file] [log] [blame]
var node_validator = require('../lib'),
Filter = new node_validator.Filter(),
assert = require('assert');
module.exports = {
'test #ifNull()': function () {
//Make sure sanitize returns the new string
assert.equal(5, Filter.sanitize('').ifNull(5));
assert.equal('abc', Filter.sanitize().ifNull('abc'));
//Modify Filter.modify() to automatically replace a var with the sanitized version
var param = '';
Filter.modify = function(str) {
this.str = str;
param = str;
}
Filter.sanitize(param).ifNull('foobar');
assert.equal('foobar', param);
},
'test #toBoolean()': function () {
assert.equal(true, Filter.sanitize('1').toBoolean());
assert.equal(true, Filter.sanitize('true').toBoolean());
assert.equal(true, Filter.sanitize('foobar').toBoolean());
assert.equal(true, Filter.sanitize(5).toBoolean());
assert.equal(true, Filter.sanitize(' ').toBoolean());
assert.equal(false, Filter.sanitize('0').toBoolean());
assert.equal(false, Filter.sanitize('false').toBoolean());
assert.equal(false, Filter.sanitize('').toBoolean());
assert.equal(false, Filter.sanitize('false').toBoolean());
},
'test #toBooleanStrict()': function () {
assert.equal(true, Filter.sanitize('1').toBooleanStrict());
assert.equal(true, Filter.sanitize('true').toBooleanStrict());
assert.equal(false, Filter.sanitize('foobar').toBooleanStrict());
assert.equal(false, Filter.sanitize(5).toBooleanStrict());
assert.equal(false, Filter.sanitize(' ').toBooleanStrict());
assert.equal(false, Filter.sanitize('0').toBooleanStrict());
assert.equal(false, Filter.sanitize('false').toBooleanStrict());
assert.equal(false, Filter.sanitize('').toBooleanStrict());
assert.equal(false, Filter.sanitize('false').toBooleanStrict());
},
'test #trim()': function () {
//Test trim() with spaces
assert.equal('abc', Filter.sanitize(' abc').trim());
assert.equal('abc', Filter.sanitize('abc ').trim());
assert.equal('abc', Filter.sanitize(' abc ').trim());
//Test trim() with \t
assert.equal('abc', Filter.sanitize(' abc').trim());
assert.equal('abc', Filter.sanitize('abc ').trim());
assert.equal('abc', Filter.sanitize(' abc ').trim());
//Test trim() with a mixture of \t, \s, \r and \n
assert.equal('abc', Filter.sanitize(' \r\n abc\r\n ').trim());
//Test trim() with custom chars
assert.equal('2', Filter.sanitize('000020000').trim('0'));
assert.equal('202', Filter.sanitize('01000202100101').trim('01'));
},
'test #ltrim()': function () {
//Test ltrim() with spaces
assert.equal('abc', Filter.sanitize(' abc').ltrim());
assert.equal('abc ', Filter.sanitize(' abc ').ltrim());
//Test ltrim() with \t
assert.equal('abc', Filter.sanitize(' abc').ltrim());
assert.equal('abc ', Filter.sanitize(' abc ').ltrim());
//Test ltrim() with a mixture of \t, \s, \r and \n
assert.equal('abc\r\n', Filter.sanitize(' \r\n abc\r\n').ltrim());
//Test ltrim() with custom chars
assert.equal('20', Filter.sanitize('000020').ltrim('0'));
assert.equal('201', Filter.sanitize('010100201').ltrim('01'));
},
'test #rtrim()': function () {
//Test rtrim() with spaces
assert.equal(' abc', Filter.sanitize(' abc ').rtrim());
assert.equal('abc', Filter.sanitize('abc ').rtrim());
//Test rtrim() with \t
assert.equal(' abc', Filter.sanitize(' abc').rtrim());
assert.equal('abc', Filter.sanitize('abc ').rtrim());
//Test rtrim() with a mixture of \t, \s, \r and \n
assert.equal(' \r\n abc', Filter.sanitize(' \r\n abc\r\n ').rtrim());
//Test rtrim() with custom chars
assert.equal('02', Filter.sanitize('02000').rtrim('0'));
assert.equal('012', Filter.sanitize('01201001').rtrim('01'));
},
'test #toInt()': function () {
assert.ok(3 === Filter.sanitize('3').toInt());
assert.ok(3 === Filter.sanitize(' 3 ').toInt());
},
'test #toFloat()': function () {
assert.ok(3 === Filter.sanitize('3.').toFloat());
assert.ok(3 === Filter.sanitize(' 3 ').toFloat());
assert.ok(0 === Filter.sanitize('.0').toFloat());
assert.ok(13.13 === Filter.sanitize('13.13').toFloat());
},
'test #entityDecode()': function () {
assert.equal('&', Filter.sanitize('&').entityDecode());
assert.equal('&&', Filter.sanitize('&&').entityDecode());
assert.equal('""', Filter.sanitize('""').entityDecode());
assert.equal('€', Filter.sanitize('¤').entityDecode());
assert.equal("'", Filter.sanitize("'").entityDecode());
assert.equal("'", Filter.sanitize("'").entityDecode());
},
'test #entityEncode()': function () {
assert.equal('&', Filter.sanitize('&').entityEncode());
assert.equal('&&', Filter.sanitize('&&').entityEncode());
assert.equal(''', Filter.sanitize("'").entityEncode());
assert.equal('""', Filter.sanitize('""').entityEncode());
assert.equal('¤', Filter.sanitize('€').entityEncode());
},
'test #xss()': function () {
//Need more tests!
assert.equal('[removed] foobar', Filter.sanitize('javascript : foobar').xss());
assert.equal('[removed] foobar', Filter.sanitize('j a vasc ri pt: foobar').xss());
},
'test chaining': function () {
assert.equal('&', Filter.sanitize('&').chain().entityEncode().entityEncode().entityEncode().value());
//Return the default behaviour
Filter.wrap = function (str) {
return str;
}
}
}