First commit
This commit is contained in:
159
node_modules/@ldapjs/controls/lib/control.test.js
generated
vendored
Normal file
159
node_modules/@ldapjs/controls/lib/control.test.js
generated
vendored
Normal file
@ -0,0 +1,159 @@
|
||||
'use strict'
|
||||
|
||||
const tap = require('tap')
|
||||
const { BerWriter } = require('@ldapjs/asn1')
|
||||
const Control = require('./control')
|
||||
|
||||
tap.test('constructor', t => {
|
||||
t.test('new no args', function (t) {
|
||||
t.ok(new Control())
|
||||
t.equal(Object.prototype.toString.call(new Control()), '[object LdapControl]')
|
||||
t.end()
|
||||
})
|
||||
|
||||
t.test('new with args', function (t) {
|
||||
const c = new Control({
|
||||
type: '2.16.840.1.113730.3.4.2',
|
||||
criticality: true
|
||||
})
|
||||
t.ok(c)
|
||||
t.equal(c.type, '2.16.840.1.113730.3.4.2')
|
||||
t.ok(c.criticality)
|
||||
t.end()
|
||||
})
|
||||
|
||||
t.end()
|
||||
})
|
||||
|
||||
tap.test('pojo', t => {
|
||||
t.test('passes through _pojo', async t => {
|
||||
class Foo extends Control {
|
||||
_pojo (obj) {
|
||||
obj.foo = 'foo'
|
||||
}
|
||||
}
|
||||
const control = new Foo()
|
||||
t.strictSame(control.pojo, {
|
||||
type: '',
|
||||
value: null,
|
||||
criticality: false,
|
||||
foo: 'foo'
|
||||
})
|
||||
})
|
||||
|
||||
t.test('returns basic object', async t => {
|
||||
const control = new Control({ type: '1.2.3', criticality: false, value: 'foo' })
|
||||
t.strictSame(control.pojo, {
|
||||
type: '1.2.3',
|
||||
value: 'foo',
|
||||
criticality: false
|
||||
})
|
||||
})
|
||||
|
||||
t.end()
|
||||
})
|
||||
|
||||
tap.test('toBer', t => {
|
||||
t.test('converts empty instance to BER', async t => {
|
||||
const target = new BerWriter()
|
||||
target.startSequence()
|
||||
target.writeString('')
|
||||
target.writeBoolean(false)
|
||||
target.endSequence()
|
||||
|
||||
const control = new Control()
|
||||
const ber = control.toBer()
|
||||
|
||||
t.equal(Buffer.compare(ber.buffer, target.buffer), 0)
|
||||
})
|
||||
|
||||
t.test('converts instance to BER', async t => {
|
||||
const target = new BerWriter()
|
||||
target.startSequence()
|
||||
target.writeString('2.16.840.1.113730.3.4.2')
|
||||
target.writeBoolean(true)
|
||||
target.writeString('foo')
|
||||
target.endSequence()
|
||||
|
||||
const control = new Control({
|
||||
type: '2.16.840.1.113730.3.4.2',
|
||||
criticality: true,
|
||||
value: Buffer.from('foo', 'utf8')
|
||||
})
|
||||
const ber = control.toBer()
|
||||
|
||||
t.equal(Buffer.compare(ber.buffer, target.buffer), 0)
|
||||
})
|
||||
|
||||
t.test('converts instance to BER (side effect manner)', async t => {
|
||||
const target = new BerWriter()
|
||||
target.startSequence()
|
||||
target.writeString('2.16.840.1.113730.3.4.2')
|
||||
target.writeBoolean(true)
|
||||
target.writeString('foo')
|
||||
target.endSequence()
|
||||
|
||||
const control = new Control({
|
||||
type: '2.16.840.1.113730.3.4.2',
|
||||
criticality: true,
|
||||
value: Buffer.from('foo', 'utf8')
|
||||
})
|
||||
const ber = new BerWriter()
|
||||
control.toBer(ber)
|
||||
|
||||
t.equal(Buffer.compare(ber.buffer, target.buffer), 0)
|
||||
})
|
||||
|
||||
t.test('converts instance to BER with string value', async t => {
|
||||
const target = new BerWriter()
|
||||
target.startSequence()
|
||||
target.writeString('2.16.840.1.113730.3.4.2')
|
||||
target.writeBoolean(true)
|
||||
target.writeString('foo')
|
||||
target.endSequence()
|
||||
|
||||
const control = new Control({
|
||||
type: '2.16.840.1.113730.3.4.2',
|
||||
criticality: true,
|
||||
value: 'foo'
|
||||
})
|
||||
const ber = control.toBer()
|
||||
|
||||
t.equal(Buffer.compare(ber.buffer, target.buffer), 0)
|
||||
})
|
||||
|
||||
t.test('ignores unrecognized value', async t => {
|
||||
const target = new BerWriter()
|
||||
target.startSequence()
|
||||
target.writeString('2.16.840.1.113730.3.4.2')
|
||||
target.writeBoolean(true)
|
||||
target.writeBoolean(false)
|
||||
target.endSequence()
|
||||
|
||||
const control = new Control({
|
||||
type: '2.16.840.1.113730.3.4.2',
|
||||
criticality: true,
|
||||
value: false
|
||||
})
|
||||
const ber = control.toBer()
|
||||
|
||||
t.not(Buffer.compare(ber.buffer, target.buffer), 0)
|
||||
})
|
||||
|
||||
t.test('passes through _toBer', async t => {
|
||||
t.plan(2)
|
||||
const target = new BerWriter()
|
||||
target.startSequence()
|
||||
target.writeString('')
|
||||
target.writeBoolean(false)
|
||||
target.endSequence()
|
||||
|
||||
const control = new Control()
|
||||
control._toBer = (ber) => t.ok(ber)
|
||||
const ber = control.toBer()
|
||||
|
||||
t.equal(Buffer.compare(ber.buffer, target.buffer), 0)
|
||||
})
|
||||
|
||||
t.end()
|
||||
})
|
||||
Reference in New Issue
Block a user