UNPKG

3.03 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 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])
29 .then((groups) => {
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 .catch((err) => {
42 console.log(err)
43 done()
44 })
45 })
46 })
47 })
48
49 it('should return empty groups if groupName doesn\'t exist', function (done) {
50 ad.getGroupMembershipForUser('!!!NON-EXISTENT GROUP!!!')
51 .then((groups) => {
52 expect(groups).to.be.an.instanceof(Array)
53 expect(groups.length).to.equal(0)
54 done()
55 })
56 .catch(done)
57 })
58
59 it('should return default group attributes when not specified', function (done) {
60 const defaultAttributes = [ 'objectCategory', 'distinguishedName', 'cn', 'description' ]
61 const user = settings.users[0]
62 ad.getGroupMembershipForUser(user.userPrincipalName)
63 .then((groups) => {
64 expect(groups).to.not.be.undefined
65
66 groups.forEach((g) => {
67 const keys = Object.keys(g)
68 defaultAttributes.forEach((attr) => {
69 expect(keys).to.contain(attr)
70 })
71 })
72
73 done()
74 })
75 .catch(done)
76 })
77 })
78
79 describe('#getGroupMembershipForUser(opts)', function () {
80 it('should return only requested attributes', function (done) {
81 const opts = {
82 attributes: [ 'createTimeStamp' ]
83 }
84 const user = settings.users[0]
85
86 ad.getGroupMembershipForUser(opts, user.userPrincipalName)
87 .then((groups) => {
88 expect(groups).to.not.be.undefined
89 expect(groups.length).to.gte(user.members.length)
90
91 groups.forEach((g) => {
92 const keys = Object.keys(g)
93 keys.forEach((attr) => {
94 expect(opts.attributes).to.contain(attr)
95 })
96 })
97
98 done()
99 })
100 .catch((err) => {
101 console.log(err)
102 done()
103 })
104 })
105 })
106})