UNPKG

paid-services

Version:
97 lines (90 loc) 2.42 kB
const {encodeBigSize} = require('bolt01'); const {encodeTlvStream} = require('bolt01'); const {test} = require('@alexbosworth/tap'); const method = require('./../../client/decode_schema_fields'); const encode = records => encodeTlvStream({records}).encoded; const tests = [ { args: {}, description: 'Encoded fields are expected', error: 'ExpectedTlvStreamEncodedFieldMetadataToDecodeFields', }, { args: { encoded: encode([{ type: '0', value: encode([{type: '1', value: '01'}]), }]), }, description: 'A description is expected', error: 'ExpectedFieldDescriptionInSchemaFields', }, { args: { encoded: encode([{ type: '0', value: encode([ { type: '0', value: Buffer.from('description').toString('hex'), }, { type: '1', value: 'fd00fc', } ]), }]), }, description: 'A valid byte limit is expected', error: 'ExpectedValidBigSizeEncodedNumberForSchemaByteLimit', }, { args: { encoded: encode([{ type: '0', value: encode([ { type: '0', value: Buffer.from('description').toString('hex'), }, ]), }]), }, description: 'Fields are returned for a description and a limit', expected: { fields: [{ data: undefined, description: 'description', limit: 9007199254740991, type: '0', }], }, }, { args: { encoded: '0022001b4d65737361676520746f2064656c6976657220746f20696e626f780103fd0118012b00265265706c7920656d61696c2061646472657373206f72206e6f6465207075626c6963206b6579010190', }, description: 'Fields are returned', expected: { fields: [ { data: undefined, description: 'Message to deliver to inbox', limit: 280, type: '0', }, { data: undefined, description: 'Reply email address or node public key', limit: 144, type: '1', }, ], }, }, ]; tests.forEach(({args, description, error, expected}) => { return test(description, async ({end, strictSame, throws}) => { if (!!error) { throws(() => method(args), new Error(error), 'Got error'); } else { const res = method(args); strictSame(res, expected, 'Got expected result'); } return end(); }); });