UNPKG

ad-promise

Version:

This is a fork of the gheeres node-activedirectory. It fixes some issues with timeouts with very large AD-Groups as well as returning also promises so you won't have to use callbacks

98 lines (90 loc) 3.52 kB
var _ = require('underscore'); var assert = require('assert'); var ActiveDirectory = require('../index'); var config = require('./config'); describe('ActiveDirectory', function() { var ad; var settings = require('./settings').getUsersForGroup; before(function() { ad = new ActiveDirectory(config); }); describe('#getUsersForGroup()', function() { settings.groups.forEach(function(group) { it('should return ' + (group.users || []).length + ' users for (distinguishedName) ' + group.dn, function(done) { ad.getUsersForGroup(group.dn, function(err, users) { if (err) return(done(err)); assert(users); assert.equal((group.users || []).length, (users || []).length); (group.users || []).forEach(function(source) { var lowerCaseSource = (source || '').toLowerCase(); assert(_.any(users, function(result) { return((result.dn || '').toLowerCase()=== lowerCaseSource); })); }); done(); }); }); it('should return ' + (group.users || []).length + ' users for (commonName) ' + group.cn, function(done) { ad.getUsersForGroup(group.cn, function(err, users) { if (err) return(done(err)); assert(users); assert.equal((group.users || []).length, (users || []).length); (group.users || []).forEach(function(source) { var lowerCaseSource = (source || '').toLowerCase(); assert(_.any(users, function(result) { return((result.dn || '').toLowerCase()=== lowerCaseSource); })); }); done(); }); }); }); it('should return empty users if groupName doesn\'t exist', function(done) { ad.getUsersForGroup('!!!NON-EXISTENT GROUP!!!', function(err, users) { if (err) return(done(err)); assert(! users); done(); }); }); it('should return default user attributes when not specified', function(done) { var defaultAttributes = [ 'userPrincipalName', 'sAMAccountName', 'mail', 'lockoutTime', 'whenCreated', 'pwdLastSet', 'userAccountControl', 'employeeID', 'sn', 'givenName', 'initials', 'cn', 'displayName', 'comment', 'description' ]; var group = settings.groups[0]; ad.getUsersForGroup(group.dn, function(err, users) { if (err) return(done(err)); assert(users); (users || []).forEach(function(user) { assert(_.keys(user || {}).length <= defaultAttributes.length); }); done(); }); }); }); describe('#getUsersForGroup(opts)', function() { it('should return only requested attributes', function(done) { var opts = { attributes: [ 'createTimeStamp' ] }; var group = settings.groups[0]; ad.getUsersForGroup(opts, group.dn, function(err, users) { if (err) return(done(err)); assert(users); assert.equal((group.users || []).length, (users || []).length); (users || []).forEach(function(user) { var keys = _.keys(user) || []; assert(keys.length <= opts.attributes.length); keys.forEach(function(key) { assert(_.any(opts.attributes, function(attribute) { return(key === attribute); })); }); }); done(); }); }); }); });