mirror of
https://github.com/atlanticbiomedical/biomedjs.git
synced 2025-07-02 00:47:26 -04:00
Changes
This commit is contained in:
93
node_modules/express-validator/test/withMessageTest.js
generated
vendored
Normal file
93
node_modules/express-validator/test/withMessageTest.js
generated
vendored
Normal file
@ -0,0 +1,93 @@
|
||||
var chai = require('chai');
|
||||
var expect = chai.expect;
|
||||
var request = require('supertest');
|
||||
|
||||
var app;
|
||||
var errorMessage = 'Default error message';
|
||||
var mustBeTwoDigitsMessage = 'testparam must have two digits';
|
||||
var mustBeIntegerMessage = 'testparam must be an integer';
|
||||
|
||||
function validation(req, res) {
|
||||
req.checkParams('testparam', errorMessage)
|
||||
.notEmpty() // with default message
|
||||
.isInt().withMessage(mustBeIntegerMessage)
|
||||
.isInt() // with default message
|
||||
.isLength(2, 2).withMessage(mustBeTwoDigitsMessage);
|
||||
var errors = req.validationErrors();
|
||||
if (errors) {
|
||||
return res.send(errors);
|
||||
}
|
||||
res.send({ testparam: req.params.testparam });
|
||||
}
|
||||
|
||||
function fail(expectedMessage) {
|
||||
if (Array.isArray(expectedMessage)) {
|
||||
return function(body, length) {
|
||||
expect(body).to.have.length(length);
|
||||
expect(expectedMessage).to.have.length(length);
|
||||
for (var i = 0; i < length; ++i) {
|
||||
expect(body[i]).to.have.property('msg', expectedMessage[i]);
|
||||
}
|
||||
};
|
||||
}
|
||||
return function(body, length) {
|
||||
expect(body).to.have.length(length);
|
||||
expect(body[0]).to.have.property('msg', expectedMessage);
|
||||
};
|
||||
}
|
||||
|
||||
function pass(body) {
|
||||
expect(body).to.have.property('testparam', '42');
|
||||
}
|
||||
|
||||
function getRoute(path, test, length, done) {
|
||||
request(app)
|
||||
.get(path)
|
||||
.end(function(err, res) {
|
||||
test(res.body, length);
|
||||
done();
|
||||
});
|
||||
}
|
||||
|
||||
// This before() is required in each set of tests in
|
||||
// order to use a new validation function in each file
|
||||
before(function() {
|
||||
delete require.cache[require.resolve('./helpers/app')];
|
||||
app = require('./helpers/app')(validation);
|
||||
});
|
||||
|
||||
describe('#withMessage()', function() {
|
||||
it('should return one error per validation failure, with custom message where defined', function(done) {
|
||||
getRoute('/test', fail([mustBeIntegerMessage, errorMessage, mustBeTwoDigitsMessage]), 3, done);
|
||||
});
|
||||
|
||||
it('should return four errors when param is missing, with default message for the first and third errors, and custom messages for the rest, as defined', function(done) {
|
||||
getRoute('/', fail([errorMessage, mustBeIntegerMessage, errorMessage, mustBeTwoDigitsMessage]), 4, done);
|
||||
});
|
||||
|
||||
it('should return a success when param validates', function(done) {
|
||||
getRoute('/42', pass, null, done);
|
||||
});
|
||||
|
||||
it('should provide a custom message when an invalid value is provided, and the validation is followed by withMessage', function(done) {
|
||||
getRoute('/199', fail(mustBeTwoDigitsMessage), 1, done);
|
||||
});
|
||||
|
||||
it('should update the error message only if the preceeding validation was the one to fail', function() {
|
||||
var validator = require('../lib/express_validator')();
|
||||
var req = {
|
||||
body: {
|
||||
testParam: 'abc'
|
||||
}
|
||||
};
|
||||
|
||||
validator(req, {}, function() {});
|
||||
req.check('testParam', 'Default Error Message')
|
||||
.isInt() // should produce 'Default Error Message'
|
||||
.isLength(2).withMessage('Custom Error Message');
|
||||
|
||||
expect(req.validationErrors()).to.deep.equal([
|
||||
{ param: 'testParam', msg: 'Default Error Message', value: 'abc' }
|
||||
]);
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user