async'ify the groups code

This commit is contained in:
Girish Ramakrishnan
2021-06-28 15:15:28 -07:00
parent 7009c142cb
commit 31498afe39
15 changed files with 392 additions and 1065 deletions
+45 -76
View File
@@ -5,23 +5,21 @@
'use strict';
var async = require('async'),
const async = require('async'),
BoxError = require('../boxerror.js'),
database = require('../database.js'),
constants = require('../constants.js'),
expect = require('expect.js'),
externalldap = require('../externalldap.js'),
groupdb = require('../groupdb.js'),
groups = require('../groups.js'),
domains = require('../domains.js'),
ldap = require('ldapjs'),
mailboxdb = require('../mailboxdb.js'),
mailer = require('../mailer.js'),
server = require('../server.js'),
settings = require('../settings.js'),
superagent = require('superagent'),
userdb = require('../userdb.js'),
users = require('../users.js'),
util = require('util'),
_ = require('underscore');
var USERNAME = 'noBody';
@@ -65,9 +63,7 @@ function cleanupUsers(done) {
mailer._mailQueue = [];
async.series([
groupdb._clear,
userdb._clear,
mailboxdb._clear,
database._clear,
], done);
}
@@ -513,15 +509,13 @@ describe('External LDAP', function () {
groupname: 'extGroup1'
});
externalldap.sync(function progress() {}, function (error) {
externalldap.sync(function progress() {}, async function (error) {
expect(error).to.equal(null);
groups.getAll(function (error, result) {
expect(error).to.equal(null);
expect(result.length).to.equal(0);
const result = await groups.getAll();
expect(result.length).to.equal(0);
done();
});
done();
});
});
@@ -539,15 +533,13 @@ describe('External LDAP', function () {
it('succeeds with groups enabled', function (done) {
gLdapGroups = [];
externalldap.sync(function progress() {}, function (error) {
externalldap.sync(function progress() {}, async function (error) {
expect(error).to.equal(null);
groups.getAll(function (error, result) {
expect(error).to.equal(null);
expect(result.length).to.equal(0);
const result = await groups.getAll();
expect(result.length).to.equal(0);
done();
});
done();
});
});
@@ -556,15 +548,13 @@ describe('External LDAP', function () {
groupname: 'extGroup1'
});
externalldap.sync(function progress() {}, function (error) {
externalldap.sync(function progress() {}, async function (error) {
expect(error).to.equal(null);
groups.getAll(function (error, result) {
expect(error).to.equal(null);
expect(result.length).to.equal(1);
const result = await groups.getAll();
expect(result.length).to.equal(1);
done();
});
done();
});
});
@@ -573,37 +563,28 @@ describe('External LDAP', function () {
groupname: 'extGroup2'
});
externalldap.sync(function progress() {}, function (error) {
externalldap.sync(function progress() {}, async function (error) {
expect(error).to.equal(null);
groups.getAll(function (error, result) {
expect(error).to.equal(null);
expect(result.length).to.equal(2);
const result = await groups.getAll();
expect(result.length).to.equal(2);
done();
});
done();
});
});
it('does not create already existing group', function (done) {
it('does not create already existing group', async function () {
gLdapGroups.push({
groupname: 'INTERNALgroup' // also tests lowercasing
});
groups.create('internalgroup', '', function (error) {
expect(error).to.equal(null);
const externalldapSync = util.promisify(externalldap.sync);
externalldap.sync(function progress() {}, function (error) {
expect(error).to.equal(null);
await groups.add({ name: 'internalgroup' });
await externalldapSync(function progress() {});
groups.getAll(function (error, result) {
expect(error).to.equal(null);
expect(result.length).to.equal(3);
done();
});
});
});
const result = await groups.getAll();
expect(result.length).to.equal(3);
});
it('adds users of groups', function (done) {
@@ -612,19 +593,15 @@ describe('External LDAP', function () {
member: gLdapUsers.slice(-2).map(function (u) { return `cn=${u.username},${LDAP_CONFIG.baseDn}`; })
});
externalldap.sync(function progress() {}, function (error) {
externalldap.sync(function progress() {}, async function (error) {
expect(error).to.equal(null);
groups.getByName('nonemptygroup', function (error, result) {
expect(error).to.equal(null);
const result = await groups.getByName('nonemptygroup');
expect(result).to.be.ok();
groups.getMembers(result.id, function (error, result) {
expect(error).to.equal(null);
expect(result.length).to.equal(2);
done();
});
});
const result2 = await groups.getMembers(result.id);
expect(result2.length).to.equal(2);
done();
});
});
@@ -634,19 +611,16 @@ describe('External LDAP', function () {
member: gLdapUsers.map(function (u) { return `cn=${u.username},${LDAP_CONFIG.baseDn}`; }) // has 2 entries
});
externalldap.sync(function progress() {}, function (error) {
externalldap.sync(function progress() {}, async function (error) {
expect(error).to.equal(null);
groups.getByName('nonemptygroup', function (error, result) {
expect(error).to.equal(null);
const result = await groups.getByName('nonemptygroup');
expect(result).to.be.ok();
groups.getMembers(result.id, function (error, result) {
expect(error).to.equal(null);
expect(result.length).to.equal(2);
const result2 = await groups.getMembers(result.id);
expect(result2.length).to.equal(2);
done();
});
});
done();
});
});
@@ -656,23 +630,18 @@ describe('External LDAP', function () {
member: `cn=${gLdapUsers[0].username},${LDAP_CONFIG.baseDn}`
});
externalldap.sync(function progress() {}, function (error) {
externalldap.sync(function progress() {}, async function (error) {
expect(error).to.equal(null);
groups.getByName('onemembergroup', function (error, result) {
const result = await groups.getByName('onemembergroup');
const result2 = await groups.getMembers(result.id);
expect(result2.length).to.equal(1);
users.get(result2[0], function (error, result) {
expect(error).to.equal(null);
expect(result.username).to.equal(gLdapUsers[0].username);
groups.getMembers(result.id, function (error, result) {
expect(error).to.equal(null);
expect(result.length).to.equal(1);
users.get(result[0], function (error, result) {
expect(error).to.equal(null);
expect(result.username).to.equal(gLdapUsers[0].username);
done();
});
});
done();
});
});
});