/* Integration tests for the bchjs. Only covers calls made to rest.bitcoin.com. */ const chai = require('chai') const assert = chai.assert const BCHJS = require('../../src/bch-js') const bchjs = new BCHJS() // Inspect utility used for debugging. const util = require('util') util.inspect.defaultOptions = { showHidden: true, colors: true, depth: 3 } describe('#util', () => { beforeEach(async () => { if (process.env.IS_USING_FREE_TIER) await sleep(1000) }) describe('#validateAddress', () => { it('should return false for testnet addr on mainnet', async () => { const address = 'bchtest:qqqk4y6lsl5da64sg5qc3xezmplyu5kmpyz2ysaa5y' const result = await bchjs.Util.validateAddress(address) // console.log(`result: ${JSON.stringify(result, null, 2)}`) assert.hasAllKeys(result, ['isvalid']) assert.equal(result.isvalid, false) }) it('should return false for bad address', async () => { const address = 'bitcoincash:qp4k8fjtgunhdr7yq30ha4peu' const result = await bchjs.Util.validateAddress(address) // console.log(`result: ${JSON.stringify(result, null, 2)}`) assert.hasAllKeys(result, ['isvalid']) assert.equal(result.isvalid, false) }) it('should validate valid address', async () => { const address = 'bitcoincash:qp4k8fjtgunhdr7yq30ha4peuwupzan2vcnwrmpy0z' const result = await bchjs.Util.validateAddress(address) // console.log(`result: ${JSON.stringify(result, null, 2)}`) assert.hasAnyKeys(result, [ 'isvalid', 'address', 'scriptPubKey', // "ismine", // "iswatchonly", 'isscript' ]) assert.equal(result.isvalid, true) }) it('should validate an array of addresses', async () => { const address = [ 'bitcoincash:qp4k8fjtgunhdr7yq30ha4peuwupzan2vcnwrmpy0z', 'bitcoincash:qp4k8fjtgunhdr7yq30ha4peuwupzan2vcnwrmpy0z' ] const result = await bchjs.Util.validateAddress(address) // console.log(`result: ${JSON.stringify(result, null, 2)}`) assert.isArray(result) assert.hasAnyKeys(result[0], [ 'isvalid', 'address', 'scriptPubKey', // "ismine", // "iswatchonly", 'isscript' ]) }) it('should throw error on array size rate limit', async () => { try { const dataMock = 'bitcoincash:qp4k8fjtgunhdr7yq30ha4peuwupzan2vcnwrmpy0z' const data = [] for (let i = 0; i < 25; i++) data.push(dataMock) const result = await bchjs.Util.validateAddress(data) console.log(`result: ${util.inspect(result)}`) assert.equal(true, false, 'Unexpected result!') } catch (err) { assert.hasAnyKeys(err, ['error']) assert.include(err.error, 'Array too large') } }) }) }) function sleep (ms) { return new Promise(resolve => setTimeout(resolve, ms)) }