UNPKG

@ldapjs/messages

Version:

API for creating and parsing LDAP messages

116 lines (97 loc) 2.64 kB
'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() })