UNPKG

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