@ldapjs/messages
Version:
API for creating and parsing LDAP messages
116 lines (97 loc) • 2.64 kB
JavaScript
'use strict'
const tap = require('tap')
const { BerReader, BerWriter } = require('@ldapjs/asn1')
const { DN } = require('@ldapjs/dn')
const DeleteRequest = require('./delete-request')
tap.test('constructor', t => {
t.test('no args', async t => {
const req = new DeleteRequest()
t.strictSame(req.pojo, {
messageId: 1,
type: 'DeleteRequest',
protocolOp: 0x4a,
entry: null,
controls: []
})
})
t.test('with options', async t => {
const req = new DeleteRequest({
messageId: 5,
entry: 'dc=example,dc=com'
})
t.strictSame(req.pojo, {
messageId: 5,
type: 'DeleteRequest',
protocolOp: 0x4a,
entry: 'dc=example,dc=com',
controls: []
})
t.equal(req._dn.toString(), 'dc=example,dc=com')
t.equal(req.entry.toString(), 'dc=example,dc=com')
t.equal(req.type, 'DeleteRequest')
})
t.end()
})
tap.test('.entry', t => {
t.test('sets/gets', async t => {
const req = new DeleteRequest()
t.equal(req.entry, null)
t.equal(req._dn, null)
req.entry = 'cn=foo'
t.equal(req.entry.toString(), 'cn=foo')
t.equal(req._dn.toString(), 'cn=foo')
req.entry = DN.fromString('sn=bar')
t.equal(req.entry.toString(), 'sn=bar')
})
t.test('throws for bad value', async t => {
const req = new DeleteRequest()
t.throws(
() => {
req.entry = { cn: 'foo' }
},
'entry must be a valid DN string or instance of LdapDn'
)
})
t.end()
})
tap.test('_toBer', t => {
t.test('writes a correct sequence', async t => {
const req = new DeleteRequest({ entry: 'cn=foo' })
const ber = new BerWriter()
req._toBer(ber)
const expected = Buffer.from([
0x4a, 0x06, 0x63, 0x6e,
0x3d, 0x66, 0x6f, 0x6f
])
t.equal(expected.compare(ber.buffer), 0)
})
t.end()
})
tap.test('_pojo', t => {
t.test('returns implementation properties', async t => {
const req = new DeleteRequest({ entry: 'cn=foo' })
t.strictSame(req._pojo(), {
protocolOp: 0x4a,
entry: 'cn=foo'
})
})
t.end()
})
tap.test('#parseToPojo', t => {
t.test('throws if tag is wrong', async t => {
const input = Buffer.from([0x4b, 0x03, 0x66, 0x6f, 0x6f])
t.throws(
() => DeleteRequest.parseToPojo(new BerReader(input)),
Error('found wrong protocol operation: 0x4b')
)
})
t.test('returns a pojo', async t => {
const input = Buffer.from([0x4a, 0x03, 0x66, 0x6f, 0x6f])
const pojo = DeleteRequest.parseToPojo(new BerReader(input))
t.strictSame(pojo, {
protocolOp: 0x4a,
entry: 'foo'
})
})
t.end()
})