1 | 'use strict'
|
2 |
|
3 |
|
4 |
|
5 | const expect = require('chai').expect
|
6 | const ActiveDirectory = require('../index')
|
7 | const config = require('./config')
|
8 |
|
9 | let server = require('./mockServer')
|
10 |
|
11 | describe('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', '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 | })
|