Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
return new Promise((resolve, reject) => {
const dbc = new DatabaseClient();
const MongoClient = mongoMock.MongoClient;
// unique db for each request
const uri = `mongodb://${faker.internet.domainName()}:12345/Foo`;
MongoClient.connect(uri, {}, (err, db) => {
if (err) reject(err);
else {
// dbc.connect(uri, db);
// Hack until mongo-mock support 3.x driver
dbc.db = Promise.resolve(db);
dbs.push(db);
resolve(dbc);
}
});
});
}
import 'reflect-metadata';
import { MongoRepository } from '../src/Repository';
import { Collection, Before, After } from '../src/Decorators';
import { DatabaseClient } from '../src/DatabaseClient';
import * as mongoMock from 'mongo-mock';
mongoMock.max_delay = 0; // turn of fake async
import { expect } from 'chai';
import * as faker from 'faker';
describe('MongoRepository', () => {
const dbs = [];
// Make sure you close all DBs
// Added this in case of error, CI tests are not hung open
after(async () => {
await Promise.all(dbs.map(db => db.close()));
});
function getDb(): Promise {
return new Promise((resolve, reject) => {
const dbc = new DatabaseClient();
const MongoClient = mongoMock.MongoClient;
col.updateOne = async function replacementUpdateOne(...uoArgsIncoming) {
const uoArgs = uoArgsIncoming;
try {
return await originalUpdateOne.call(this, ...uoArgs);
} catch (err) {
if (err && err.code === 121) {
// Get doc we're trying to update
const currentDoc = await col.findOne(uoArgs[0]);
// Load current doc into mock mongo
const mockDb = await MongoMock.MongoClient.connect(MongoMockUrl);
const mockCol = mockDb.collection('mock');
await mockCol.insertOne(currentDoc);
// Apply updates to our mock version of the current doc
await mockCol.updateOne(...uoArgs);
// Get updated doc from mock mongo to compare against schema
const doc = await mockCol.findOne(uoArgs[0]);
// Explain schema errors
err.validationErrors = await explainValidationError(db, collectionName, { doc });
// Clean up MongoMock
await mockCol.removeOne(...uoArgs);
}
throw err;
}
};
col.updateMany = async function replacementUpdateMany(...umArgsIncoming) {
const Ajv = require('ajv');
const AjvBsonType = require('ajv-bsontype');
const MongoMock = require('mongo-mock');
const ajv = new Ajv({ allErrors: true });
AjvBsonType(ajv);
const MongoMockUrl = 'mongodb://localhost:27017/mongo-schemer';
MongoMock.max_delay = 0;
const validationErrors = async (db, collectionName, { doc, err }) => {
const collectionInfo = await db.command({ listCollections: 1, filter: { name: collectionName } });
const schema = collectionInfo.cursor.firstBatch[0].options.validator.$jsonSchema;
if (!doc && err) {
doc = ('op' in err) ? err.op : err.getOperation(); // eslint-disable-line no-param-reassign
}
const valid = ajv.validate(schema, doc);
return { valid, errors: ajv.errors };
};
const explainSchemaErrors = (incomingDb, options = {}) => {
const db = incomingDb;
const { onError, includeValidationInError } = options;
if (onError) {
db.onValidationError = onError;
let expect = require('chai').expect;
let mongomock = require('mongo-mock');
mongomock.max_delay = 0;
let datafire = require('../index');
let locations = require('../lib/locations');
locations.integrations.push(__dirname + '/integrations');
locations.credentials = [__dirname + '/credentials'];
let mongo = datafire.Integration.new('mongodb').as('test');
mongo.client = mongomock.MongoClient;
describe('MongoDB Integration', () => {
let executeSuccess = (flow, done) => {
flow.execute(err => {
if (err) throw err;
done();
});
}
it('should insert', (done) => {
let flow = new datafire.Flow('test_flow');
let pets = [{
name: 'Lucy',
type: 'dog',
}, {
name: 'Blaney',
let expect = require('chai').expect;
let mongomock = require('mongo-mock');
mongomock.max_delay = 0;
let datafire = require('../index');
let locations = require('../lib/locations');
locations.integrations.push(__dirname + '/integrations');
locations.credentials = [__dirname + '/credentials'];
let mongo = datafire.Integration.new('mongodb').as('test');
mongo.client = mongomock.MongoClient;
describe('MongoDB Integration', () => {
let executeSuccess = (flow, done) => {
flow.execute(err => {
if (err) throw err;
done();
});
}
var MongoDB = require('mongo-mock');
var DBConfig = require('../configuration/database.js');
/**
* Node Emulator Project
*
* Handles connections to MongoDB
*
* @author Alvaro Bezerra
*/
var MongoClient = MongoDB.MongoClient;
MongoClient.persist = DBConfig.jsonFileName;
var ConnectionManager = function( onConnectionReady ) {
console.log("[ I ] Connecting to MongoDB NoSQL Database...");
MongoClient.connect(DBConfig.connectionUrl, function( err, db ) {
if(err) {
console.error("[ E ] ConnectionManager::Error while trying to connect to MongoDB. See logs for more details.".red);
process.exit(1);
}
//MOCK
var accounts = db.collection('login');
accounts.insert({
userId: 'alvarodms',