UNPKG

happn-service-mongo-2

Version:

service plugin for running happn on a mongo database, for happn-3 instances

100 lines (88 loc) 2.56 kB
var filename = require('path').basename(__filename); describe('integration/' + filename + '\n', function() { this.timeout(20000); var expect = require('expect.js'); var service = require('../../index'); var test = require('../__fixtures/happn-test-helper').create(); var config = { url: 'mongodb://127.0.0.1:27017/happn' }; var serviceInstance = new service(config); before('should clear the mongo collection', function(callback) { let clearMongo = require('../__fixtures/clear-mongo-collection'); clearMongo('mongodb://localhost/happn', 'happn', callback); }); before('should initialize the service', function(callback) { serviceInstance.initialize(function(e) { if (e) return callback(e); if (!serviceInstance.happn) serviceInstance.happn = { services: { utils: { wildcardMatch: function(pattern, matchTo) { var regex = new RegExp(pattern.replace(/[*]/g, '.*')); var matchResult = matchTo.match(regex); if (matchResult) return true; return false; } } } }; callback(); }); }); function createTestItem(id, group, custom, pathPrefix) { return new Promise((resolve, reject) => { serviceInstance.upsert( `${pathPrefix || ''}/searches-and-aggregation/${id}`, { data: { group, custom, id } }, {}, false, function(e, response, created) { if (e) return reject(e); resolve(created); } ); }); } this.timeout(60000); before('it creates large-ish testdata', async () => { for (let i = 0; i < 5000; i++) { await createTestItem(`largeDataset${i}`, 'largeDataset', `some test data to search on ${i}`); } }); it('maxTimeMS causes timeout ', async () => { let error = null; let timeout = setTimeout(() => { error = new Error('test timed out'); }, 120000); while (!error) { serviceInstance.find( '/searches-and-aggregation/*', { criteria: { 'data.custom': { $regex: '.*data to search on 4900.*' } }, options: { maxTimeMS: 1 } }, err => { error = err; clearTimeout(timeout); } ); await test.delay(500); } expect(error.code).to.be(50); }); after(function(done) { serviceInstance.stop(done); }); });