UNPKG

4.6 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 findGroup Method', function () {
12 let ad
13 const settings = require('./settings').findGroup
14
15 before(function (done) {
16 server(function (s) {
17 ad = new ActiveDirectory(config)
18 server = s
19 done()
20 })
21 })
22
23 describe('#findGroup()', function () {
24 [ 'cn', 'dn' ].forEach((groupAttribute) => {
25 const groupName = settings.groupName[groupAttribute]
26 it(`should return user for (${groupAttribute} ${groupName}`, function (done) {
27 ad.findGroup(settings.groupName[groupAttribute])
28 .then((group) => {
29 expect(group).to.not.be.null
30 done()
31 })
32 .catch(done)
33 })
34 })
35
36 it('should return undefined if the group doesn\'t exist', function (done) {
37 ad.findGroup('!!!NON-EXISTENT GROUP!!!')
38 .then((group) => {
39 expect(group).to.be.undefined
40 done()
41 })
42 .catch(done)
43 })
44
45 it('should return default group attributes when not specified', function (done) {
46 const defaultAttributes = ad.defaultAttributes.group
47 ad.findGroup(settings.groupName.dn)
48 .then((group) => {
49 expect(group).to.not.be.null
50
51 const attributes = Object.keys(group)
52 expect(attributes.length).to.be.lte(defaultAttributes.length)
53 expect(attributes).to.have.any.members(defaultAttributes)
54 done()
55 })
56 .catch(done)
57 })
58 })
59
60 describe('#findGroup(opts)', function () {
61 it('should use the custom opts.filter if provided', function (done) {
62 const opts = {
63 filter: settings.opts.custom
64 }
65 const groupName = settings.groupName.dn
66 ad.findGroup(opts, groupName)
67 .then((group) => {
68 expect(group.dn.toLowerCase()).to.not.equal(groupName.toLowerCase())
69 done()
70 })
71 .catch(done)
72 })
73
74 it('should include groups/membership if opts.includeMembership[] = [ \'all\' ]', function (done) {
75 const opts = {
76 includeMembership: [ 'all' ]
77 }
78 ad.findGroup(opts, settings.groupName.dn)
79 .then((group) => {
80 expect(group).to.not.be.null
81 const cns = group.groups.map((group) => {
82 return group.cn
83 })
84 expect(cns).to.deep.include.members(settings.groups)
85 done()
86 })
87 .catch(done)
88 })
89
90 it('should include groups/membership if opts.includeMembership[] = [ \'group\' ]', function (done) {
91 const opts = {
92 includeMembership: [ 'group' ]
93 }
94 ad.findGroup(opts, settings.groupName.dn)
95 .then((group) => {
96 expect(group).to.not.be.null
97 const cns = group.groups.map((group) => {
98 return group.cn
99 })
100 expect(cns).to.deep.include.members(settings.groups)
101 done()
102 })
103 .catch(done)
104 })
105
106 it('should return expected groups/membership if opts.includeMembership enabled', function (done) {
107 const opts = {
108 includeMembership: [ 'group', 'all' ]
109 }
110 ad.findGroup(opts, settings.groupName.dn)
111 .then((group) => {
112 expect(group).to.not.be.null
113 const cns = group.groups.map((group) => {
114 return group.cn
115 })
116 expect(cns).to.deep.include.members(settings.groups)
117 done()
118 })
119 .catch(done)
120 })
121
122 it('should return only the first group if more than one result returned', function (done) {
123 const opts = {
124 filter: settings.opts.multipleFilter
125 }
126 ad.findGroup(opts, '' /* ignored since we're setting our own filter */)
127 .then((group) => {
128 expect(group).to.not.be.null
129 expect(Array.isArray(group)).to.be.false
130 done()
131 })
132 .catch(done)
133 })
134
135 it('should return only requested attributes', function (done) {
136 const opts = {
137 attributes: [ 'createdTimestamp' ]
138 }
139 ad.findGroup(opts, settings.groupName.dn)
140 .then((group) => {
141 expect(group).to.not.be.null
142
143 const keys = Object.keys(group)
144 expect(keys.length).to.equal(opts.attributes.length)
145 if (keys.length === opts.attributes.length) {
146 expect(keys).to.have.any.members(opts.attributes)
147 }
148 done()
149 })
150 .catch(done)
151 })
152 })
153})