UNPKG

4.19 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 findUsers Method', function () {
12 let ad
13 const settings = require('./settings').findUsers
14 const timeout = 6000 // The timeout in milliseconds before a test is considered failed.
15
16 before(function (done) {
17 server(function (s) {
18 ad = new ActiveDirectory(config)
19 server = s
20 done()
21 })
22 })
23
24 describe('#findUsers()', function () {
25 settings.users.forEach(function (user) {
26 const len = user.results.length
27 const query = (user.query.filter) ? user.query.filter : user.query
28 it(`should return ${len} users for query '${query}'`, function (done) {
29 this.timeout(timeout)
30
31 ad.findUsers(query)
32 .then((users) => {
33 expect(users).to.not.be.null
34 expect(Array.isArray(users)).to.be.true
35 expect(users.length).to.equal(len)
36
37 const cns = users.map((u) => u.cn).join(' ')
38 user.results.forEach((expectedUser) => {
39 expect(cns).to.contain(expectedUser)
40 })
41
42 done()
43 })
44 .catch(done)
45 })
46 })
47
48 it('should return default user attributes when not specified', function (done) {
49 const defaultAttributes = ad.defaultAttributes.user
50 const user = settings.users[0]
51 ad.findUsers(user.query)
52 .then((users) => {
53 expect(users).to.not.be.null
54 expect(Array.isArray(users)).to.be.true
55
56 users.forEach((user) => {
57 const attributes = Object.keys(user)
58 expect(attributes).to.be.any.members(defaultAttributes)
59 })
60
61 done()
62 })
63 .catch(done)
64 })
65 })
66
67 describe('#findUsers(opts)', function () {
68 it('should include groups/membership if opts.includeMembership[] = [ \'all\' ]', function (done) {
69 this.timeout(timeout)
70
71 const user = settings.users[0]
72 const opts = {
73 includeMembership: [ 'all' ],
74 filter: user.query
75 }
76 ad.findUsers(opts)
77 .then((users) => {
78 expect(users).to.not.be.null
79 expect(Array.isArray(users)).to.be.true
80
81 users.forEach((user) => {
82 expect(user.groups).to.exist
83 })
84
85 done()
86 })
87 .catch(done)
88 })
89
90 it('should include groups/membership if opts.includeMembership[] = [ \'user\' ]', function (done) {
91 this.timeout(timeout)
92
93 const user = settings.users[0]
94 const opts = {
95 includeMembership: [ 'user' ],
96 filter: user.query
97 }
98 ad.findUsers(opts)
99 .then((users) => {
100 expect(users).to.not.be.null
101 expect(Array.isArray(users)).to.be.true
102
103 users.forEach((user) => {
104 expect(user.groups).to.exist
105 })
106
107 done()
108 })
109 .catch(done)
110 })
111
112 it('should not include groups/membership if opts.includeMembership disabled', function (done) {
113 const user = settings.users[0]
114 const opts = {
115 includeMembership: false,
116 filter: user.query
117 }
118 ad.findUsers(opts)
119 .then((users) => {
120 expect(users).to.not.be.null
121 expect(Array.isArray(users)).to.be.true
122
123 users.forEach((user) => {
124 expect(user.groups).to.not.exist
125 })
126
127 done()
128 })
129 .catch(done)
130 })
131
132 it('should return only requested attributes', function (done) {
133 const user = settings.users[0]
134 const opts = {
135 attributes: [ 'cn' ],
136 filter: user.query
137 }
138 ad.findUsers(opts)
139 .then((users) => {
140 expect(users).to.not.be.null
141 expect(Array.isArray(users)).to.be.true
142
143 users.forEach((user) => {
144 const keys = Object.keys(user)
145 expect(keys.length).to.equal(opts.attributes.length)
146 expect(keys).to.be.members(opts.attributes)
147 })
148
149 done()
150 })
151 .catch(done)
152 })
153 })
154})