UNPKG

3.52 kBJavaScriptView Raw
1'use strict'
2/* eslint-env node, mocha */
3/* eslint-disable no-unused-expressions */
4
5const expect = require('chai').expect
6const ActiveDirectory = require('../index')
7const config = require('./config')
8
9let server = require('./mockServer')
10
11describe('getUsersForGroup method', function () {
12 let ad
13 const settings = require('./settings').getUsersForGroup
14
15 before(function (done) {
16 server(function (s) {
17 ad = new ActiveDirectory(config)
18 server = s
19 done()
20 })
21 })
22
23 describe('#getUsersForGroup()', function () {
24 settings.groups.forEach((group) => {
25 const len = group.users.length
26 it(`should return ${len} users for (distinguishedName) ${group.dn}`, function (done) {
27 ad.getUsersForGroup(group.dn, function (err, users) {
28 expect(err).to.be.null
29 expect(users).to.not.be.null
30 expect(users.length).to.equal(len)
31
32 const dns = users.map((u) => {
33 return u.dn.toLowerCase().replace(/[\s\\]/g, '')
34 })
35 group.users.forEach((source) => {
36 const testStr = source.toLowerCase().replace(/\s/g, '')
37 expect(dns).to.contain(testStr)
38 })
39
40 done()
41 })
42 })
43
44 it(`should return ${len} users for (commonName) ${group.cn}`, function (done) {
45 ad.getUsersForGroup(group.cn, function (err, users) {
46 expect(err).to.be.null
47 expect(users).to.not.be.null
48 expect(users.length).to.equal(len)
49
50 const dns = users.map((u) => {
51 return u.dn.toLowerCase().replace(/[\s\\]/g, '')
52 })
53 group.users.forEach((source) => {
54 const testStr = source.toLowerCase().replace(/\s/g, '')
55 expect(dns).to.contain(testStr)
56 })
57
58 done()
59 })
60 })
61 })
62
63 it('should return empty users if groupName doesn\'t exist', function (done) {
64 ad.getUsersForGroup('!!!NON-EXISTENT GROUP!!!', function (err, users) {
65 expect(err).to.be.null
66 expect(users).to.be.undefined
67 done()
68 })
69 })
70
71 it('should return default user attributes when not specified', function (done) {
72 const defaultAttributes = [
73 'dn', 'distinguishedName',
74 'userPrincipalName', 'sAMAccountName', /* 'objectSID', */ 'mail',
75 'lockoutTime', 'whenCreated', 'pwdLastSet', 'userAccountControl',
76 'employeeID', 'sn', 'givenName', 'initials', 'cn', 'displayName',
77 'comment', 'description'
78 ]
79 const group = settings.groups[0]
80 ad.getUsersForGroup(group.dn, function (err, users) {
81 expect(err).to.be.null
82 expect(users).to.not.be.undefined
83 users.forEach((u) => {
84 expect(Object.keys(u).length).to.equal(defaultAttributes.length)
85 })
86 done()
87 })
88 })
89 })
90
91 describe('#getUsersForGroup(opts)', function () {
92 it('should return only requested attributes', function (done) {
93 const opts = {
94 attributes: [ 'createTimeStamp' ]
95 }
96 const group = settings.groups[0]
97 ad.getUsersForGroup(opts, group.dn, function (err, users) {
98 expect(err).to.be.null
99 expect(users).to.not.be.undefined
100 expect(users.length).to.equal(group.users.length)
101
102 users.forEach((u) => {
103 const keys = Object.keys(u)
104 expect(keys.length).to.equal(opts.attributes.length)
105 keys.forEach((k) => {
106 expect(opts.attributes).to.contain(k)
107 })
108 })
109
110 done()
111 })
112 })
113 })
114})