UNPKG

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