zcash-primitives-js/test/incremental_witness.js

72 lines
3.3 KiB
JavaScript

/* global describe, it */
var assert = require('assert')
var ZCIncrementalWitness = require('../src/incremental_witness')
var INCREMENTAL_MERKLE_TREE_DEPTH_TESTING = 4
describe('ZCIncrementalWitness', function () {
describe('fromBuffer/toBuffer', function () {
it('is unchanged by import and export', function () {
// From merkle_witness_serialization.json
var hex = '01be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a091200030001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e900'
var witness = ZCIncrementalWitness.fromBuffer(Buffer.from(hex, 'hex'), false, INCREMENTAL_MERKLE_TREE_DEPTH_TESTING)
assert.strictEqual(witness.toBuffer().toString('hex'), hex)
})
})
describe('fromBuffer', function () {
describe('invalid optional', function () {
// From merkle_witness_serialization.json
var data = Buffer.from('0000000162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba02', 'hex')
it('throws', function () {
assert.throws(function () {
ZCIncrementalWitness.fromBuffer(data, false, INCREMENTAL_MERKLE_TREE_DEPTH_TESTING)
}, new RegExp('Invalid optional'))
})
it('throws with __noStrict = true', function () {
assert.throws(function () {
ZCIncrementalWitness.fromBuffer(data, true, INCREMENTAL_MERKLE_TREE_DEPTH_TESTING)
}, new RegExp('Invalid optional'))
})
})
describe('insufficient data', function () {
// From merkle_witness_serialization.json
var data = Buffer.from('01be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a091200030001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e9', 'hex')
it('throws', function () {
assert.throws(function () {
ZCIncrementalWitness.fromBuffer(data, false, INCREMENTAL_MERKLE_TREE_DEPTH_TESTING)
}, new RegExp('Index out of range'))
})
it('throws with __noStrict = true', function () {
assert.throws(function () {
ZCIncrementalWitness.fromBuffer(data, true, INCREMENTAL_MERKLE_TREE_DEPTH_TESTING)
}, new RegExp('Index out of range'))
})
})
describe('excess data', function () {
// From merkle_witness_serialization.json
var data = Buffer.from('01be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a091200030001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e900ff', 'hex')
it('throws', function () {
assert.throws(function () {
ZCIncrementalWitness.fromBuffer(data, false, INCREMENTAL_MERKLE_TREE_DEPTH_TESTING)
}, new RegExp('ZCIncrementalWitness has unexpected data'))
})
it('passes with __noStrict = true', function () {
assert.doesNotThrow(function () {
ZCIncrementalWitness.fromBuffer(data, true, INCREMENTAL_MERKLE_TREE_DEPTH_TESTING)
}, new RegExp('ZCIncrementalWitness has unexpected data'))
})
})
})
})