92 lines
2.7 KiB
JavaScript
92 lines
2.7 KiB
JavaScript
'use strict'
|
|
|
|
const tap = require('tap')
|
|
const ldapjs = require('../../lib')
|
|
|
|
const SCHEME = process.env.SCHEME || 'ldap'
|
|
const HOST = process.env.HOST || '127.0.0.1'
|
|
const PORT = process.env.PORT || 389
|
|
|
|
const baseURL = `${SCHEME}://${HOST}:${PORT}`
|
|
|
|
tap.test('modifyDN with long name (issue #480)', t => {
|
|
const longStr = 'a292979f2c86d513d48bbb9786b564b3c5228146e5ba46f404724e322544a7304a2b1049168803a5485e2d57a544c6a0d860af91330acb77e5907a9e601ad1227e80e0dc50abe963b47a004f2c90f570450d0e920d15436fdc771e3bdac0487a9735473ed3a79361d1778d7e53a7fb0e5f01f97a75ef05837d1d5496fc86968ff47fcb64'
|
|
const targetDN = 'cn=Turanga Leela,ou=people,dc=planetexpress,dc=com'
|
|
const client = ldapjs.createClient({ url: baseURL })
|
|
client.bind('cn=admin,dc=planetexpress,dc=com', 'GoodNewsEveryone', bindHandler)
|
|
|
|
function bindHandler (err) {
|
|
t.error(err)
|
|
client.modifyDN(
|
|
targetDN,
|
|
`cn=${longStr},ou=people,dc=planetexpress,dc=com`,
|
|
modifyHandler
|
|
)
|
|
}
|
|
|
|
function modifyHandler (err, res) {
|
|
t.error(err)
|
|
t.ok(res)
|
|
t.equal(res.status, 0)
|
|
|
|
client.modifyDN(
|
|
`cn=${longStr},ou=people,dc=planetexpress,dc=com`,
|
|
targetDN,
|
|
(err, res) => {
|
|
t.error(err)
|
|
client.unbind(t.end)
|
|
}
|
|
)
|
|
}
|
|
})
|
|
|
|
tap.test('whois works correctly (issue #370)', t => {
|
|
const client = ldapjs.createClient({ url: baseURL })
|
|
client.bind('cn=Philip J. Fry,ou=people,dc=planetexpress,dc=com', 'fry', (err) => {
|
|
t.error(err)
|
|
|
|
client.exop('1.3.6.1.4.1.4203.1.11.3', (err, value, res) => {
|
|
t.error(err)
|
|
t.ok(value)
|
|
t.is(value, 'dn:cn=Philip J. Fry,ou=people,dc=planetexpress,dc=com')
|
|
t.ok(res)
|
|
t.is(res.status, 0)
|
|
|
|
client.unbind(t.end)
|
|
})
|
|
})
|
|
})
|
|
|
|
tap.test('can access large groups (issue #582)', t => {
|
|
const client = ldapjs.createClient({ url: baseURL })
|
|
client.bind('cn=admin,dc=planetexpress,dc=com ', 'GoodNewsEveryone', (err) => {
|
|
t.error(err)
|
|
const searchOpts = {
|
|
scope: 'sub',
|
|
filter: '(&(objectClass=group)(cn=large_group))'
|
|
}
|
|
client.search('ou=large_ou,dc=planetexpress,dc=com', searchOpts, (err, response) => {
|
|
t.error(err)
|
|
|
|
const results = []
|
|
response.on('searchEntry', (entry) => {
|
|
results.push(entry)
|
|
})
|
|
response.on('error', t.error)
|
|
response.on('end', (result) => {
|
|
t.is(result.status, 0)
|
|
t.is(results.length === 1, true)
|
|
t.ok(results[0].attributes)
|
|
|
|
const memberAttr = results[0].attributes.find(a => a.type === 'member')
|
|
t.ok(memberAttr)
|
|
t.ok(memberAttr.vals)
|
|
t.type(memberAttr.vals, Array)
|
|
t.is(memberAttr.vals.length, 2000)
|
|
|
|
client.unbind(t.end)
|
|
})
|
|
})
|
|
})
|
|
})
|