UNPKG

@ldapjs/messages

Version:

API for creating and parsing LDAP messages

126 lines (102 loc) 2.98 kB
'use strict' const tap = require('tap') const { BerReader } = require('@ldapjs/asn1') const warning = require('../deprecations') const AbandonRequest = require('./abandon-request') // Silence the standard warning logs. We will test the messages explicitly. process.removeAllListeners('warning') const { abandonRequestBytes } = require('./_fixtures/message-byte-arrays') tap.test('basic', t => { t.test('constructor no args', async t => { const req = new AbandonRequest() t.strictSame(req.pojo, { messageId: 1, protocolOp: 0x50, type: 'AbandonRequest', abandonId: 0, controls: [] }) }) t.test('emits warning for abandonID', t => { process.on('warning', handler) t.teardown(async () => { process.removeListener('warning', handler) warning.emitted.set('LDAP_MESSAGE_DEP_003', false) }) const req = new AbandonRequest({ abandonID: 1 }) t.ok(req) function handler (error) { t.equal( error.message, 'abandonID is deprecated. Use abandonId instead.' ) t.end() } }) t.test('properties return correct values', t => { process.on('warning', handler) t.teardown(async () => { process.removeListener('warning', handler) warning.emitted.set('LDAP_MESSAGE_DEP_003', false) }) const req = new AbandonRequest({ abandonId: 1 }) t.equal(req.abandonId, 1) t.equal(req.abandonID, 1) function handler (error) { t.equal( error.message, 'abandonID is deprecated. Use abandonId instead.' ) t.end() } }) t.end() }) tap.test('toBer', t => { t.test('converts AbandonRequest to BER', async t => { const reqBuffer = Buffer.from(abandonRequestBytes) const reader = new BerReader(reqBuffer) const message = AbandonRequest.parse(reader) const ber = message.toBer() t.equal('[object BerReader]', Object.prototype.toString.call(ber)) t.equal(reqBuffer.compare(ber.buffer), 0) }) t.end() }) tap.test('_pojo', t => { t.test('returns implementation properties', async t => { const message = new AbandonRequest() const pojo = message._pojo() t.strictSame(pojo, { abandonId: 0 }) }) t.end() }) tap.test('#parseToPojo', t => { t.test('throws if operation incorrect', async t => { const reqBuffer = Buffer.from(abandonRequestBytes) reqBuffer[5] = 0x61 const reader = new BerReader(reqBuffer) reader.readSequence() reader.readInt() t.throws( () => AbandonRequest.parseToPojo(reader), Error('found wrong protocol operation: 0x61') ) }) t.test('returns a pojo representation', async t => { const reqBuffer = Buffer.from(abandonRequestBytes) const reader = new BerReader(reqBuffer) reader.readSequence() reader.readInt() const pojo = AbandonRequest.parseToPojo(reader) t.strictSame(pojo, { protocolOp: 0x50, abandonId: 5 }) }) t.end() })