UNPKG

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