UNPKG

3.33 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').promiseWrapper
7const config = require('./config')
8
9let server = require('./mockServer')
10
11describe('Promised 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)
28 .then((users) => {
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 .catch(done)
43 })
44
45 it(`should return ${len} users for (commonName) ${group.cn}`, function (done) {
46 ad.getUsersForGroup(group.cn)
47 .then((users) => {
48 expect(users).to.not.be.null
49 expect(users.length).to.equal(len)
50
51 const dns = users.map((u) => {
52 return u.dn.toLowerCase().replace(/[\s\\]/g, '')
53 })
54 group.users.forEach((source) => {
55 const testStr = source.toLowerCase().replace(/\s/g, '')
56 expect(dns).to.contain(testStr)
57 })
58
59 done()
60 })
61 .catch(done)
62 })
63 })
64
65 it('should return empty users if groupName doesn\'t exist', function (done) {
66 ad.getUsersForGroup('!!!NON-EXISTENT GROUP!!!')
67 .then((users) => {
68 expect(users).to.be.undefined
69 done()
70 })
71 .catch(done)
72 })
73
74 it('should return default user attributes when not specified', function (done) {
75 const defaultAttributes = ad.defaultAttributes.user
76 const group = settings.groups[0]
77 ad.getUsersForGroup(group.dn)
78 .then((users) => {
79 expect(users).to.not.be.undefined
80 users.forEach((u) => {
81 expect(Object.keys(u).length).to.equal(defaultAttributes.length)
82 })
83 done()
84 })
85 .catch(done)
86 })
87 })
88
89 describe('#getUsersForGroup(opts)', function () {
90 it('should return only requested attributes', function (done) {
91 const opts = {
92 attributes: [ 'createTimeStamp' ]
93 }
94 const group = settings.groups[0]
95 ad.getUsersForGroup(opts, group.dn)
96 .then((users) => {
97 expect(users).to.not.be.undefined
98 expect(users.length).to.equal(group.users.length)
99
100 users.forEach((u) => {
101 const keys = Object.keys(u)
102 expect(keys.length).to.equal(opts.attributes.length)
103 keys.forEach((k) => {
104 expect(opts.attributes).to.contain(k)
105 })
106 })
107
108 done()
109 })
110 .catch(done)
111 })
112 })
113})