mirror of https://github.com/BTCPrivate/copay.git
Merge pull request #740 from maraoz/ref/preconditions/structure
mocha / karma / browser passed.
This commit is contained in:
commit
ee2b7fbdad
|
@ -190,7 +190,7 @@ PublicKeyRing.prototype.getScriptPubKeyHex = function(index, isChange) {
|
||||||
|
|
||||||
//generate a new address, update index.
|
//generate a new address, update index.
|
||||||
PublicKeyRing.prototype.generateAddress = function(isChange) {
|
PublicKeyRing.prototype.generateAddress = function(isChange) {
|
||||||
|
isChange = !!isChange;
|
||||||
var index = isChange ? this.indexes.getChangeIndex() : this.indexes.getReceiveIndex();
|
var index = isChange ? this.indexes.getChangeIndex() : this.indexes.getReceiveIndex();
|
||||||
var ret = this.getAddress(index, isChange);
|
var ret = this.getAddress(index, isChange);
|
||||||
this.indexes.increment(isChange);
|
this.indexes.increment(isChange);
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var imports = require('soop').imports();
|
var imports = require('soop').imports();
|
||||||
|
var preconditions = require('preconditions').singleton();
|
||||||
|
|
||||||
function Structure() {}
|
function Structure() {}
|
||||||
|
|
||||||
|
@ -18,6 +19,8 @@ var BIP45_PUBLIC_PREFIX = 'm/' + PURPOSE + '\'';
|
||||||
Structure.BIP45_PUBLIC_PREFIX = BIP45_PUBLIC_PREFIX;
|
Structure.BIP45_PUBLIC_PREFIX = BIP45_PUBLIC_PREFIX;
|
||||||
|
|
||||||
Structure.Branch = function(address_index, isChange, cosigner_index) {
|
Structure.Branch = function(address_index, isChange, cosigner_index) {
|
||||||
|
preconditions.shouldBeNumber(address_index);
|
||||||
|
preconditions.shouldBeBoolean(isChange);
|
||||||
var ret = 'm/' +
|
var ret = 'm/' +
|
||||||
(typeof cosigner_index !== 'undefined' ? cosigner_index : SHARED_INDEX) + '/' +
|
(typeof cosigner_index !== 'undefined' ? cosigner_index : SHARED_INDEX) + '/' +
|
||||||
(isChange ? 1 : 0) + '/' +
|
(isChange ? 1 : 0) + '/' +
|
||||||
|
@ -32,6 +35,7 @@ Structure.FullBranch = function(address_index, isChange, cosigner_index) {
|
||||||
};
|
};
|
||||||
|
|
||||||
Structure.indicesForPath = function(path) {
|
Structure.indicesForPath = function(path) {
|
||||||
|
preconditions.shouldBeString(path);
|
||||||
var s = path.split('/');
|
var s = path.split('/');
|
||||||
return {
|
return {
|
||||||
isChange: s[3] === '1',
|
isChange: s[3] === '1',
|
||||||
|
@ -39,8 +43,8 @@ Structure.indicesForPath = function(path) {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
Structure.IdFullBranch = Structure.FullBranch(0, 0, ID_INDEX);
|
Structure.IdFullBranch = Structure.FullBranch(0, false, ID_INDEX);
|
||||||
Structure.IdBranch = Structure.Branch(0, 0, ID_INDEX);
|
Structure.IdBranch = Structure.Branch(0, false, ID_INDEX);
|
||||||
Structure.PURPOSE = PURPOSE;
|
Structure.PURPOSE = PURPOSE;
|
||||||
Structure.MAX_NON_HARDENED = MAX_NON_HARDENED;
|
Structure.MAX_NON_HARDENED = MAX_NON_HARDENED;
|
||||||
Structure.SHARED_INDEX = SHARED_INDEX;
|
Structure.SHARED_INDEX = SHARED_INDEX;
|
||||||
|
|
|
@ -5,7 +5,7 @@ var imports = require('soop').imports();
|
||||||
var http = require('http');
|
var http = require('http');
|
||||||
var EventEmitter = imports.EventEmitter || require('events').EventEmitter;
|
var EventEmitter = imports.EventEmitter || require('events').EventEmitter;
|
||||||
var async = require('async');
|
var async = require('async');
|
||||||
var preconditions = require('preconditions').instance();
|
var preconditions = require('preconditions').singleton();
|
||||||
|
|
||||||
var bitcore = require('bitcore');
|
var bitcore = require('bitcore');
|
||||||
var bignum = bitcore.Bignum;
|
var bignum = bitcore.Bignum;
|
||||||
|
|
|
@ -33,7 +33,7 @@ describe('PrivateKey model', function() {
|
||||||
|
|
||||||
it('should derive priv keys', function() {
|
it('should derive priv keys', function() {
|
||||||
var pk = new PrivateKey(config);
|
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++) {
|
for (var i = 0; i < 3; i++) {
|
||||||
var wk = pk.get(i, j);
|
var wk = pk.get(i, j);
|
||||||
should.exist(wk);
|
should.exist(wk);
|
||||||
|
@ -78,10 +78,10 @@ describe('PrivateKey model', function() {
|
||||||
w2.toObj().extendedPrivateKeyString.should.equal(w1.toObj().extendedPrivateKeyString);
|
w2.toObj().extendedPrivateKeyString.should.equal(w1.toObj().extendedPrivateKeyString);
|
||||||
w2.getId().should.equal(w1.getId());
|
w2.getId().should.equal(w1.getId());
|
||||||
|
|
||||||
JSON.stringify(w2.get(1, 1).storeObj()).should
|
JSON.stringify(w2.get(1, true).storeObj()).should
|
||||||
.equal(JSON.stringify(w1.get(1, 1).storeObj()));
|
.equal(JSON.stringify(w1.get(1, true).storeObj()));
|
||||||
JSON.stringify(w2.get(1, 0).storeObj()).should
|
JSON.stringify(w2.get(1, false).storeObj()).should
|
||||||
.equal(JSON.stringify(w1.get(1, 0).storeObj()));
|
.equal(JSON.stringify(w1.get(1, false).storeObj()));
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('#getId', function() {
|
describe('#getId', function() {
|
||||||
|
|
|
@ -121,7 +121,7 @@ describe('PublicKeyRing model', function() {
|
||||||
var k = createW();
|
var k = createW();
|
||||||
var w = k.w;
|
var w = k.w;
|
||||||
|
|
||||||
for (var isChange = 0; isChange < 2; isChange++) {
|
[true, false].forEach(function(isChange){
|
||||||
for (var i = 0; i < 2; i++) {
|
for (var i = 0; i < 2; i++) {
|
||||||
var a = w.generateAddress(isChange);
|
var a = w.generateAddress(isChange);
|
||||||
a.isValid().should.equal(true);
|
a.isValid().should.equal(true);
|
||||||
|
@ -132,7 +132,7 @@ describe('PublicKeyRing model', function() {
|
||||||
.not.equal(w.getAddress(i - 2, isChange).toString());
|
.not.equal(w.getAddress(i - 2, isChange).toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return PublicKeyRing addresses', function() {
|
it('should return PublicKeyRing addresses', function() {
|
||||||
|
@ -143,9 +143,11 @@ describe('PublicKeyRing model', function() {
|
||||||
var a = w.getAddresses();
|
var a = w.getAddresses();
|
||||||
a.length.should.equal(0);
|
a.length.should.equal(0);
|
||||||
|
|
||||||
for (var isChange = 0; isChange < 2; isChange++)
|
[true, false].forEach(function(isChange){
|
||||||
for (var i = 0; i < 2; i++)
|
for (var i = 0; i < 2; i++) {
|
||||||
w.generateAddress(isChange);
|
w.generateAddress(isChange);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
var as = w.getAddressesInfo();
|
var as = w.getAddressesInfo();
|
||||||
as.length.should.equal(4);
|
as.length.should.equal(4);
|
||||||
|
|
|
@ -69,14 +69,15 @@ var vopts = {
|
||||||
|
|
||||||
describe('TxProposals model', function() {
|
describe('TxProposals model', function() {
|
||||||
|
|
||||||
|
var isChange = false;
|
||||||
|
var index = 0;
|
||||||
|
|
||||||
it('verify TXs', function(done) {
|
it('verify TXs', function(done) {
|
||||||
|
|
||||||
var priv = new PrivateKey(config);
|
var priv = new PrivateKey(config);
|
||||||
var priv2 = new PrivateKey(config);
|
var priv2 = new PrivateKey(config);
|
||||||
var priv3 = new PrivateKey(config);
|
var priv3 = new PrivateKey(config);
|
||||||
var ts = Date.now();
|
var ts = Date.now();
|
||||||
var isChange = 0;
|
|
||||||
var index = 0;
|
|
||||||
var pkr = createPKR([priv, priv2, priv3]);
|
var pkr = createPKR([priv, priv2, priv3]);
|
||||||
var opts = {
|
var opts = {
|
||||||
remainderOut: {
|
remainderOut: {
|
||||||
|
@ -186,8 +187,6 @@ describe('TxProposals model', function() {
|
||||||
var start = new Date().getTime();
|
var start = new Date().getTime();
|
||||||
var pkr = createPKR([priv]);
|
var pkr = createPKR([priv]);
|
||||||
var ts = Date.now();
|
var ts = Date.now();
|
||||||
var isChange = 0;
|
|
||||||
var index = 0;
|
|
||||||
unspentTest[0].address = pkr.getAddress(index, isChange).toString();
|
unspentTest[0].address = pkr.getAddress(index, isChange).toString();
|
||||||
unspentTest[0].scriptPubKey = pkr.getScriptPubKeyHex(index, isChange);
|
unspentTest[0].scriptPubKey = pkr.getScriptPubKeyHex(index, isChange);
|
||||||
w.add(createTx(
|
w.add(createTx(
|
||||||
|
@ -211,8 +210,6 @@ describe('TxProposals model', function() {
|
||||||
var start = new Date().getTime();
|
var start = new Date().getTime();
|
||||||
var pkr = createPKR([priv]);
|
var pkr = createPKR([priv]);
|
||||||
var ts = Date.now();
|
var ts = Date.now();
|
||||||
var isChange = 0;
|
|
||||||
var index = 0;
|
|
||||||
|
|
||||||
unspentTest[0].address = pkr.getAddress(index, isChange).toString();
|
unspentTest[0].address = pkr.getAddress(index, isChange).toString();
|
||||||
unspentTest[0].scriptPubKey = pkr.getScriptPubKeyHex(index, isChange);
|
unspentTest[0].scriptPubKey = pkr.getScriptPubKeyHex(index, isChange);
|
||||||
|
@ -250,8 +247,6 @@ describe('TxProposals model', function() {
|
||||||
var priv2 = new PrivateKey(config);
|
var priv2 = new PrivateKey(config);
|
||||||
var priv = new PrivateKey(config);
|
var priv = new PrivateKey(config);
|
||||||
var ts = Date.now();
|
var ts = Date.now();
|
||||||
var isChange = 0;
|
|
||||||
var index = 0;
|
|
||||||
var pkr = createPKR([priv]);
|
var pkr = createPKR([priv]);
|
||||||
var opts = {
|
var opts = {
|
||||||
remainderOut: {
|
remainderOut: {
|
||||||
|
@ -353,8 +348,6 @@ describe('TxProposals model', function() {
|
||||||
var priv3 = PrivateKey.fromObj(o3);
|
var priv3 = PrivateKey.fromObj(o3);
|
||||||
|
|
||||||
var ts = Date.now();
|
var ts = Date.now();
|
||||||
var isChange = 0;
|
|
||||||
var index = 0;
|
|
||||||
var pkr = createPKR([priv, priv2]);
|
var pkr = createPKR([priv, priv2]);
|
||||||
var opts = {
|
var opts = {
|
||||||
remainderOut: {
|
remainderOut: {
|
||||||
|
@ -467,8 +460,6 @@ describe('TxProposals model', function() {
|
||||||
var priv2 = new PrivateKey(config);
|
var priv2 = new PrivateKey(config);
|
||||||
var priv3 = new PrivateKey(config);
|
var priv3 = new PrivateKey(config);
|
||||||
var ts = Date.now();
|
var ts = Date.now();
|
||||||
var isChange = 0;
|
|
||||||
var index = 0;
|
|
||||||
var pkr = createPKR([priv, priv2, priv3]);
|
var pkr = createPKR([priv, priv2, priv3]);
|
||||||
var opts = {
|
var opts = {
|
||||||
remainderOut: {
|
remainderOut: {
|
||||||
|
@ -573,8 +564,6 @@ describe('TxProposals model', function() {
|
||||||
networkName: config.networkName,
|
networkName: config.networkName,
|
||||||
});
|
});
|
||||||
var ts = Date.now();
|
var ts = Date.now();
|
||||||
var isChange = 0;
|
|
||||||
var index = 0;
|
|
||||||
|
|
||||||
unspentTest[0].address = pkr.getAddress(index, isChange).toString();
|
unspentTest[0].address = pkr.getAddress(index, isChange).toString();
|
||||||
unspentTest[0].scriptPubKey = pkr.getScriptPubKeyHex(index, isChange);
|
unspentTest[0].scriptPubKey = pkr.getScriptPubKeyHex(index, isChange);
|
||||||
|
|
Loading…
Reference in New Issue