issue-883.test.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. 'use strict'
  2. const tap = require('tap')
  3. const ldapjs = require('../../lib')
  4. const SCHEME = process.env.SCHEME || 'ldap'
  5. const HOST = process.env.HOST || '127.0.0.1'
  6. const PORT = process.env.PORT || 389
  7. const baseURL = `${SCHEME}://${HOST}:${PORT}`
  8. const client = ldapjs.createClient({ url: baseURL })
  9. tap.test('adds entries with Korean characters', t => {
  10. t.plan(4)
  11. client.bind('cn=admin,dc=planetexpress,dc=com', 'GoodNewsEveryone', (err) => {
  12. t.error(err, 'bind error')
  13. })
  14. const nm = '홍길동'
  15. const dn = `cn=${nm},ou=people,dc=planetexpress,dc=com`
  16. const entry = {
  17. objectclass: 'person',
  18. sn: 'korean test'
  19. }
  20. client.add(dn, entry, err => {
  21. t.error(err, 'add entry error')
  22. const searchOpts = {
  23. filter: '(sn=korean test)',
  24. scope: 'subtree',
  25. attributes: ['cn', 'sn'],
  26. sizeLimit: 10,
  27. timeLimit: 0
  28. }
  29. client.search('ou=people,dc=planetexpress,dc=com', searchOpts, (err, res) => {
  30. t.error(err, 'search error')
  31. res.on('searchEntry', (entry) => {
  32. t.equal(
  33. entry.attributes.filter(a => a.type === 'cn').pop().values.pop(),
  34. nm
  35. )
  36. })
  37. res.on('error', (err) => {
  38. t.error(err, 'search entry error')
  39. })
  40. res.on('end', () => {
  41. client.unbind(t.end)
  42. })
  43. })
  44. })
  45. })