Disallow regexp string in arrays for coerce (#1279)

Disallow regexp arrays for coerce
This commit is contained in:
Mikhail 2017-03-23 03:29:01 +03:00 committed by Sakib Hasan
parent c99441247c
commit 68b93e1074
2 changed files with 10 additions and 1 deletions

View File

@ -1737,9 +1737,11 @@ DataAccessObject._coerce = function(where, options) {
if (Array.isArray(val)) { if (Array.isArray(val)) {
for (var i = 0; i < val.length; i++) { for (var i = 0; i < val.length; i++) {
if (val[i] !== null && val[i] !== undefined) { if (val[i] !== null && val[i] !== undefined) {
if (!(val[i] instanceof RegExp)) {
val[i] = DataType(val[i]); val[i] = DataType(val[i]);
} }
} }
}
} else { } else {
if (val != null) { if (val != null) {
const allowExtendedOperators = self._allowExtendedOperators(options); const allowExtendedOperators = self._allowExtendedOperators(options);

View File

@ -1308,6 +1308,7 @@ describe('DataAccessObject', function() {
model = ds.createModel('M1', { model = ds.createModel('M1', {
id: {type: String, id: true}, id: {type: String, id: true},
age: Number, age: Number,
string: 'string',
vip: Boolean, vip: Boolean,
date: Date, date: Date,
location: 'GeoPoint', location: 'GeoPoint',
@ -1653,6 +1654,12 @@ describe('DataAccessObject', function() {
assert.deepEqual(where, {age: {inq: ['xyz', 12]}}); assert.deepEqual(where, {age: {inq: ['xyz', 12]}});
}); });
it('does not coerce to a string for a regexp value in an array ',
function() {
where = model._coerce({string: {inq: [/xyz/i, new RegExp(/xyz/i)]}});
assert.deepEqual(where, {string: {inq: [/xyz/i, /xyz/i]}});
});
// settings // settings
it('gets settings in priority', it('gets settings in priority',
function() { function() {