issue-885.test.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. 'use strict'
  2. const tap = require('tap')
  3. const ldapjs = require('../../lib')
  4. const parseDN = ldapjs.parseDN
  5. const SCHEME = process.env.SCHEME || 'ldap'
  6. const HOST = process.env.HOST || '127.0.0.1'
  7. const PORT = process.env.PORT || 389
  8. const baseURL = `${SCHEME}://${HOST}:${PORT}`
  9. const client = ldapjs.createClient({ url: baseURL })
  10. const searchOpts = {
  11. filter: '(&(objectClass=person))',
  12. scope: 'sub',
  13. paged: true,
  14. sizeLimit: 0,
  15. attributes: ['cn', 'employeeID']
  16. }
  17. const baseDN = parseDN('ou=large_ou,dc=planetexpress,dc=com')
  18. tap.test('paged search option returns pages', t => {
  19. t.plan(4)
  20. client.bind('cn=admin,dc=planetexpress,dc=com', 'GoodNewsEveryone', (err) => {
  21. t.error(err, 'bind error')
  22. })
  23. client.search(baseDN.toString(), searchOpts, (err, res) => {
  24. t.error(err, 'search error')
  25. let pages = 0
  26. const results = []
  27. res.on('searchEntry', (entry) => {
  28. results.push(entry)
  29. })
  30. res.on('page', () => {
  31. pages += 1
  32. })
  33. res.on('error', (err) => {
  34. t.error(err, 'search entry error')
  35. })
  36. res.on('end', () => {
  37. t.equal(results.length, 2000)
  38. t.equal(pages, 20)
  39. client.unbind(t.end)
  40. })
  41. })
  42. })