Initial commit

This commit is contained in:
Arnaud Nelissen
2021-07-16 10:18:13 +02:00
commit 3af7ddab06
5894 changed files with 590836 additions and 0 deletions

0
node_modules/mquery/test/collection/browser.js generated vendored Normal file
View File

0
node_modules/mquery/test/collection/mongo.js generated vendored Normal file
View File

28
node_modules/mquery/test/collection/node.js generated vendored Normal file
View File

@@ -0,0 +1,28 @@
var assert = require('assert');
var mongo = require('mongodb');
var uri = process.env.MQUERY_URI || 'mongodb://localhost/mquery';
var client;
var db;
exports.getCollection = function(cb) {
mongo.MongoClient.connect(uri, function(err, _client) {
assert.ifError(err);
client = _client;
db = client.db();
var collection = db.collection('stuff');
// clean test db before starting
db.dropDatabase(function() {
cb(null, collection);
});
});
};
exports.dropCollection = function(cb) {
db.dropDatabase(function() {
client.close(cb);
});
};

21
node_modules/mquery/test/env.js generated vendored Normal file
View File

@@ -0,0 +1,21 @@
var env = require('../').env;
console.log('environment: %s', env.type);
var col;
switch (env.type) {
case 'node':
col = require('./collection/node');
break;
case 'mongo':
col = require('./collection/mongo');
break;
case 'browser':
col = require('./collection/browser');
break;
default:
throw new Error('missing collection implementation for environment: ' + env.type);
}
module.exports = exports = col;

3076
node_modules/mquery/test/index.js generated vendored Normal file

File diff suppressed because it is too large Load Diff

162
node_modules/mquery/test/utils.test.js generated vendored Normal file
View File

@@ -0,0 +1,162 @@
'use strict';
var Buffer = require('safe-buffer').Buffer;
var utils = require('../lib/utils');
var assert = require('assert');
var debug = require('debug');
var mongo;
try {
mongo = new require('mongodb');
} catch (e) {
debug('mongo', 'cannot construct mongodb instance');
}
describe('lib/utils', function() {
describe('clone', function() {
it('clones constructors named ObjectId', function(done) {
function ObjectId(id) {
this.id = id;
}
var o1 = new ObjectId('1234');
var o2 = utils.clone(o1);
assert.ok(o2 instanceof ObjectId);
done();
});
it('clones constructors named ObjectID', function(done) {
function ObjectID(id) {
this.id = id;
}
var o1 = new ObjectID('1234');
var o2 = utils.clone(o1);
assert.ok(o2 instanceof ObjectID);
done();
});
it('does not clone constructors named ObjectIdd', function(done) {
function ObjectIdd(id) {
this.id = id;
}
var o1 = new ObjectIdd('1234');
var o2 = utils.clone(o1);
assert.ok(!(o2 instanceof ObjectIdd));
done();
});
it('optionally clones ObjectId constructors using its clone method', function(done) {
function ObjectID(id) {
this.id = id;
this.cloned = false;
}
ObjectID.prototype.clone = function() {
var ret = new ObjectID(this.id);
ret.cloned = true;
return ret;
};
var id = 1234;
var o1 = new ObjectID(id);
assert.equal(id, o1.id);
assert.equal(false, o1.cloned);
var o2 = utils.clone(o1);
assert.ok(o2 instanceof ObjectID);
assert.equal(id, o2.id);
assert.ok(o2.cloned);
done();
});
it('clones mongodb.ReadPreferences', function(done) {
if (!mongo) return done();
var tags = [
{dc: 'tag1'}
];
var prefs = [
new mongo.ReadPreference('primary'),
new mongo.ReadPreference(mongo.ReadPreference.PRIMARY_PREFERRED),
new mongo.ReadPreference('secondary', tags)
];
var prefsCloned = utils.clone(prefs);
for (var i = 0; i < prefsCloned.length; i++) {
assert.notEqual(prefs[i], prefsCloned[i]);
if (prefs[i].tags) {
assert.ok(prefsCloned[i].tags);
assert.notEqual(prefs[i].tags, prefsCloned[i].tags);
assert.notEqual(prefs[i].tags[0], prefsCloned[i].tags[0]);
} else {
assert.equal(prefsCloned[i].tags, null);
}
}
done();
});
it('clones mongodb.Binary', function(done) {
if (!mongo) return done();
var buf = Buffer.from('hi');
var binary = new mongo.Binary(buf, 2);
var clone = utils.clone(binary);
assert.equal(binary.sub_type, clone.sub_type);
assert.equal(String(binary.buffer), String(buf));
assert.ok(binary !== clone);
done();
});
it('handles objects with no constructor', function(done) {
var name = '335';
var o = Object.create(null);
o.name = name;
var clone;
assert.doesNotThrow(function() {
clone = utils.clone(o);
});
assert.equal(name, clone.name);
assert.ok(o != clone);
done();
});
it('handles buffers', function(done) {
var buff = Buffer.alloc(10);
buff.fill(1);
var clone = utils.clone(buff);
for (var i = 0; i < buff.length; i++) {
assert.equal(buff[i], clone[i]);
}
done();
});
it('skips __proto__', function() {
var payload = JSON.parse('{"__proto__": {"polluted": "vulnerable"}}');
var res = utils.clone(payload);
assert.strictEqual({}.polluted, void 0);
assert.strictEqual(res.__proto__, Object.prototype);
});
});
describe('merge', function() {
it('avoids prototype pollution', function() {
var payload = JSON.parse('{"__proto__": {"polluted": "vulnerable"}}');
var obj = {};
utils.merge(obj, payload);
assert.strictEqual({}.polluted, void 0);
});
});
});