From 713f038583725bb97dfada9a750af9194b5cb094 Mon Sep 17 00:00:00 2001 From: Wei Lu Date: Sat, 30 May 2015 19:17:42 +0800 Subject: [PATCH] poll address unspent until non-empty or timeout --- test/integration/advanced.js | 3 ++- test/integration/multisig.js | 3 ++- test/integration/utils.js | 20 ++++++++++++++++++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/test/integration/advanced.js b/test/integration/advanced.js index 65e9a5b..81998c4 100644 --- a/test/integration/advanced.js +++ b/test/integration/advanced.js @@ -4,6 +4,7 @@ var assert = require('assert') var bitcoin = require('../../') var blockchain = new (require('cb-insight'))('https://test-insight.bitpay.com') var faucetWithdraw = require('./utils').faucetWithdraw +var pollUnspent = require('./utils').pollUnspent describe('bitcoinjs-lib (advanced)', function () { it('can sign a Bitcoin message', function () { @@ -33,7 +34,7 @@ describe('bitcoinjs-lib (advanced)', function () { faucetWithdraw(address, 2e4, function (err) { if (err) return done(err) - blockchain.addresses.unspents(address, function (err, unspents) { + pollUnspent(blockchain, address, function (err, unspents) { if (err) return done(err) var tx = new bitcoin.TransactionBuilder() diff --git a/test/integration/multisig.js b/test/integration/multisig.js index 414d3af..5a9d88a 100644 --- a/test/integration/multisig.js +++ b/test/integration/multisig.js @@ -4,6 +4,7 @@ var assert = require('assert') var bitcoin = require('../../') var blockchain = new (require('cb-insight'))('https://test-insight.bitpay.com') var faucetWithdraw = require('./utils').faucetWithdraw +var pollUnspent = require('./utils').pollUnspent describe('bitcoinjs-lib (multisig)', function () { it('can create a 2-of-3 multisig P2SH address', function () { @@ -42,7 +43,7 @@ describe('bitcoinjs-lib (multisig)', function () { if (err) return done(err) // get latest unspents from the address - blockchain.addresses.unspents(address, function (err, unspents) { + pollUnspent(blockchain, address, function (err, unspents) { if (err) return done(err) // filter small unspents diff --git a/test/integration/utils.js b/test/integration/utils.js index d481973..db9f68d 100644 --- a/test/integration/utils.js +++ b/test/integration/utils.js @@ -7,6 +7,22 @@ function faucetWithdraw(address, amount, done) { }).on('error', done) } -module.exports = { - faucetWithdraw: faucetWithdraw +function pollUnspent(blockchain, address, done) { + blockchain.addresses.unspents(address, function (err, unspents) { + if (err) return done(err) + + if(unspents == null || unspents.length === 0) { + return setTimeout(function() { + pollUnspent(blockchain, address, done) + }, 200) + } + + done(null, unspents) + }) + +} + +module.exports = { + faucetWithdraw: faucetWithdraw, + pollUnspent: pollUnspent }