UNPKG

4.13 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('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, function (err, users) {
32 expect(err).to.be.null
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 })
45 })
46
47 it('should return default user attributes when not specified', function (done) {
48 const defaultAttributes = ActiveDirectory.defaultAttributes.user
49 const user = settings.users[0]
50 ad.findUsers(user.query, function (err, users) {
51 expect(err).to.be.null
52 expect(users).to.not.be.null
53 expect(Array.isArray(users)).to.be.true
54
55 users.forEach((user) => {
56 const attributes = Object.keys(user)
57 expect(attributes).to.be.any.members(defaultAttributes)
58 })
59
60 done()
61 })
62 })
63 })
64
65 describe('#findUsers(opts)', function () {
66 it('should include groups/membership if opts.includeMembership[] = [ \'all\' ]', function (done) {
67 this.timeout(timeout)
68
69 const user = settings.users[0]
70 const opts = {
71 includeMembership: [ 'all' ],
72 filter: user.query
73 }
74 ad.findUsers(opts, function (err, users) {
75 expect(err).to.be.null
76 expect(users).to.not.be.null
77 expect(Array.isArray(users)).to.be.true
78
79 users.forEach((user) => {
80 expect(user.groups).to.exist
81 })
82
83 done()
84 })
85 })
86
87 it('should include groups/membership if opts.includeMembership[] = [ \'user\' ]', function (done) {
88 this.timeout(timeout)
89
90 const user = settings.users[0]
91 const opts = {
92 includeMembership: [ 'user' ],
93 filter: user.query
94 }
95 ad.findUsers(opts, function (err, users) {
96 expect(err).to.be.null
97 expect(users).to.not.be.null
98 expect(Array.isArray(users)).to.be.true
99
100 users.forEach((user) => {
101 expect(user.groups).to.exist
102 })
103
104 done()
105 })
106 })
107
108 it('should not include groups/membership if opts.includeMembership disabled', function (done) {
109 const user = settings.users[0]
110 const opts = {
111 includeMembership: false,
112 filter: user.query
113 }
114 ad.findUsers(opts, function (err, users) {
115 expect(err).to.be.null
116 expect(users).to.not.be.null
117 expect(Array.isArray(users)).to.be.true
118
119 users.forEach((user) => {
120 expect(user.groups).to.not.exist
121 })
122
123 done()
124 })
125 })
126
127 it('should return only requested attributes', function (done) {
128 const user = settings.users[0]
129 const opts = {
130 attributes: [ 'cn' ],
131 filter: user.query
132 }
133 ad.findUsers(opts, function (err, users) {
134 expect(err).to.be.null
135 expect(users).to.not.be.null
136 expect(Array.isArray(users)).to.be.true
137
138 users.forEach((user) => {
139 const keys = Object.keys(user)
140 expect(keys.length).to.equal(opts.attributes.length)
141 expect(keys).to.be.members(opts.attributes)
142 })
143
144 done()
145 })
146 })
147 })
148})