add testcases to BCH/testnet support
This commit is contained in:
parent
267cfdba8a
commit
d4ef5345f6
|
@ -46,7 +46,6 @@ var config = {
|
|||
testnet: {
|
||||
provider: 'insight',
|
||||
url: 'https://test-insight.bitpay.com:443',
|
||||
// url: 'http://localhost:3001',
|
||||
// Multiple servers (in priority order)
|
||||
// url: ['http://a.b.c', 'https://test-insight.bitpay.com:443'],
|
||||
},
|
||||
|
@ -54,7 +53,9 @@ var config = {
|
|||
bch: {
|
||||
livenet: {
|
||||
provider: 'insight',
|
||||
url: 'https://cashexplorer.bitcoin.com',
|
||||
//url: 'https://cashexplorer.bitcoin.com',
|
||||
url: 'http://localhost:2001',
|
||||
translateAddresses: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
|
||||
a='bd0e9eed-4712-42e5-bb21-193cde4c9e21';
|
||||
// json support
|
||||
a='f42c8c47-0f7e-4cb0-9056-6c50bb821d7d';
|
||||
b= {'walletId':a};
|
||||
|
||||
db.addresses.remove(b);
|
||||
|
|
|
@ -185,6 +185,7 @@ helpers.createAndJoinWallet = function(m, n, opts, cb) {
|
|||
pubKey: TestData.keyPair.pub,
|
||||
singleAddress: !!opts.singleAddress,
|
||||
coin: opts.coin || 'btc',
|
||||
network: opts.network || 'livenet',
|
||||
};
|
||||
if (_.isBoolean(opts.supportBIP44AndP2PKH))
|
||||
walletOpts.supportBIP44AndP2PKH = opts.supportBIP44AndP2PKH;
|
||||
|
@ -194,11 +195,18 @@ helpers.createAndJoinWallet = function(m, n, opts, cb) {
|
|||
|
||||
async.each(_.range(n), function(i, cb) {
|
||||
var copayerData = TestData.copayers[i + offset];
|
||||
|
||||
|
||||
var pub = (_.isBoolean(opts.supportBIP44AndP2PKH) && !opts.supportBIP44AndP2PKH) ? copayerData.xPubKey_45H : copayerData.xPubKey_44H_0H_0H;
|
||||
|
||||
if (opts.network == 'testnet')
|
||||
pub = copayerData.xPubKey_44H_0H_0Ht;
|
||||
|
||||
var copayerOpts = helpers.getSignedCopayerOpts({
|
||||
walletId: walletId,
|
||||
coin: opts.coin,
|
||||
name: 'copayer ' + (i + 1),
|
||||
xPubKey: (_.isBoolean(opts.supportBIP44AndP2PKH) && !opts.supportBIP44AndP2PKH) ? copayerData.xPubKey_45H : copayerData.xPubKey_44H_0H_0H,
|
||||
xPubKey: pub,
|
||||
requestPubKey: copayerData.pubKey_1H_0,
|
||||
customData: 'custom data ' + (i + 1),
|
||||
});
|
||||
|
@ -206,6 +214,7 @@ helpers.createAndJoinWallet = function(m, n, opts, cb) {
|
|||
copayerOpts.supportBIP44AndP2PKH = opts.supportBIP44AndP2PKH;
|
||||
|
||||
server.joinWallet(copayerOpts, function(err, result) {
|
||||
if (err) console.log(err);
|
||||
should.not.exist(err);
|
||||
copayerIds.push(result.copayerId);
|
||||
return cb(err);
|
||||
|
|
|
@ -458,6 +458,7 @@ describe('Wallet service', function() {
|
|||
});
|
||||
});
|
||||
|
||||
|
||||
describe('Address derivation strategy', function() {
|
||||
var server;
|
||||
beforeEach(function() {
|
||||
|
@ -1249,7 +1250,7 @@ describe('Wallet service', function() {
|
|||
});
|
||||
});
|
||||
|
||||
it('should create address', function(done) {
|
||||
it('should create address ', function(done) {
|
||||
server.createAddress({}, function(err, address) {
|
||||
should.not.exist(err);
|
||||
should.exist(address);
|
||||
|
@ -1377,6 +1378,113 @@ describe('Wallet service', function() {
|
|||
});
|
||||
});
|
||||
|
||||
describe('shared wallets (BIP44/BCH)', function() {
|
||||
beforeEach(function(done) {
|
||||
helpers.createAndJoinWallet(2, 2, {
|
||||
coin: 'bch'
|
||||
}, function(s, w) {
|
||||
server = s;
|
||||
wallet = w;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should create address', function(done) {
|
||||
server.createAddress({}, function(err, address) {
|
||||
should.not.exist(err);
|
||||
should.exist(address);
|
||||
address.walletId.should.equal(wallet.id);
|
||||
address.network.should.equal('livenet');
|
||||
address.address.should.equal('HBf8isgS8EXG1r3X6GP89FmooUmiJ42wHS');
|
||||
address.isChange.should.be.false;
|
||||
address.path.should.equal('m/0/0');
|
||||
address.type.should.equal('P2SH');
|
||||
address.coin.should.equal('bch');
|
||||
server.getNotifications({}, function(err, notifications) {
|
||||
should.not.exist(err);
|
||||
var notif = _.find(notifications, {
|
||||
type: 'NewAddress'
|
||||
});
|
||||
should.exist(notif);
|
||||
notif.data.address.should.equal(address.address);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('should create many addresses on simultaneous requests', function(done) {
|
||||
var N = 5;
|
||||
async.mapSeries(_.range(N), function(i, cb) {
|
||||
server.createAddress({}, cb);
|
||||
}, function(err, addresses) {
|
||||
addresses.length.should.equal(N);
|
||||
_.each(_.range(N), function(i) {
|
||||
addresses[i].path.should.equal('m/0/' + i);
|
||||
});
|
||||
// No two identical addresses
|
||||
_.uniq(_.pluck(addresses, 'address')).length.should.equal(N);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should not create address if unable to store it', function(done) {
|
||||
sinon.stub(server.storage, 'storeAddressAndWallet').yields('dummy error');
|
||||
server.createAddress({}, function(err, address) {
|
||||
should.exist(err);
|
||||
should.not.exist(address);
|
||||
|
||||
server.getMainAddresses({}, function(err, addresses) {
|
||||
addresses.length.should.equal(0);
|
||||
|
||||
server.storage.storeAddressAndWallet.restore();
|
||||
server.createAddress({}, function(err, address) {
|
||||
should.not.exist(err);
|
||||
should.exist(address);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
describe('1-1 wallet (BIP44/BCH/Testnet)', function() {
|
||||
beforeEach(function(done) {
|
||||
helpers.createAndJoinWallet(1, 1, {
|
||||
coin: 'bch',
|
||||
network: 'testnet',
|
||||
}, function(s, w) {
|
||||
server = s;
|
||||
wallet = w;
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('should create address', function(done) {
|
||||
server.createAddress({}, function(err, address) {
|
||||
should.not.exist(err);
|
||||
should.exist(address);
|
||||
address.walletId.should.equal(wallet.id);
|
||||
address.network.should.equal('testnet');
|
||||
address.address.should.equal('mrM5kMkqZccK5MxZYSsM3SjqdMaNKLJgrJ');
|
||||
address.isChange.should.be.false;
|
||||
address.path.should.equal('m/0/0');
|
||||
address.type.should.equal('P2PKH');
|
||||
address.coin.should.equal('bch');
|
||||
server.getNotifications({}, function(err, notifications) {
|
||||
should.not.exist(err);
|
||||
var notif = _.find(notifications, {
|
||||
type: 'NewAddress'
|
||||
});
|
||||
should.exist(notif);
|
||||
notif.data.address.should.equal(address.address);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
describe('1-of-1 (BIP44 & P2PKH)', function() {
|
||||
beforeEach(function(done) {
|
||||
helpers.createAndJoinWallet(1, 1, function(s, w) {
|
||||
|
|
|
@ -13,6 +13,11 @@ var copayers = [{
|
|||
xPubKey_45H: 'xpub68pKcb8jHWqWuTgPz2czjFSJJBJTsTNdd87Mgh5bVz4sNFBJBus5KyptGBWgA4V6LGCi12s4Mw4S1JC2GkqX4NJ4kfQ47XqRZLbyM2DY9Jd',
|
||||
xPrivKey_44H_0H_0H: 'xprv9zWRZ7CXrC4z9xA9RRBFXohmPKbyCajWaCNTHPtwNeJwTnysHG5QK7WMqpNLVtvqGxts7WNcNtqBLfdaFdCGknDPXjLKt2E2BUrPaFDqrLh',
|
||||
xPubKey_44H_0H_0H: 'xpub6DVmxcjRgZdHNSEcXSiFtweVwMSTc3TMwRJ45nJYvyqvLbK1poPerupqh87rSoz27wvckb1CKnGZoLmLXSZyNGZtVd7neqSvdwJL6fceQpe',
|
||||
|
||||
|
||||
xPrivKey_44H_0H_0Ht: 'tprv8ZgxMBicQKsPcxUEtgtQ2wKpkmuNKS6R2w3UmFTUHHURv4PKGE2aGkkbQEcQs9gGsoW4zPr7VM98xdbjQuWc3cZ6bkEyKy1sywhV9gLUcUi',
|
||||
xPubKey_44H_0H_0Ht: 'tpubD6NzVbkrYhZ4WRW2nLYzSLywKoRJUmHKcEeG3mVmhZGpkYe5tcrATFNTaQRAWM3dzL2QyXoctpjkaAXruDXyc6xkF4EDGu3eQdwZXFzoFSW',
|
||||
|
||||
xPrivKey_1H: 'xprv9upyD5bqT9HBkWym7TvTH3njEzTnjrtkLB2sg3DD2CxxA5hZKGee1sYJUtD8C4QaeATLXQ33TirRzRhuTGDBA6XRoYDMwfXAj1KSmGyNBio',
|
||||
xPubKey_1H: 'xpub68pKcb8jHWqUy14EDVTTeBjTo2JH9KcbhPxUURcpaYVw2t2hroxtZfrnLBw1bWzBrHbEJA48QmZ8DB9gTvhphKSitC15SiYx9k2ncGh55Hq',
|
||||
privKey_1H_0: 'a710be25950738a7d13637e2e09affd7f579a3479fd7cc024bd9459f8fba6659',
|
||||
|
|
Loading…
Reference in New Issue