First commit
This commit is contained in:
161
node_modules/@ldapjs/controls/index.test.js
generated
vendored
Normal file
161
node_modules/@ldapjs/controls/index.test.js
generated
vendored
Normal file
@ -0,0 +1,161 @@
|
||||
'use strict'
|
||||
|
||||
const tap = require('tap')
|
||||
const { BerReader, BerWriter } = require('@ldapjs/asn1')
|
||||
const controls = require('.')
|
||||
|
||||
tap.test('#getControl', t => {
|
||||
t.test('requires a BER to parse', async t => {
|
||||
try {
|
||||
controls.getControl()
|
||||
t.fail('should throw exception')
|
||||
} catch (error) {
|
||||
t.match(error, /ber must be provided/)
|
||||
}
|
||||
})
|
||||
|
||||
t.test('returns null for empty BER', async t => {
|
||||
const result = controls.getControl(new BerReader(Buffer.alloc(0)))
|
||||
t.equal(result, null)
|
||||
})
|
||||
|
||||
t.test('parses a BER (control)', async t => {
|
||||
const ber = new BerWriter()
|
||||
ber.startSequence()
|
||||
ber.writeString('2.16.840.1.113730.3.4.2')
|
||||
ber.writeBoolean(true)
|
||||
ber.writeString('foo')
|
||||
ber.endSequence()
|
||||
|
||||
const control = controls.getControl(new BerReader(ber.buffer))
|
||||
|
||||
t.ok(control)
|
||||
t.equal(control.type, '2.16.840.1.113730.3.4.2')
|
||||
t.ok(control.criticality)
|
||||
t.equal(control.value.toString('utf8'), 'foo')
|
||||
t.end()
|
||||
})
|
||||
|
||||
t.test('parses BER with no value', function (t) {
|
||||
const ber = new BerWriter()
|
||||
ber.startSequence()
|
||||
ber.writeString('2.16.840.1.113730.3.4.2')
|
||||
ber.endSequence()
|
||||
|
||||
const control = controls.getControl(new BerReader(ber.buffer))
|
||||
|
||||
t.ok(control)
|
||||
t.equal(control.type, '2.16.840.1.113730.3.4.2')
|
||||
t.equal(control.criticality, false)
|
||||
t.notOk(control.value, null)
|
||||
t.end()
|
||||
})
|
||||
|
||||
t.test('returns a EntryChangeNotificationControl', async t => {
|
||||
const ecnc = new controls.EntryChangeNotificationControl({
|
||||
type: controls.EntryChangeNotificationControl.OID,
|
||||
criticality: true,
|
||||
value: {
|
||||
changeType: 8,
|
||||
previousDN: 'cn=foobarbazcar',
|
||||
changeNumber: 123456789
|
||||
}
|
||||
})
|
||||
|
||||
const ber = new BerWriter()
|
||||
ecnc.toBer(ber)
|
||||
|
||||
const c = controls.getControl(new BerReader(ber.buffer))
|
||||
t.ok(c)
|
||||
t.equal(c.type, controls.EntryChangeNotificationControl.OID)
|
||||
t.ok(c.criticality)
|
||||
t.equal(c.value.changeType, 8)
|
||||
t.equal(c.value.previousDN, 'cn=foobarbazcar')
|
||||
t.equal(c.value.changeNumber, 123456789)
|
||||
})
|
||||
|
||||
t.test('returns a PagedResultsControl', async t => {
|
||||
const prc = new controls.PagedResultsControl({
|
||||
type: controls.PagedResultsControl.OID,
|
||||
criticality: true,
|
||||
value: {
|
||||
size: 20,
|
||||
cookie: Buffer.alloc(0)
|
||||
}
|
||||
})
|
||||
|
||||
const ber = new BerWriter()
|
||||
prc.toBer(ber)
|
||||
|
||||
const c = controls.getControl(new BerReader(ber.buffer))
|
||||
t.ok(c)
|
||||
t.equal(c.type, controls.PagedResultsControl.OID)
|
||||
t.ok(c.criticality)
|
||||
t.equal(c.value.size, 20)
|
||||
t.equal(Buffer.compare(c.value.cookie, Buffer.alloc(0)), 0)
|
||||
})
|
||||
|
||||
t.test('returns a PasswordPolicyControl', async t => {
|
||||
const ppc = new controls.PasswordPolicyControl({
|
||||
type: controls.PasswordPolicyControl.OID,
|
||||
criticality: true,
|
||||
value: {
|
||||
error: 1,
|
||||
timeBeforeExpiration: 2
|
||||
}
|
||||
})
|
||||
|
||||
const ber = new BerWriter()
|
||||
ppc.toBer(ber)
|
||||
|
||||
const c = controls.getControl(new BerReader(ber.buffer))
|
||||
t.ok(c)
|
||||
t.equal(c.type, controls.PasswordPolicyControl.OID)
|
||||
t.ok(c.criticality)
|
||||
t.equal(c.value.error, 1)
|
||||
t.equal(c.value.timeBeforeExpiration, 2)
|
||||
})
|
||||
|
||||
t.test('returns a PersistentSearchControl', async t => {
|
||||
const buf = Buffer.from([
|
||||
0x30, 0x26, 0x04, 0x17, 0x32, 0x2e, 0x31, 0x36, 0x2e, 0x38, 0x34, 0x30,
|
||||
0x2e, 0x31, 0x2e, 0x31, 0x31, 0x33, 0x37, 0x33, 0x30, 0x2e, 0x33, 0x2e,
|
||||
0x34, 0x2e, 0x33, 0x04, 0x0b, 0x30, 0x09, 0x02, 0x01, 0x0f, 0x01, 0x01,
|
||||
0xff, 0x01, 0x01, 0xff])
|
||||
|
||||
const ber = new BerReader(buf)
|
||||
const psc = controls.getControl(ber)
|
||||
t.ok(psc)
|
||||
t.equal(psc.type, controls.PersistentSearchControl.OID)
|
||||
t.equal(psc.criticality, false)
|
||||
t.equal(psc.value.changeTypes, 15)
|
||||
t.equal(psc.value.changesOnly, true)
|
||||
t.equal(psc.value.returnECs, true)
|
||||
})
|
||||
|
||||
t.test('returns a ServerSideSortingRequestControl', async t => {
|
||||
const sssc = new controls.ServerSideSortingRequestControl()
|
||||
const ber = new BerWriter()
|
||||
sssc.toBer(ber)
|
||||
|
||||
const c = controls.getControl(new BerReader(ber.buffer))
|
||||
t.ok(c)
|
||||
t.equal(c.type, controls.ServerSideSortingRequestControl.OID)
|
||||
t.equal(c.value.length, 0)
|
||||
})
|
||||
|
||||
t.test('returns a ServerSideSortingResponseControl', async t => {
|
||||
const sssc = new controls.ServerSideSortingResponseControl()
|
||||
const ber = new BerWriter()
|
||||
sssc.toBer(ber)
|
||||
|
||||
const c = controls.getControl(new BerReader(ber.buffer))
|
||||
t.ok(c)
|
||||
t.equal(c.type, controls.ServerSideSortingResponseControl.OID)
|
||||
t.equal(c.criticality, false)
|
||||
t.notOk(c.value.result)
|
||||
t.notOk(c.value.failedAttribute)
|
||||
})
|
||||
|
||||
t.end()
|
||||
})
|
||||
Reference in New Issue
Block a user