diff --git a/src/psf-slp-indexer.js b/src/psf-slp-indexer.js index ac89dbc..872d99b 100644 --- a/src/psf-slp-indexer.js +++ b/src/psf-slp-indexer.js @@ -132,7 +132,8 @@ class PsfSlpIndexer { */ async balance (address) { try { - console.log('balance() address: ', address) + // console.log('balance() address: ', address) + // Handle single address. if (typeof address === 'string') { const response = await axios.post( diff --git a/src/utxo.js b/src/utxo.js index 8d1332d..500cc29 100644 --- a/src/utxo.js +++ b/src/utxo.js @@ -311,10 +311,6 @@ class UTXO { * - groupTokens: [] - NFT Group tokens, used to create NFT tokens. * - groupMintBatons: [] - Minting baton to create more NFT Group tokens. * - * Note: You can pass in an optional second Boolean argument. The default - * `false` will use the normal waterfall validation method. Set to `true`, - * SLP UTXOs will be validated with the whitelist filtered SLPDB. This will - * result is many more UTXOs in the `nullUtxos` array. * * @apiExample Example usage: * (async () => { diff --git a/test/integration/chains/bchn/utxo-integration.js b/test/integration/chains/bchn/utxo-integration.js index 65e9e32..f1dc876 100644 --- a/test/integration/chains/bchn/utxo-integration.js +++ b/test/integration/chains/bchn/utxo-integration.js @@ -13,84 +13,113 @@ describe('#UTXO', () => { if (process.env.IS_USING_FREE_TIER) await sleep(3000) }) - /* - describe('#get', () => { - it('should get hydrated and filtered UTXOs for an address', async () => { - // const addr = 'bitcoincash:qqh793x9au6ehvh7r2zflzguanlme760wuzehgzjh9' - const addr = 'simpleledger:qzv3zz2trz0xgp6a96lu4m6vp2nkwag0kvyucjzqt9' - const result = await bchjs.Utxo.get(addr) - // console.log(`result: ${JSON.stringify(result, null, 2)}`) + if (process.env.TESTSLP) { + describe('#getOld', () => { + it('should get hydrated and filtered UTXOs for an address', async () => { + // const addr = 'bitcoincash:qqh793x9au6ehvh7r2zflzguanlme760wuzehgzjh9' + const addr = 'simpleledger:qzv3zz2trz0xgp6a96lu4m6vp2nkwag0kvyucjzqt9' - assert.isArray(result) - assert.property(result[0], 'address') - assert.property(result[0], 'bchUtxos') - assert.property(result[0], 'nullUtxos') - assert.property(result[0], 'slpUtxos') - assert.isArray(result[0].bchUtxos) - assert.isArray(result[0].nullUtxos) + const result = await bchjs.Utxo.getOld(addr) + // console.log(`result: ${JSON.stringify(result, null, 2)}`) + + assert.isArray(result) + assert.property(result[0], 'address') + assert.property(result[0], 'bchUtxos') + assert.property(result[0], 'nullUtxos') + assert.property(result[0], 'slpUtxos') + assert.isArray(result[0].bchUtxos) + assert.isArray(result[0].nullUtxos) + }) + + it('should handle an array of addresses', async () => { + const addr = [ + 'simpleledger:qzv3zz2trz0xgp6a96lu4m6vp2nkwag0kvyucjzqt9', + 'bitcoincash:qqh793x9au6ehvh7r2zflzguanlme760wuzehgzjh9' + ] + + const result = await bchjs.Utxo.getOld(addr) + // console.log(`result: ${JSON.stringify(result, null, 2)}`) + + assert.isArray(result) + assert.property(result[0], 'address') + assert.property(result[0], 'bchUtxos') + assert.property(result[0], 'nullUtxos') + assert.property(result[0], 'slpUtxos') + assert.isArray(result[0].bchUtxos) + assert.isArray(result[0].nullUtxos) + }) + + it('should handle NFTs and minting batons', async () => { + const addr = 'simpleledger:qrm0c67wwqh0w7wjxua2gdt2xggnm90xwsr5k22euj' + + const result = await bchjs.Utxo.getOld(addr) + // console.log(`result: ${JSON.stringify(result, null, 2)}`) + + assert.isArray(result) + assert.property(result[0], 'address') + assert.property(result[0], 'bchUtxos') + assert.property(result[0], 'nullUtxos') + assert.property(result[0], 'slpUtxos') + assert.isArray(result[0].bchUtxos) + assert.isArray(result[0].nullUtxos) + + assert.isArray(result[0].slpUtxos.type1.mintBatons) + assert.isArray(result[0].slpUtxos.type1.tokens) + assert.isArray(result[0].slpUtxos.nft.groupMintBatons) + assert.isArray(result[0].slpUtxos.nft.groupTokens) + assert.isArray(result[0].slpUtxos.nft.tokens) + }) + + it('should use the whitelist when flag is set', async () => { + const addr = 'simpleledger:qzv3zz2trz0xgp6a96lu4m6vp2nkwag0kvyucjzqt9' + const useWhitelist = true + + const result = await bchjs.Utxo.getOld(addr, useWhitelist) + // console.log(`result: ${JSON.stringify(result, null, 2)}`) + + assert.isArray(result) + assert.property(result[0], 'address') + assert.property(result[0], 'bchUtxos') + assert.property(result[0], 'nullUtxos') + assert.property(result[0], 'slpUtxos') + assert.isArray(result[0].bchUtxos) + assert.isArray(result[0].nullUtxos) + + // Most token UTXOs should end up in the nullUtxos array. + assert.isAbove(result[0].bchUtxos.length, 0) + assert.isAbove(result[0].nullUtxos.length, 1) + }) }) - it('should handle an array of addresses', async () => { - const addr = [ - 'simpleledger:qzv3zz2trz0xgp6a96lu4m6vp2nkwag0kvyucjzqt9', - 'bitcoincash:qqh793x9au6ehvh7r2zflzguanlme760wuzehgzjh9' - ] + describe('#findBiggestUtxo', () => { + it('should sort UTXOs from Electrumx', async () => { + const addr = 'bitcoincash:qq54fgjn3hz0357n8a6guy4demw9xfkjk5jcj0xr0z' - const result = await bchjs.Utxo.get(addr) - // console.log(`result: ${JSON.stringify(result, null, 2)}`) + const electrumxUtxos = await bchjs.Electrumx.utxo(addr) + // console.log(`Electrumx utxos: ${JSON.stringify(electrumxUtxos, null, 2)}`) - assert.isArray(result) - assert.property(result[0], 'address') - assert.property(result[0], 'bchUtxos') - assert.property(result[0], 'nullUtxos') - assert.property(result[0], 'slpUtxos') - assert.isArray(result[0].bchUtxos) - assert.isArray(result[0].nullUtxos) + const result = bchjs.Utxo.findBiggestUtxo(electrumxUtxos.utxos) + // console.log(`result: ${JSON.stringify(result, null, 2)}`) + + assert.property(result, 'satoshis') + assert.equal(result.satoshis, 800) + }) + + it('should sort UTXOs from Utxos.get()', async () => { + const addr = 'bitcoincash:qq54fgjn3hz0357n8a6guy4demw9xfkjk5jcj0xr0z' + + const utxos = await bchjs.Utxo.getOld(addr) + // console.log(`utxos: ${JSON.stringify(utxos, null, 2)}`) + + const result = bchjs.Utxo.findBiggestUtxo(utxos[0].bchUtxos) + // console.log(`result: ${JSON.stringify(result, null, 2)}`) + + assert.property(result, 'satoshis') + assert.equal(result.satoshis, 800) + }) }) - - it('should handle NFTs and minting batons', async () => { - const addr = 'simpleledger:qrm0c67wwqh0w7wjxua2gdt2xggnm90xwsr5k22euj' - - const result = await bchjs.Utxo.get(addr) - // console.log(`result: ${JSON.stringify(result, null, 2)}`) - - assert.isArray(result) - assert.property(result[0], 'address') - assert.property(result[0], 'bchUtxos') - assert.property(result[0], 'nullUtxos') - assert.property(result[0], 'slpUtxos') - assert.isArray(result[0].bchUtxos) - assert.isArray(result[0].nullUtxos) - - assert.isArray(result[0].slpUtxos.type1.mintBatons) - assert.isArray(result[0].slpUtxos.type1.tokens) - assert.isArray(result[0].slpUtxos.nft.groupMintBatons) - assert.isArray(result[0].slpUtxos.nft.groupTokens) - assert.isArray(result[0].slpUtxos.nft.tokens) - }) - - it('should use the whitelist when flag is set', async () => { - const addr = 'simpleledger:qzv3zz2trz0xgp6a96lu4m6vp2nkwag0kvyucjzqt9' - const useWhitelist = true - - const result = await bchjs.Utxo.get(addr, useWhitelist) - // console.log(`result: ${JSON.stringify(result, null, 2)}`) - - assert.isArray(result) - assert.property(result[0], 'address') - assert.property(result[0], 'bchUtxos') - assert.property(result[0], 'nullUtxos') - assert.property(result[0], 'slpUtxos') - assert.isArray(result[0].bchUtxos) - assert.isArray(result[0].nullUtxos) - - // Most token UTXOs should end up in the nullUtxos array. - assert.isAbove(result[0].bchUtxos.length, 0) - assert.isAbove(result[0].nullUtxos.length, 1) - }) - }) -*/ + } describe('#hydrateTokenData', () => { it('should hydrate token UTXOs', async () => { @@ -138,7 +167,13 @@ describe('#UTXO', () => { ] const result = await bchjs.Utxo.hydrateTokenData(utxos) - console.log('result: ', result) + // console.log('result: ', result) + + assert.property(result[0], 'ticker') + assert.property(result[0], 'name') + assert.property(result[0], 'qtyStr') + assert.property(result[0], 'documentUri') + assert.property(result[0], 'documentHash') }) }) @@ -168,42 +203,12 @@ describe('#UTXO', () => { const addr = 'simpleledger:qrm0c67wwqh0w7wjxua2gdt2xggnm90xwsr5k22euj' const result = await bchjs.Utxo.get(addr) - console.log(`result: ${JSON.stringify(result, null, 2)}`) + // console.log(`result: ${JSON.stringify(result, null, 2)}`) // Assert that minting batons are correctly identified. assert.isAbove(result.slpUtxos.type1.mintBatons.length, 0) }) }) - - /* - describe('#findBiggestUtxo', () => { - it('should sort UTXOs from Electrumx', async () => { - const addr = 'bitcoincash:qq54fgjn3hz0357n8a6guy4demw9xfkjk5jcj0xr0z' - - const electrumxUtxos = await bchjs.Electrumx.utxo(addr) - // console.log(`Electrumx utxos: ${JSON.stringify(electrumxUtxos, null, 2)}`) - - const result = bchjs.Utxo.findBiggestUtxo(electrumxUtxos.utxos) - // console.log(`result: ${JSON.stringify(result, null, 2)}`) - - assert.property(result, 'satoshis') - assert.equal(result.satoshis, 800) - }) - - it('should sort UTXOs from Utxos.get()', async () => { - const addr = 'bitcoincash:qq54fgjn3hz0357n8a6guy4demw9xfkjk5jcj0xr0z' - - const utxos = await bchjs.Utxo.get(addr) - // console.log(`utxos: ${JSON.stringify(utxos, null, 2)}`) - - const result = bchjs.Utxo.findBiggestUtxo(utxos[0].bchUtxos) - // console.log(`result: ${JSON.stringify(result, null, 2)}`) - - assert.property(result, 'satoshis') - assert.equal(result.satoshis, 800) - }) - }) -*/ }) function sleep (ms) {