add groupdb tests

This commit is contained in:
Girish Ramakrishnan
2016-09-29 15:11:56 -07:00
parent 8e712da2c8
commit 430ac330dc

View File

@@ -1,4 +1,3 @@
/* jslint node:true */
/* global it:false */
/* global describe:false */
/* global before:false */
@@ -15,6 +14,7 @@ var appdb = require('../appdb.js'),
DatabaseError = require('../databaseerror.js'),
eventlogdb = require('../eventlogdb.js'),
expect = require('expect.js'),
groupdb = require('../groupdb.js'),
hat = require('hat'),
mailboxdb = require('../mailboxdb.js'),
settingsdb = require('../settingsdb.js'),
@@ -22,6 +22,45 @@ var appdb = require('../appdb.js'),
userdb = require('../userdb.js'),
_ = require('underscore');
var USER_0 = {
id: 'uuid0',
username: 'uuid0',
password: 'secret',
email: 'safe@me.com',
salt: 'morton',
createdAt: 'sometime back',
modifiedAt: 'now',
resetToken: hat(256),
displayName: '',
showTutorial: false
};
var USER_1 = {
id: 'uuid1',
username: 'uuid1',
password: 'secret',
email: 'safe2@me.com',
salt: 'tata',
createdAt: 'sometime back',
modifiedAt: 'now',
resetToken: '',
displayName: 'Herbert 1',
showTutorial: false
};
var USER_2 = {
id: 'uuid2',
username: 'uuid2',
password: 'secret',
email: 'safe3@me.com',
salt: 'tata',
createdAt: 'sometime back',
modifiedAt: 'now',
resetToken: '',
displayName: 'Herbert 2',
showTutorial: false
};
describe('database', function () {
before(function (done) {
async.series([
@@ -35,45 +74,6 @@ describe('database', function () {
});
describe('user', function () {
var USER_0 = {
id: 'uuid0',
username: 'uuid0',
password: 'secret',
email: 'safe@me.com',
salt: 'morton',
createdAt: 'sometime back',
modifiedAt: 'now',
resetToken: hat(256),
displayName: '',
showTutorial: false
};
var USER_1 = {
id: 'uuid1',
username: 'uuid1',
password: 'secret',
email: 'safe2@me.com',
salt: 'tata',
createdAt: 'sometime back',
modifiedAt: 'now',
resetToken: '',
displayName: 'Herbert 1',
showTutorial: false
};
var USER_2 = {
id: 'uuid2',
username: 'uuid2',
password: 'secret',
email: 'safe3@me.com',
salt: 'tata',
createdAt: 'sometime back',
modifiedAt: 'now',
resetToken: '',
displayName: 'Herbert 2',
showTutorial: false
};
it('can add user', function (done) {
userdb.add(USER_0.id, USER_0, done);
});
@@ -1179,6 +1179,126 @@ describe('database', function () {
});
});
describe('groups', function () {
before(function (done) {
async.series([
database.initialize,
database._clear,
userdb.add.bind(null, USER_0.id, USER_0),
userdb.add.bind(null, USER_1.id, USER_1),
userdb.add.bind(null, USER_2.id, USER_2)
], done);
});
var GROUP_ID_1 = 'foundersid';
it('can create a group', function (done) {
groupdb.add(GROUP_ID_1, 'founders', function (error, result) {
expect(error).to.be(null);
done();
});
});
it('can get existing group', function (done) {
groupdb.get(GROUP_ID_1, function (error, result) {
expect(error).to.be(null);
expect(result.name).to.be('founders');
done();
});
});
it('can add member to the group', function (done) {
groupdb.addMember(GROUP_ID_1, USER_0.id, function (error) {
expect(error).to.be(null);
done();
});
});
it('cannot add invalid user to group', function (done) {
groupdb.addMember(GROUP_ID_1, 'random', function (error) {
expect(error.reason).to.be(DatabaseError.NOT_FOUND);
done();
});
});
it('can set members', function (done) {
groupdb.setMembers(GROUP_ID_1, [ USER_1.id, USER_2.id ], function (error) {
expect(error).to.be(null);
done();
});
});
it('can list users of group', function (done) {
groupdb.getMembers(GROUP_ID_1, function (error, result) {
expect(error).to.be(null);
expect(result).to.eql([ USER_1.id, USER_2.id ]);
done();
});
});
it('cannot delete non-existent member', function (done) {
groupdb.removeMember(GROUP_ID_1, 'random', function (error) {
expect(error.reason).to.be(DatabaseError.NOT_FOUND);
done();
});
});
it('can remove existing member', function (done) {
groupdb.removeMember(GROUP_ID_1, USER_1.id, function (error) {
expect(error).to.be(null);
done();
});
});
it('can getWithMembers', function (done) {
groupdb.getWithMembers(GROUP_ID_1, function (error, result) {
expect(error).to.be(null);
expect(result.name).to.be('founders');
expect(result.userIds).to.eql([ USER_2.id ]);
done();
});
});
it('can getAll', function (done) {
groupdb.getAll(function (error, result) {
expect(error).to.be(null);
expect(result.length).to.be(2); // admin!
expect(result[0].name).to.be('admin');
expect(result[1].name).to.be('founders');
done();
});
});
it('can getAllWithMembers', function (done) {
groupdb.getAllWithMembers(function (error, result) {
expect(error).to.be(null);
expect(result.length).to.be(2); // admin!
expect(result[0].name).to.be('admin');
expect(result[0].userIds).to.eql([ ]);
expect(result[1].name).to.be('founders');
expect(result[1].userIds).to.eql([ USER_2.id ]);
done();
});
});
it('can set groups', function (done) {
groupdb.setGroups(USER_0.id, [ 'admin', GROUP_ID_1 ], function (error) {
expect(error).to.be(null);
done();
});
});
it('can get groups', function (done) {
groupdb.getGroups(USER_0.id, function (error, result) {
expect(error).to.be(null);
expect(result).to.eql([ 'admin', GROUP_ID_1 ]);
done();
});
});
});
describe('mailboxes', function () {
it('add user mailbox succeeds', function (done) {
mailboxdb.add('girish', 'uid-0', mailboxdb.TYPE_USER, function (error, mailbox) {