First working prototype of the keyserver

This commit is contained in:
Tankred Hase
2016-05-27 19:57:48 +02:00
parent 439ab77422
commit 2d07c34060
15 changed files with 664 additions and 167 deletions

View File

@@ -2,62 +2,70 @@
require('co-mocha')(require('mocha')); // monkey patch mocha for generators
const Mongo = require('../../src/dao/mongo'),
expect = require('chai').expect,
fs = require('fs');
const log = require('npmlog');
const Mongo = require('../../src/dao/mongo');
const expect = require('chai').expect;
describe('Mongo Integration Tests', function() {
this.timeout(20000);
const defaultType = 'apple';
const secondaryType = 'orange';
const DB_TYPE = 'apple';
let mongo;
before(function *() {
let credentials;
try {
credentials = JSON.parse(fs.readFileSync(__dirname + '/../../credentials.json'));
} catch(e) {}
credentials = require('../../credentials.json');
} catch(e) {
log.info('mongo-test', 'No credentials.json found ... using environment vars.');
}
mongo = new Mongo({
uri: process.env.MONGO_URI || credentials.mongoUri,
user: process.env.MONGO_USER || credentials.mongoUser,
password: process.env.MONGO_PASS || credentials.mongoPass,
type: defaultType
password: process.env.MONGO_PASS || credentials.mongoPass
});
yield mongo.connect();
});
beforeEach(function *() {
yield mongo.clear();
yield mongo.clear(secondaryType);
yield mongo.clear(DB_TYPE);
});
afterEach(function() {});
after(function *() {
yield mongo.clear();
yield mongo.clear(secondaryType);
yield mongo.clear(DB_TYPE);
yield mongo.disconnect();
});
describe("create", function() {
it('should insert a document', function *() {
let r = yield mongo.create({ _id:'0' });
expect(r.insertedCount).to.equal(1);
});
it('should insert a document with a type', function *() {
let r = yield mongo.create({ _id:'0' });
expect(r.insertedCount).to.equal(1);
r = yield mongo.create({ _id:'0' }, secondaryType);
let r = yield mongo.create({ _id:'0' }, DB_TYPE);
expect(r.insertedCount).to.equal(1);
});
it('should fail if two with the same ID are inserted', function *() {
let r = yield mongo.create({ _id:'0' });
let r = yield mongo.create({ _id:'0' }, DB_TYPE);
expect(r.insertedCount).to.equal(1);
try {
r = yield mongo.create({ _id:'0' });
r = yield mongo.create({ _id:'0' }, DB_TYPE);
} catch(e) {
expect(e.message).to.match(/duplicate/);
}
});
});
describe("batch", function() {
it('should insert a document', function *() {
let r = yield mongo.batch([{ _id:'0' }, { _id:'1' }], DB_TYPE);
expect(r.insertedCount).to.equal(2);
});
it('should fail if docs with the same ID are inserted', function *() {
let r = yield mongo.batch([{ _id:'0' }, { _id:'1' }], DB_TYPE);
expect(r.insertedCount).to.equal(2);
try {
r = yield mongo.batch([{ _id:'0' }, { _id:'1' }], DB_TYPE);
} catch(e) {
expect(e.message).to.match(/duplicate/);
}
@@ -66,64 +74,35 @@ describe('Mongo Integration Tests', function() {
describe("update", function() {
it('should update a document', function *() {
let r = yield mongo.create({ _id:'0' });
r = yield mongo.update({ _id:'0' }, { foo:'bar' });
let r = yield mongo.create({ _id:'0' }, DB_TYPE);
r = yield mongo.update({ _id:'0' }, { foo:'bar' }, DB_TYPE);
expect(r.modifiedCount).to.equal(1);
r = yield mongo.get({ _id:'0' });
expect(r.foo).to.equal('bar');
});
it('should update a document with a type', function *() {
let r = yield mongo.create({ _id:'0' }, secondaryType);
r = yield mongo.update({ _id:'0' }, { foo:'bar' }, secondaryType);
expect(r.modifiedCount).to.equal(1);
r = yield mongo.get({ _id:'0' }, secondaryType);
r = yield mongo.get({ _id:'0' }, DB_TYPE);
expect(r.foo).to.equal('bar');
});
});
describe("get", function() {
it('should get a document', function *() {
let r = yield mongo.create({ _id:'0' });
r = yield mongo.get({ _id:'0' });
expect(r).to.exist;
});
it('should get a document with a type', function *() {
let r = yield mongo.create({ _id:'0' }, secondaryType);
r = yield mongo.get({ _id:'0' }, secondaryType);
let r = yield mongo.create({ _id:'0' }, DB_TYPE);
r = yield mongo.get({ _id:'0' }, DB_TYPE);
expect(r).to.exist;
});
});
describe("list", function() {
it('should list documents', function *() {
let r = yield mongo.create({ _id:'0', foo:'bar' });
r = yield mongo.create({ _id:'1', foo:'bar' });
r = yield mongo.list({ foo:'bar' });
expect(r).to.deep.equal([{ _id:'0', foo:'bar' }, { _id:'1', foo:'bar' }]);
});
it('should list documents with a type', function *() {
let r = yield mongo.create({ _id:'0', foo:'bar' }, secondaryType);
r = yield mongo.create({ _id:'1', foo:'bar' }, secondaryType);
r = yield mongo.list({ foo:'bar' }, secondaryType);
expect(r).to.deep.equal([{ _id:'0', foo:'bar' }, { _id:'1', foo:'bar' }]);
let r = yield mongo.batch([{ _id:'0', foo:'bar' }, { _id:'1', foo:'bar' }], DB_TYPE);
r = yield mongo.list({ foo:'bar' }, DB_TYPE);
expect(r).to.deep.equal([{ _id:'0', foo:'bar' }, { _id:'1', foo:'bar' }], DB_TYPE);
});
});
describe("remove", function() {
it('should remove a document', function *() {
let r = yield mongo.create({ _id:'0' });
r = yield mongo.remove({ _id:'0' });
r = yield mongo.get({ _id:'0' });
expect(r).to.not.exist;
});
it('should remove a document with a type', function *() {
let r = yield mongo.create({ _id:'0' }, secondaryType);
r = yield mongo.remove({ _id:'0' }, secondaryType);
r = yield mongo.get({ _id:'0' }, secondaryType);
let r = yield mongo.create({ _id:'0' }, DB_TYPE);
r = yield mongo.remove({ _id:'0' }, DB_TYPE);
r = yield mongo.get({ _id:'0' }, DB_TYPE);
expect(r).to.not.exist;
});
});