Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,7 @@
"async": "^0.9.0",
"browserify": "^10.0.0",
"bs58": "^2.0.1",
"cb-blockr": "^3.1.1",
"cb-insight": "git://github.com/weilu/cb-insight",
"cb-http-client": "^0.2.0",
"coveralls": "^2.11.2",
"httpify": "^1.0.0",
"istanbul": "^0.3.5",
Expand Down
23 changes: 23 additions & 0 deletions test/integration/_blockchain.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
var Blockchain = require('cb-http-client')
var httpify = require('httpify')

var BLOCKTRAIL_API_KEY = process.env.BLOCKTRAIL_API_KEY || 'c0bd8155c66e3fb148bb1664adc1e4dacd872548'

var mainnet = new Blockchain('https://api.blocktrail.com/cb/v0.2.1/BTC', { api_key: BLOCKTRAIL_API_KEY })
var testnet = new Blockchain('https://api.blocktrail.com/cb/v0.2.1/tBTC', { api_key: BLOCKTRAIL_API_KEY })
testnet.faucet = function faucet (address, amount, 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
})
}, callback)
}

module.exports = {
m: mainnet,
t: testnet
}
12 changes: 5 additions & 7 deletions test/integration/advanced.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,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
var blockchain = require('./_blockchain')

describe('bitcoinjs-lib (advanced)', function () {
it('can sign a Bitcoin message', function () {
Expand All @@ -30,10 +28,10 @@ describe('bitcoinjs-lib (advanced)', function () {
var keyPair = bitcoin.ECPair.makeRandom({ network: network })
var address = keyPair.getAddress()

faucetWithdraw(address, 2e4, function (err) {
blockchain.t.faucet(address, 2e4, function (err) {
if (err) return done(err)

pollUnspent(blockchain, address, function (err, unspents) {
blockchain.t.addresses.unspents(address, function (err, unspents) {
if (err) return done(err)

var tx = new bitcoin.TransactionBuilder(network)
Expand All @@ -48,11 +46,11 @@ describe('bitcoinjs-lib (advanced)', function () {

var txBuilt = tx.build()

blockchain.transactions.propagate(txBuilt.toHex(), function (err) {
blockchain.t.transactions.propagate(txBuilt.toHex(), function (err) {
if (err) return done(err)

// check that the message was propagated
blockchain.transactions.get(txBuilt.getId(), function (err, transaction) {
blockchain.t.transactions.get(txBuilt.getId(), function (err, transaction) {
if (err) return done(err)

var actual = bitcoin.Transaction.fromHex(transaction.txHex)
Expand Down
8 changes: 5 additions & 3 deletions test/integration/crypto.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ var assert = require('assert')
var async = require('async')
var bigi = require('bigi')
var bitcoin = require('../../')
var blockchain = new (require('cb-blockr'))('bitcoin')
var blockchain = require('./_blockchain')
var crypto = require('crypto')

describe('bitcoinjs-lib (crypto)', function () {
Expand Down Expand Up @@ -91,6 +91,8 @@ describe('bitcoinjs-lib (crypto)', function () {
})

it('can recover a private key from duplicate R values', function (done) {
this.timeout(10000)

var inputs = [
{
txId: 'f4c16475f2a6e9c602e4a287f9db3040e319eb9ece74761a4b84bc820fbeef50',
Expand All @@ -105,7 +107,7 @@ describe('bitcoinjs-lib (crypto)', function () {
var txIds = inputs.map(function (x) { return x.txId })

// first retrieve the relevant transactions
blockchain.transactions.get(txIds, function (err, results) {
blockchain.m.transactions.get(txIds, function (err, results) {
assert.ifError(err)

var transactions = {}
Expand All @@ -125,7 +127,7 @@ describe('bitcoinjs-lib (crypto)', function () {
var prevVout = transaction.ins[input.vout].index

tasks.push(function (callback) {
blockchain.transactions.get(prevOutTxId, function (err, result) {
blockchain.m.transactions.get(prevOutTxId, function (err, result) {
if (err) return callback(err)

var prevOut = bitcoin.Transaction.fromHex(result.txHex)
Expand Down
17 changes: 7 additions & 10 deletions test/integration/multisig.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,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
var pollSummary = require('./utils').pollSummary
var blockchain = require('./_blockchain')

describe('bitcoinjs-lib (multisig)', function () {
it('can create a 2-of-3 multisig P2SH address', function () {
Expand Down Expand Up @@ -39,15 +36,15 @@ describe('bitcoinjs-lib (multisig)', function () {
var scriptPubKey = bitcoin.scripts.scriptHashOutput(redeemScript.getHash())
var address = bitcoin.Address.fromOutputScript(scriptPubKey, bitcoin.networks.testnet).toString()

// Attempt to send funds to the source address
faucetWithdraw(address, 2e4, function (err) {
// attempt to send funds to the source address
blockchain.t.faucet(address, 2e4, function (err) {
if (err) return done(err)

// get latest unspents from the address
pollUnspent(blockchain, address, function (err, unspents) {
blockchain.t.addresses.unspents(address, function (err, unspents) {
if (err) return done(err)

// filter small unspents
// filter small unspents
unspents = unspents.filter(function (unspent) {
return unspent.value > 1e4
})
Expand All @@ -69,11 +66,11 @@ describe('bitcoinjs-lib (multisig)', function () {
txb.sign(0, keyPairs[2], redeemScript)

// broadcast our transaction
blockchain.transactions.propagate(txb.build().toHex(), function (err) {
blockchain.t.transactions.propagate(txb.build().toHex(), function (err) {
if (err) return done(err)

// check that the funds (1e4 Satoshis) indeed arrived at the intended address
pollSummary(blockchain, targetAddress, function (err, result) {
blockchain.t.addresses.summary(targetAddress, function (err, result) {
if (err) return done(err)

assert.strictEqual(result.balance, 1e4)
Expand Down
49 changes: 0 additions & 49 deletions test/integration/utils.js

This file was deleted.