Skip to content

Commit

Permalink
Added support for additional arguments on format validators.
Browse files Browse the repository at this point in the history
  • Loading branch information
Mickael van der Beek committed Dec 15, 2014
1 parent c6a8adc commit 36dabe1
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 35 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "node-cerberus",
"private": false,
"version": "0.0.3",
"version": "0.0.4",
"description": "Cerberus aka. Fluffy, is a validation and fuzzing library for Node.js core module method parameters.",
"main": "src/cerberus.js",
"scripts": {
Expand Down
11 changes: 10 additions & 1 deletion src/validator/validator.js
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,16 @@ module.exports = (function () {
throw new TypeError('Format should be a function or a string.');
}

return formatValidator(value);
if (typeof formatValidator === 'object') {
format = Object.keys(formatValidator)[0];
return this.validateFormat(format, [].concat(formatValidator[format], value));
}

if (Array.isArray(value) === false) {
value = [value];
}

return formatValidator.apply(this.formatValidators, value);
};

return new Validator();
Expand Down
29 changes: 21 additions & 8 deletions test/validator/negative-test-common.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,21 @@ module.exports = function () {
});
});

it('one key underloading', function () {
assert.strictEqual(Validator.validate({
a: {
type: 'String'
},
b: {
type: 'String'
}
}, {
a: 'hello world'
}), false);
});

it('one key overloading', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'String'
},
Expand All @@ -33,7 +46,7 @@ module.exports = function () {
});

it('unexistant parent-key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Object',
keys: {
Expand All @@ -53,7 +66,7 @@ module.exports = function () {
});

it('missing-key, nested-key, symetric, multi-key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Object',
keys: {
Expand All @@ -80,7 +93,7 @@ module.exports = function () {
});

it('missing-key, nested-key, asymetric, multi-key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Object',
keys: {
Expand All @@ -106,7 +119,7 @@ module.exports = function () {
});

it('missing-key, array, numeric-selector, single-key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Array',
keys: {
Expand All @@ -121,7 +134,7 @@ module.exports = function () {
});

it('missing-key, array, numeric-selector, multi-key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Array',
keys: {
Expand All @@ -141,7 +154,7 @@ module.exports = function () {
});

it('missing-key, array, numeric-selector, multi-key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Array',
keys: {
Expand All @@ -162,7 +175,7 @@ module.exports = function () {
});

it('missing-key, array, $ wildcard key selector, multi-key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Array',
keys: {
Expand Down
28 changes: 14 additions & 14 deletions test/validator/test-common.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ module.exports = function () {
});

it('single-key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'String',
formats: ['notEmpty', 'lenEquals10']
Expand All @@ -29,7 +29,7 @@ module.exports = function () {
});

it('multi-key, single-type', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'String'
},
Expand All @@ -43,7 +43,7 @@ module.exports = function () {
});

it('multi-key, multi-type', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'String'
},
Expand All @@ -57,7 +57,7 @@ module.exports = function () {
});

it('nested-key, single-key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Object',
keys: {
Expand All @@ -81,7 +81,7 @@ module.exports = function () {
});

it('nested-key, symetric, multi-key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Object',
keys: {
Expand Down Expand Up @@ -109,7 +109,7 @@ module.exports = function () {
});

it('nested-key, asymetric, multi-key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Object',
keys: {
Expand Down Expand Up @@ -137,7 +137,7 @@ module.exports = function () {
});

it('array', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Array'
}
Expand All @@ -149,7 +149,7 @@ module.exports = function () {
});

it('array, numeric-selector, single-key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Array',
keys: {
Expand All @@ -166,7 +166,7 @@ module.exports = function () {
});

it('array, numeric-selector, multi-key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Array',
keys: {
Expand All @@ -187,7 +187,7 @@ module.exports = function () {
});

it('array, $ wildcard key selector, multi-key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Array',
keys: {
Expand All @@ -205,7 +205,7 @@ module.exports = function () {
});

it('array, embedded', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Array',
keys: {
Expand All @@ -222,7 +222,7 @@ module.exports = function () {
});

it('array, embedded, multi-occurence, single-key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Array',
keys: {
Expand All @@ -246,7 +246,7 @@ module.exports = function () {
});

it('array, embedded, multi-occurence, multi-key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Array',
keys: {
Expand Down Expand Up @@ -275,7 +275,7 @@ module.exports = function () {
});

it('array, embedded, nested, multi-occurence', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Array',
keys: {
Expand Down
10 changes: 5 additions & 5 deletions test/validator/test-optional-mode.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ module.exports = function () {
});

it('specified value', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'String',
optional: true
Expand All @@ -35,7 +35,7 @@ module.exports = function () {
}
});

assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'String',
optional: true
Expand All @@ -52,7 +52,7 @@ module.exports = function () {
}
});

assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'String',
optional: true
Expand All @@ -63,7 +63,7 @@ module.exports = function () {
});

it('unspecified key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'String',
optional: true
Expand All @@ -72,7 +72,7 @@ module.exports = function () {
});

it('nested, unspecified parent key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'Object',
optional: true,
Expand Down
12 changes: 6 additions & 6 deletions test/validator/test-strict-mode.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ module.exports = function () {
});

it('non existant key', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'String',
formats: ['notEmpty', 'lenEquals10']
Expand All @@ -33,7 +33,7 @@ module.exports = function () {
}
});

assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'String',
formats: ['notEmpty', 'lenEquals10']
Expand All @@ -48,7 +48,7 @@ module.exports = function () {
});

it('wrong type value', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'String',
formats: ['notEmpty', 'lenEquals10']
Expand All @@ -65,7 +65,7 @@ module.exports = function () {
}
});

assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'String',
formats: []
Expand All @@ -82,7 +82,7 @@ module.exports = function () {
});

it('value with wrong format', function () {
assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'String',
formats: ['notEmpty', 'lenEquals10']
Expand All @@ -99,7 +99,7 @@ module.exports = function () {
}
});

assert.deepEqual(Validator.validate({
assert.strictEqual(Validator.validate({
a: {
type: 'String',
formats: ['notEmpty', 'lenEquals10']
Expand Down

0 comments on commit 36dabe1

Please sign in to comment.