Merge pull request #430 from PradnyaBaviskar/issue709

Return 400 when client provides an incorrect value
This commit is contained in:
Miroslav Bajtoš 2015-02-05 12:42:54 +01:00
commit 2e2e01cc5c
2 changed files with 32 additions and 2 deletions

View File

@ -13,7 +13,9 @@ function List(items, itemType, parent) {
try { try {
items = JSON.parse(items); items = JSON.parse(items);
} catch (e) { } catch (e) {
throw new Error(util.format('could not create List from JSON string: %j', items)); var err = new Error(util.format('could not create List from JSON string: %j', items));
err.statusCode = 400;
throw err;
} }
} }
@ -22,7 +24,9 @@ function List(items, itemType, parent) {
items = items || []; items = items || [];
if (!Array.isArray(items)) { if (!Array.isArray(items)) {
throw new Error(util.format('Items must be an array: %j', items)); var err = new Error(util.format('Items must be an array: %j', items));
err.statusCode = 400;
throw err;
} }
if(!itemType) { if(!itemType) {

View File

@ -23,6 +23,32 @@ describe('datatypes', function () {
}); });
}); });
it('should return 400 when property of type array is set to string value',
function (done) {
var myModel = db.define('myModel', {
list: { type: ['object'] }
});
(function(){
myModel.create({ list: 'This string will crash the server' });
}).should.throw({ statusCode: 400 });
done();
});
it('should return 400 when property of type array is set to object value',
function (done) {
var myModel = db.define('myModel', {
list: { type: ['object'] }
});
(function(){
myModel.create({ list: { key: 'This string will crash the server' } });
}).should.throw({ statusCode: 400 });
done();
});
it('should keep types when get read data from db', function (done) { it('should keep types when get read data from db', function (done) {
var d = new Date, id; var d = new Date, id;