UNPKG

2.9 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 getGroupMembershipForGroup Method', function () {
12 let ad
13 const settings = require('./settings').getGroupMembershipForGroup
14
15 before(function (done) {
16 server(function (s) {
17 ad = new ActiveDirectory(config)
18 server = s
19 done()
20 })
21 })
22
23 describe('#getGroupMembershipForGroup()', function () {
24 settings.groups.forEach((group) => {
25 ['dn', 'cn'].forEach((groupAttribute) => {
26 const len = group.members.length
27 const expectedGroup = group[groupAttribute]
28 it(`should return ${len} groups for (${groupAttribute}) ${expectedGroup}`, function (done) {
29 ad.getGroupMembershipForGroup(expectedGroup)
30 .then((groups) => {
31 expect(groups).to.not.be.undefined
32 expect(Array.isArray(groups)).to.be.true
33
34 const cns = groups.map((g) => g.cn)
35 expect(cns).to.deep.include.members(group.members)
36
37 done()
38 })
39 .catch(done)
40 })
41 })
42 })
43
44 it('should return empty groups if groupName doesn\'t exist', function (done) {
45 ad.getGroupMembershipForGroup('!!!NON-EXISTENT GROUP!!!')
46 .then((groups) => {
47 expect(groups).to.be.undefined
48 done()
49 })
50 .catch(done)
51 })
52
53 it('should return default group attributes when not specified', function (done) {
54 const defaultAttributes = ad.defaultAttributes.group
55 const group = settings.groups[0]
56 ad.getGroupMembershipForGroup(group.dn)
57 .then((groups) => {
58 expect(groups).to.not.be.undefined
59 expect(Array.isArray(groups)).to.be.true
60
61 groups.forEach((group) => {
62 const keys = Object.keys(group)
63 expect(keys.length).to.equal(defaultAttributes.length)
64 })
65
66 done()
67 })
68 .catch(done)
69 })
70 })
71
72 describe('#getGroupMembershipForGroup(opts)', function () {
73 it('should return only requested attributes', function (done) {
74 const opts = {
75 attributes: [ 'createTimeStamp' ]
76 }
77 const group = settings.groups[0]
78 ad.getGroupMembershipForGroup(opts, group.dn)
79 .then((groups) => {
80 expect(groups).to.not.be.undefined
81 expect(Array.isArray(groups)).to.be.true
82 expect(groups.length).to.be.gte(group.members.length)
83
84 groups.forEach((group) => {
85 const keys = Object.keys(group)
86 expect(keys.length).to.equal(opts.attributes.length)
87 expect(keys).to.deep.include.members(opts.attributes)
88 })
89
90 done()
91 })
92 .catch(done)
93 })
94 })
95})