UNPKG

2.87 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('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, function (err, groups) {
30 expect(err).to.be.null
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 })
40 })
41 })
42
43 it('should return empty groups if groupName doesn\'t exist', function (done) {
44 ad.getGroupMembershipForGroup('!!!NON-EXISTENT GROUP!!!', function (err, groups) {
45 expect(err).to.be.undefined
46 expect(groups).to.be.undefined
47 done()
48 })
49 })
50
51 it('should return default group attributes when not specified', function (done) {
52 const defaultAttributes = ActiveDirectory.defaultAttributes.group
53 const group = settings.groups[0]
54 ad.getGroupMembershipForGroup(group.dn, function (err, groups) {
55 expect(err).to.be.null
56 expect(groups).to.not.be.undefined
57 expect(Array.isArray(groups)).to.be.true
58
59 groups.forEach((group) => {
60 const keys = Object.keys(group)
61 expect(keys.length).to.equal(defaultAttributes.length)
62 })
63
64 done()
65 })
66 })
67 })
68
69 describe('#getGroupMembershipForGroup(opts)', function () {
70 it('should return only requested attributes', function (done) {
71 const opts = {
72 attributes: [ 'createTimeStamp' ]
73 }
74 const group = settings.groups[0]
75 ad.getGroupMembershipForGroup(opts, group.dn, function (err, groups) {
76 expect(err).to.be.null
77 expect(groups).to.not.be.undefined
78 expect(Array.isArray(groups)).to.be.true
79 expect(groups.length).to.be.gte(group.members.length)
80
81 groups.forEach((group) => {
82 const keys = Object.keys(group)
83 expect(keys.length).to.equal(opts.attributes.length)
84 expect(keys).to.deep.include.members(opts.attributes)
85 })
86
87 done()
88 })
89 })
90 })
91})