request-validator
Version:
Schema-based request validation middleware for express and connect.
182 lines (146 loc) • 4.23 kB
JavaScript
/* global describe, it */
;
var assert = require('assert'),
validator = require('../index.js');
describe('type: integer', function () {
it('required', function () {
var schema = {
type: 'integer'
};
assert.throws(function () {
validator(schema).validate();
});
assert.throws(function () {
validator(schema).validate(null);
});
assert.doesNotThrow(function () {
validator(schema).validate(123);
});
});
it('nullable', function () {
var schema = {
type: ['integer', 'null']
};
assert.throws(function () {
validator(schema).validate(undefined);
});
assert.doesNotThrow(function () {
validator(schema).validate(null);
validator(schema).validate(123);
});
});
it('type', function () {
var schema = {
type: 'integer'
};
assert.throws(function () {
validator(schema).validate('123');
});
assert.throws(function () {
validator(schema).validate(true);
});
assert.throws(function () {
validator(schema).validate(false);
});
assert.throws(function () {
validator(schema).validate([]);
});
assert.throws(function () {
validator(schema).validate({});
});
assert.throws(function () {
validator(schema).validate(Math.PI);
});
assert.doesNotThrow(function () {
validator(schema).validate(13);
});
});
it('enum', function () {
var schema = {
type: 'integer',
enum: [1, 3, 5, 7]
};
assert.throws(function () {
validator(schema).validate(4);
});
assert.doesNotThrow(function () {
validator(schema).validate(5);
});
});
it('minimum', function () {
var schema = {
type: 'integer',
minimum: 7
};
assert.throws(function () {
validator(schema).validate(6);
});
assert.doesNotThrow(function () {
validator(schema).validate(7);
validator(schema).validate(999);
});
});
it('exclusiveMinimum', function () {
var schema = {
type: 'integer',
minimum: 7,
exclusiveMinimum: true
};
assert.throws(function () {
validator(schema).validate(6);
});
assert.throws(function () {
validator(schema).validate(7);
});
assert.doesNotThrow(function () {
validator(schema).validate(8);
validator(schema).validate(999);
});
});
it('maximum', function () {
var schema = {
type: 'integer',
maximum: 77
};
assert.throws(function () {
validator(schema).validate(78);
});
assert.doesNotThrow(function () {
validator(schema).validate(-12);
validator(schema).validate(76);
validator(schema).validate(77);
});
});
it('exclusiveMaximum', function () {
var schema = {
type: 'integer',
maximum: 77,
exclusiveMaximum: true
};
assert.throws(function () {
validator(schema).validate(77);
});
assert.throws(function () {
validator(schema).validate(78);
});
assert.doesNotThrow(function () {
validator(schema).validate(-12);
validator(schema).validate(75);
validator(schema).validate(76);
});
});
it('multipleOf', function () {
var schema = {
type: 'integer',
multipleOf: 7
};
assert.throws(function () {
validator(schema).validate(8);
});
assert.doesNotThrow(function () {
validator(schema).validate(14);
validator(schema).validate(-49);
validator(schema).validate(77);
});
});
});