UNPKG

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