Skip to content
This repository was archived by the owner on Sep 16, 2021. It is now read-only.
Closed
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: 2 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@ node_js:
- "v0.10.25"
- "v0.12.7"
- "v4"
- "v8.11.4"
script:
- npm run regtest
- npm run test
- npm run jshint
after_success:
- npm run coveralls
- npm run coveralls
2 changes: 1 addition & 1 deletion lib/services/bitcoind.js
Original file line number Diff line number Diff line change
Expand Up @@ -1987,7 +1987,7 @@ Bitcoin.prototype.getDetailedTransaction = function(txid, callback) {

// returns vsize for segwit-positive coins,
// regular size if segwit is disbled
var size = result.vsize == null ? result.size : result.vsize;
var size = result.vsize === null ? result.size : result.vsize;
var tx = {
hex: result.hex,
blockHash: result.blockhash,
Expand Down
90 changes: 45 additions & 45 deletions test/services/bitcoind.unit.js
Original file line number Diff line number Diff line change
Expand Up @@ -228,25 +228,25 @@ describe('Bitcoin Service', function() {
it('will add a valid address', function() {
var bitcoind = new BitcoinService(baseConfig);
var emitter = new EventEmitter();
bitcoind.subscribeAddress(emitter, ['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br']);
should.exist(bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br']);
bitcoind.subscribeAddress(emitter, ['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3']);
should.exist(bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3']);
});
it('will handle multiple address subscribers', function() {
var bitcoind = new BitcoinService(baseConfig);
var emitter1 = new EventEmitter();
var emitter2 = new EventEmitter();
bitcoind.subscribeAddress(emitter1, ['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br']);
bitcoind.subscribeAddress(emitter2, ['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br']);
should.exist(bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br']);
bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br'].length.should.equal(2);
bitcoind.subscribeAddress(emitter1, ['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3']);
bitcoind.subscribeAddress(emitter2, ['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3']);
should.exist(bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3']);
bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3'].length.should.equal(2);
});
it('will not add the same emitter twice', function() {
var bitcoind = new BitcoinService(baseConfig);
var emitter1 = new EventEmitter();
bitcoind.subscribeAddress(emitter1, ['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br']);
bitcoind.subscribeAddress(emitter1, ['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br']);
should.exist(bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br']);
bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br'].length.should.equal(1);
bitcoind.subscribeAddress(emitter1, ['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3']);
bitcoind.subscribeAddress(emitter1, ['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3']);
should.exist(bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3']);
bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3'].length.should.equal(1);
});
});

Expand All @@ -262,57 +262,57 @@ describe('Bitcoin Service', function() {
var bitcoind = new BitcoinService(baseConfig);
var emitter1 = new EventEmitter();
var emitter2 = new EventEmitter();
bitcoind.subscribeAddress(emitter1, ['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br']);
bitcoind.subscribeAddress(emitter2, ['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br']);
should.exist(bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br']);
bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br'].length.should.equal(2);
bitcoind.unsubscribeAddress(emitter1, ['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br']);
bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br'].length.should.equal(1);
bitcoind.subscribeAddress(emitter1, ['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3']);
bitcoind.subscribeAddress(emitter2, ['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3']);
should.exist(bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3']);
bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3'].length.should.equal(2);
bitcoind.unsubscribeAddress(emitter1, ['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3']);
bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3'].length.should.equal(1);
});
it('will unsubscribe subscriptions for an emitter', function() {
var bitcoind = new BitcoinService(baseConfig);
var emitter1 = new EventEmitter();
var emitter2 = new EventEmitter();
bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br'] = [emitter1, emitter2];
bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3'] = [emitter1, emitter2];
bitcoind.unsubscribeAddress(emitter1);
bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br'].length.should.equal(1);
bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3'].length.should.equal(1);
});
it('will NOT unsubscribe subscription with missing address', function() {
var bitcoind = new BitcoinService(baseConfig);
var emitter1 = new EventEmitter();
var emitter2 = new EventEmitter();
bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br'] = [emitter1, emitter2];
bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3'] = [emitter1, emitter2];
bitcoind.unsubscribeAddress(emitter1, ['LWx1jmpcMAQMXou6pbLyfMU7zETnbhy3bo']);
bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br'].length.should.equal(2);
bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3'].length.should.equal(2);
});
it('will NOT unsubscribe subscription with missing emitter', function() {
var bitcoind = new BitcoinService(baseConfig);
var emitter1 = new EventEmitter();
var emitter2 = new EventEmitter();
bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br'] = [emitter2];
bitcoind.unsubscribeAddress(emitter1, ['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br']);
bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br'].length.should.equal(1);
bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br'][0].should.equal(emitter2);
bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3'] = [emitter2];
bitcoind.unsubscribeAddress(emitter1, ['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3']);
bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3'].length.should.equal(1);
bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3'][0].should.equal(emitter2);
});
it('will remove empty addresses', function() {
var bitcoind = new BitcoinService(baseConfig);
var emitter1 = new EventEmitter();
var emitter2 = new EventEmitter();
bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br'] = [emitter1, emitter2];
bitcoind.unsubscribeAddress(emitter1, ['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br']);
bitcoind.unsubscribeAddress(emitter2, ['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br']);
should.not.exist(bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br']);
bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3'] = [emitter1, emitter2];
bitcoind.unsubscribeAddress(emitter1, ['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3']);
bitcoind.unsubscribeAddress(emitter2, ['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3']);
should.not.exist(bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3']);
});
it('will unsubscribe emitter for all addresses', function() {
var bitcoind = new BitcoinService(baseConfig);
var emitter1 = new EventEmitter();
var emitter2 = new EventEmitter();
bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br'] = [emitter1, emitter2];
bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3'] = [emitter1, emitter2];
bitcoind.subscriptions.address['LWx1jmpcMAQMXou6pbLyfMU7zETnbhy3bo'] = [emitter1, emitter2];
sinon.spy(bitcoind, 'unsubscribeAddressAll');
bitcoind.unsubscribeAddress(emitter1);
bitcoind.unsubscribeAddressAll.callCount.should.equal(1);
bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br'].length.should.equal(1);
bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3'].length.should.equal(1);
bitcoind.subscriptions.address['LWx1jmpcMAQMXou6pbLyfMU7zETnbhy3bo'].length.should.equal(1);
});
});
Expand All @@ -329,15 +329,15 @@ describe('Bitcoin Service', function() {
var bitcoind = new BitcoinService(baseConfig);
var emitter1 = new EventEmitter();
var emitter2 = new EventEmitter();
bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br'] = [emitter1, emitter2];
bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3'] = [emitter1, emitter2];
bitcoind.subscriptions.address['LWx1jmpcMAQMXou6pbLyfMU7zETnbhy3bo'] = [emitter1, emitter2];
bitcoind.subscriptions.address['mgY65WSfEmsyYaYPQaXhmXMeBhwp4EcsQW'] = [emitter2];
bitcoind.subscriptions.address['3CMNFxN1oHBc4R1EpboAL5yzHGgE611Xou'] = [emitter1];
bitcoind.subscriptions.address['MJZWZqmykQ32rvH8vUnW9jEPbyGg7agWQZ'] = [emitter1];
bitcoind.unsubscribeAddress(emitter1);
bitcoind.subscriptions.address['2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br'].length.should.equal(1);
bitcoind.subscriptions.address['mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3'].length.should.equal(1);
bitcoind.subscriptions.address['LWx1jmpcMAQMXou6pbLyfMU7zETnbhy3bo'].length.should.equal(1);
bitcoind.subscriptions.address['mgY65WSfEmsyYaYPQaXhmXMeBhwp4EcsQW'].length.should.equal(1);
should.not.exist(bitcoind.subscriptions.address['3CMNFxN1oHBc4R1EpboAL5yzHGgE611Xou']);
should.not.exist(bitcoind.subscriptions.address['MJZWZqmykQ32rvH8vUnW9jEPbyGg7agWQZ']);
});
});

Expand Down Expand Up @@ -1091,7 +1091,7 @@ describe('Bitcoin Service', function() {
var wif = 'T872No3VhULcqFF6Sv1PSCRXZKVBPYWG2UtG4ECFK7nzaUUU8Kuj';
var privkey = bitcore.PrivateKey.fromWIF(wif);
var inputAddress = privkey.toAddress(bitcore.Networks.testnet);
var outputAddress = bitcore.Address('2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br');
var outputAddress = bitcore.Address('mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3');
var tx = bitcore.Transaction();
tx.from({
txid: '4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b',
Expand Down Expand Up @@ -1139,7 +1139,7 @@ describe('Bitcoin Service', function() {
it('will return unique values', function() {
var bitcoind = new BitcoinService(baseConfig);
var tx = bitcore.Transaction();
var address = bitcore.Address('2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br');
var address = bitcore.Address('mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3');
tx.addOutput(bitcore.Transaction.Output({
script: bitcore.Script(address),
satoshis: 5000000000
Expand Down Expand Up @@ -3318,32 +3318,32 @@ describe('Bitcoin Service', function() {
it('will get address strings from bitcore addresses', function() {
var addresses = [
bitcore.Address('LUVKqDPPVBQcjUwt1S21Pa5ybgPaDEZhXR'),
bitcore.Address('3CMNFxN1oHBc4R1EpboAL5yzHGgE611Xou'),
bitcore.Address('MJZWZqmykQ32rvH8vUnW9jEPbyGg7agWQZ'),
];
var bitcoind = new BitcoinService(baseConfig);
var strings = bitcoind._getAddressStrings(addresses);
strings[0].should.equal('LUVKqDPPVBQcjUwt1S21Pa5ybgPaDEZhXR');
strings[1].should.equal('3CMNFxN1oHBc4R1EpboAL5yzHGgE611Xou');
strings[1].should.equal('MJZWZqmykQ32rvH8vUnW9jEPbyGg7agWQZ');
});
it('will get address strings from strings', function() {
var addresses = [
'LUVKqDPPVBQcjUwt1S21Pa5ybgPaDEZhXR',
'3CMNFxN1oHBc4R1EpboAL5yzHGgE611Xou',
'MJZWZqmykQ32rvH8vUnW9jEPbyGg7agWQZ',
];
var bitcoind = new BitcoinService(baseConfig);
var strings = bitcoind._getAddressStrings(addresses);
strings[0].should.equal('LUVKqDPPVBQcjUwt1S21Pa5ybgPaDEZhXR');
strings[1].should.equal('3CMNFxN1oHBc4R1EpboAL5yzHGgE611Xou');
strings[1].should.equal('MJZWZqmykQ32rvH8vUnW9jEPbyGg7agWQZ');
});
it('will get address strings from mixture of types', function() {
var addresses = [
bitcore.Address('LUVKqDPPVBQcjUwt1S21Pa5ybgPaDEZhXR'),
'3CMNFxN1oHBc4R1EpboAL5yzHGgE611Xou',
'MJZWZqmykQ32rvH8vUnW9jEPbyGg7agWQZ',
];
var bitcoind = new BitcoinService(baseConfig);
var strings = bitcoind._getAddressStrings(addresses);
strings[0].should.equal('LUVKqDPPVBQcjUwt1S21Pa5ybgPaDEZhXR');
strings[1].should.equal('3CMNFxN1oHBc4R1EpboAL5yzHGgE611Xou');
strings[1].should.equal('MJZWZqmykQ32rvH8vUnW9jEPbyGg7agWQZ');
});
it('will give error with unknown', function() {
var addresses = [
Expand Down Expand Up @@ -4135,12 +4135,12 @@ describe('Bitcoin Service', function() {
getBlockHash: getBlockHash
}
});
bitcoind._maybeGetBlockHash('2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br', function(err, hash) {
bitcoind._maybeGetBlockHash('mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3', function(err, hash) {
if (err) {
return done(err);
}
getBlockHash.callCount.should.equal(0);
hash.should.equal('2N2JD6wb56AfK4tfmM6PwdVmoYk2dCKf4Br');
hash.should.equal('mu5a17UQDh2hsRk9ZJzFkTfCbzZhMVBHY3');
done();
});
});
Expand Down Expand Up @@ -5033,4 +5033,4 @@ describe('Bitcoin Service', function() {
});
});

});
});