diff --git a/js/models/core/PublicKeyRing.js b/js/models/core/PublicKeyRing.js index f8a090d10..e05fa8049 100644 --- a/js/models/core/PublicKeyRing.js +++ b/js/models/core/PublicKeyRing.js @@ -190,7 +190,7 @@ PublicKeyRing.prototype.getScriptPubKeyHex = function(index, isChange) { //generate a new address, update index. PublicKeyRing.prototype.generateAddress = function(isChange) { - + isChange = !!isChange; var index = isChange ? this.indexes.getChangeIndex() : this.indexes.getReceiveIndex(); var ret = this.getAddress(index, isChange); this.indexes.increment(isChange); diff --git a/js/models/core/Structure.js b/js/models/core/Structure.js index f6c160568..88543f966 100644 --- a/js/models/core/Structure.js +++ b/js/models/core/Structure.js @@ -1,6 +1,7 @@ 'use strict'; var imports = require('soop').imports(); +var preconditions = require('preconditions').singleton(); function Structure() {} @@ -18,6 +19,8 @@ var BIP45_PUBLIC_PREFIX = 'm/' + PURPOSE + '\''; Structure.BIP45_PUBLIC_PREFIX = BIP45_PUBLIC_PREFIX; Structure.Branch = function(address_index, isChange, cosigner_index) { + preconditions.shouldBeNumber(address_index); + preconditions.shouldBeBoolean(isChange); var ret = 'm/' + (typeof cosigner_index !== 'undefined' ? cosigner_index : SHARED_INDEX) + '/' + (isChange ? 1 : 0) + '/' + @@ -32,6 +35,7 @@ Structure.FullBranch = function(address_index, isChange, cosigner_index) { }; Structure.indicesForPath = function(path) { + preconditions.shouldBeString(path); var s = path.split('/'); return { isChange: s[3] === '1', @@ -39,8 +43,8 @@ Structure.indicesForPath = function(path) { }; }; -Structure.IdFullBranch = Structure.FullBranch(0, 0, ID_INDEX); -Structure.IdBranch = Structure.Branch(0, 0, ID_INDEX); +Structure.IdFullBranch = Structure.FullBranch(0, false, ID_INDEX); +Structure.IdBranch = Structure.Branch(0, false, ID_INDEX); Structure.PURPOSE = PURPOSE; Structure.MAX_NON_HARDENED = MAX_NON_HARDENED; Structure.SHARED_INDEX = SHARED_INDEX; diff --git a/js/models/core/Wallet.js b/js/models/core/Wallet.js index 66c91c54f..9f0da8c2f 100644 --- a/js/models/core/Wallet.js +++ b/js/models/core/Wallet.js @@ -5,7 +5,7 @@ var imports = require('soop').imports(); var http = require('http'); var EventEmitter = imports.EventEmitter || require('events').EventEmitter; var async = require('async'); -var preconditions = require('preconditions').instance(); +var preconditions = require('preconditions').singleton(); var bitcore = require('bitcore'); var bignum = bitcore.Bignum; diff --git a/test/test.PrivateKey.js b/test/test.PrivateKey.js index e5751e699..60ca71664 100644 --- a/test/test.PrivateKey.js +++ b/test/test.PrivateKey.js @@ -33,7 +33,7 @@ describe('PrivateKey model', function() { it('should derive priv keys', function() { var pk = new PrivateKey(config); - for (var j = 0; j < 2; j++) { + for (var j = false; !j; j=true) { for (var i = 0; i < 3; i++) { var wk = pk.get(i, j); should.exist(wk); @@ -78,10 +78,10 @@ describe('PrivateKey model', function() { w2.toObj().extendedPrivateKeyString.should.equal(w1.toObj().extendedPrivateKeyString); w2.getId().should.equal(w1.getId()); - JSON.stringify(w2.get(1, 1).storeObj()).should - .equal(JSON.stringify(w1.get(1, 1).storeObj())); - JSON.stringify(w2.get(1, 0).storeObj()).should - .equal(JSON.stringify(w1.get(1, 0).storeObj())); + JSON.stringify(w2.get(1, true).storeObj()).should + .equal(JSON.stringify(w1.get(1, true).storeObj())); + JSON.stringify(w2.get(1, false).storeObj()).should + .equal(JSON.stringify(w1.get(1, false).storeObj())); }); describe('#getId', function() { diff --git a/test/test.PublicKeyRing.js b/test/test.PublicKeyRing.js index 7ffa29691..b2405a161 100644 --- a/test/test.PublicKeyRing.js +++ b/test/test.PublicKeyRing.js @@ -121,7 +121,7 @@ describe('PublicKeyRing model', function() { var k = createW(); var w = k.w; - for (var isChange = 0; isChange < 2; isChange++) { + [true, false].forEach(function(isChange){ for (var i = 0; i < 2; i++) { var a = w.generateAddress(isChange); a.isValid().should.equal(true); @@ -132,7 +132,7 @@ describe('PublicKeyRing model', function() { .not.equal(w.getAddress(i - 2, isChange).toString()); } } - } + }); }); it('should return PublicKeyRing addresses', function() { @@ -143,9 +143,11 @@ describe('PublicKeyRing model', function() { var a = w.getAddresses(); a.length.should.equal(0); - for (var isChange = 0; isChange < 2; isChange++) - for (var i = 0; i < 2; i++) + [true, false].forEach(function(isChange){ + for (var i = 0; i < 2; i++) { w.generateAddress(isChange); + } + }); var as = w.getAddressesInfo(); as.length.should.equal(4); diff --git a/test/test.TxProposals.js b/test/test.TxProposals.js index c78ef4100..30615a990 100644 --- a/test/test.TxProposals.js +++ b/test/test.TxProposals.js @@ -69,14 +69,15 @@ var vopts = { describe('TxProposals model', function() { + var isChange = false; + var index = 0; + it('verify TXs', function(done) { var priv = new PrivateKey(config); var priv2 = new PrivateKey(config); var priv3 = new PrivateKey(config); var ts = Date.now(); - var isChange = 0; - var index = 0; var pkr = createPKR([priv, priv2, priv3]); var opts = { remainderOut: { @@ -186,8 +187,6 @@ describe('TxProposals model', function() { var start = new Date().getTime(); var pkr = createPKR([priv]); var ts = Date.now(); - var isChange = 0; - var index = 0; unspentTest[0].address = pkr.getAddress(index, isChange).toString(); unspentTest[0].scriptPubKey = pkr.getScriptPubKeyHex(index, isChange); w.add(createTx( @@ -211,8 +210,6 @@ describe('TxProposals model', function() { var start = new Date().getTime(); var pkr = createPKR([priv]); var ts = Date.now(); - var isChange = 0; - var index = 0; unspentTest[0].address = pkr.getAddress(index, isChange).toString(); unspentTest[0].scriptPubKey = pkr.getScriptPubKeyHex(index, isChange); @@ -250,8 +247,6 @@ describe('TxProposals model', function() { var priv2 = new PrivateKey(config); var priv = new PrivateKey(config); var ts = Date.now(); - var isChange = 0; - var index = 0; var pkr = createPKR([priv]); var opts = { remainderOut: { @@ -353,8 +348,6 @@ describe('TxProposals model', function() { var priv3 = PrivateKey.fromObj(o3); var ts = Date.now(); - var isChange = 0; - var index = 0; var pkr = createPKR([priv, priv2]); var opts = { remainderOut: { @@ -467,8 +460,6 @@ describe('TxProposals model', function() { var priv2 = new PrivateKey(config); var priv3 = new PrivateKey(config); var ts = Date.now(); - var isChange = 0; - var index = 0; var pkr = createPKR([priv, priv2, priv3]); var opts = { remainderOut: { @@ -573,8 +564,6 @@ describe('TxProposals model', function() { networkName: config.networkName, }); var ts = Date.now(); - var isChange = 0; - var index = 0; unspentTest[0].address = pkr.getAddress(index, isChange).toString(); unspentTest[0].scriptPubKey = pkr.getScriptPubKeyHex(index, isChange);