diff --git a/test/integration/_blockchain.js b/test/integration/_blockchain.js index bb2b6b8..ac77e50 100644 --- a/test/integration/_blockchain.js +++ b/test/integration/_blockchain.js @@ -8,40 +8,37 @@ var mainnet = new Blockchain('https://api.blocktrail.com/cb/v0.2.1/BTC', { api_k var testnet = new Blockchain('https://api.blocktrail.com/cb/v0.2.1/tBTC', { api_key: BLOCKTRAIL_API_KEY }) testnet.faucet = function faucet (address, amount, done) { - var unspents = [] - - async.whilst( - function condition () { return unspents.length === 0 }, - function f (callback) { - httpify({ - method: 'POST', - url: 'https://api.blocktrail.com/v1/tBTC/faucet/withdrawl?api_key=' + BLOCKTRAIL_API_KEY, - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ - address: address, - amount: amount - }) - }, function (err) { + async.retry(5, function (callback) { + httpify({ + method: 'POST', + url: 'https://api.blocktrail.com/v1/tBTC/faucet/withdrawl?api_key=' + BLOCKTRAIL_API_KEY, + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + address: address, + amount: amount + }) + }, function (err) { + if (err) return callback(err) + + testnet.addresses.unspents(address, function (err, result) { if (err) return callback(err) - testnet.addresses.unspents(address, function (err, result) { + var unspent = result.filter(function (unspent) { + return unspent.value > 1e3 + }).pop() + + testnet.transactions.get(unspent.txId, function (err, tx) { if (err) return callback(err) - // filter small unspents - unspents = result.filter(function (unspent) { - return unspent.value > 1e3 - }) + testnet.transactions.propagate(tx.txHex, function (err) { + if (err) return callback(err) - callback() + callback(null, unspent) + }) }) }) - }, - function (err) { - if (err) return done(err) - - done(null, unspents) - } - ) + }) + }, done) } module.exports = { diff --git a/test/integration/advanced.js b/test/integration/advanced.js index 3abb665..c28e78d 100644 --- a/test/integration/advanced.js +++ b/test/integration/advanced.js @@ -28,11 +28,9 @@ describe('bitcoinjs-lib (advanced)', function () { var keyPair = bitcoin.ECPair.makeRandom({ network: network }) var address = keyPair.getAddress() - blockchain.t.faucet(address, 2e4, function (err, unspents) { + blockchain.t.faucet(address, 2e4, function (err, unspent) { if (err) return done(err) - // use the oldest unspent - var unspent = unspents.pop() var tx = new bitcoin.TransactionBuilder(network) var data = new Buffer('bitcoinjs-lib') var dataScript = bitcoin.script.nullDataOutput(data) @@ -76,12 +74,9 @@ describe('bitcoinjs-lib (advanced)', function () { beforeEach(function (done) { this.timeout(10000) - blockchain.t.faucet(alice.getAddress(), 2e4, function (err, unspents) { + blockchain.t.faucet(alice.getAddress(), 2e4, function (err, unspent) { if (err) return done(err) - // use the oldest unspent - var unspent = unspents.pop() - // build the transaction var tx = new bitcoin.TransactionBuilder(network) tx.addInput(unspent.txId, unspent.vout) diff --git a/test/integration/multisig.js b/test/integration/multisig.js index 1a211d5..83f0e81 100644 --- a/test/integration/multisig.js +++ b/test/integration/multisig.js @@ -37,12 +37,9 @@ describe('bitcoinjs-lib (multisig)', function () { var address = bitcoin.address.fromOutputScript(scriptPubKey, bitcoin.networks.testnet) // attempt to send funds to the source address - blockchain.t.faucet(address, 2e4, function (err, unspents) { + blockchain.t.faucet(address, 2e4, function (err, unspent) { if (err) return done(err) - // use the oldest unspent - var unspent = unspents.pop() - // make a random destination address var targetAddress = bitcoin.ECPair.makeRandom({ network: bitcoin.networks.testnet