'use strict' const { test } = require('tap') const { BerReader, BerWriter } = require('asn1') const { Control, getControl } = require('../../lib') test('new no args', function (t) { t.ok(new Control()) t.end() }) 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() }) test('parse', function (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 c = getControl(new BerReader(ber.buffer)) t.ok(c) t.equal(c.type, '2.16.840.1.113730.3.4.2') t.ok(c.criticality) t.equal(c.value.toString('utf8'), 'foo') t.end() }) test('parse no value', function (t) { const ber = new BerWriter() ber.startSequence() ber.writeString('2.16.840.1.113730.3.4.2') ber.endSequence() const c = getControl(new BerReader(ber.buffer)) t.ok(c) t.equal(c.type, '2.16.840.1.113730.3.4.2') t.equal(c.criticality, false) t.notOk(c.value, null) t.end() })