reorganize integration tests
This commit is contained in:
parent
67bea09fe8
commit
5ca8663c96
|
@ -269,6 +269,83 @@ describe('Wallet service', function() {
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('Address derivation strategy', function() {
|
||||||
|
var server;
|
||||||
|
beforeEach(function() {
|
||||||
|
server = WalletService.getInstance();
|
||||||
|
});
|
||||||
|
it('should use BIP44 & P2PKH for 1-of-1 wallet if supported', function(done) {
|
||||||
|
var walletOpts = {
|
||||||
|
name: 'my wallet',
|
||||||
|
m: 1,
|
||||||
|
n: 1,
|
||||||
|
pubKey: TestData.keyPair.pub,
|
||||||
|
};
|
||||||
|
server.createWallet(walletOpts, function(err, wid) {
|
||||||
|
should.not.exist(err);
|
||||||
|
server.storage.fetchWallet(wid, function(err, wallet) {
|
||||||
|
should.not.exist(err);
|
||||||
|
wallet.derivationStrategy.should.equal('BIP44');
|
||||||
|
wallet.addressType.should.equal('P2PKH');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it('should use BIP45 & P2SH for 1-of-1 wallet if not supported', function(done) {
|
||||||
|
var walletOpts = {
|
||||||
|
name: 'my wallet',
|
||||||
|
m: 1,
|
||||||
|
n: 1,
|
||||||
|
pubKey: TestData.keyPair.pub,
|
||||||
|
supportBIP44AndP2PKH: false,
|
||||||
|
};
|
||||||
|
server.createWallet(walletOpts, function(err, wid) {
|
||||||
|
should.not.exist(err);
|
||||||
|
server.storage.fetchWallet(wid, function(err, wallet) {
|
||||||
|
should.not.exist(err);
|
||||||
|
wallet.derivationStrategy.should.equal('BIP45');
|
||||||
|
wallet.addressType.should.equal('P2SH');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it('should use BIP44 & P2SH for shared wallet if supported', function(done) {
|
||||||
|
var walletOpts = {
|
||||||
|
name: 'my wallet',
|
||||||
|
m: 2,
|
||||||
|
n: 3,
|
||||||
|
pubKey: TestData.keyPair.pub,
|
||||||
|
};
|
||||||
|
server.createWallet(walletOpts, function(err, wid) {
|
||||||
|
should.not.exist(err);
|
||||||
|
server.storage.fetchWallet(wid, function(err, wallet) {
|
||||||
|
should.not.exist(err);
|
||||||
|
wallet.derivationStrategy.should.equal('BIP44');
|
||||||
|
wallet.addressType.should.equal('P2SH');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it('should use BIP45 & P2SH for shared wallet if supported', function(done) {
|
||||||
|
var walletOpts = {
|
||||||
|
name: 'my wallet',
|
||||||
|
m: 2,
|
||||||
|
n: 3,
|
||||||
|
pubKey: TestData.keyPair.pub,
|
||||||
|
supportBIP44AndP2PKH: false,
|
||||||
|
};
|
||||||
|
server.createWallet(walletOpts, function(err, wid) {
|
||||||
|
should.not.exist(err);
|
||||||
|
server.storage.fetchWallet(wid, function(err, wallet) {
|
||||||
|
should.not.exist(err);
|
||||||
|
wallet.derivationStrategy.should.equal('BIP45');
|
||||||
|
wallet.addressType.should.equal('P2SH');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('#joinWallet', function() {
|
describe('#joinWallet', function() {
|
||||||
|
@ -619,79 +696,133 @@ describe('Wallet service', function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Address derivation strategy', function() {
|
describe('#removeWallet', function() {
|
||||||
var server;
|
var server, wallet, clock;
|
||||||
beforeEach(function() {
|
|
||||||
server = WalletService.getInstance();
|
beforeEach(function(done) {
|
||||||
});
|
helpers.createAndJoinWallet(1, 1, function(s, w) {
|
||||||
it('should use BIP44 & P2PKH for 1-of-1 wallet if supported', function(done) {
|
server = s;
|
||||||
var walletOpts = {
|
wallet = w;
|
||||||
name: 'my wallet',
|
|
||||||
m: 1,
|
helpers.stubUtxos(server, wallet, _.range(2), function() {
|
||||||
n: 1,
|
var txOpts = {
|
||||||
pubKey: TestData.keyPair.pub,
|
toAddress: '18PzpUFkFZE8zKWUPvfykkTxmB9oMR8qP7',
|
||||||
};
|
amount: helpers.toSatoshi(0.1),
|
||||||
server.createWallet(walletOpts, function(err, wid) {
|
};
|
||||||
should.not.exist(err);
|
async.eachSeries(_.range(2), function(i, next) {
|
||||||
server.storage.fetchWallet(wid, function(err, wallet) {
|
server.createTxLegacy(txOpts, function(err, tx) {
|
||||||
should.not.exist(err);
|
next();
|
||||||
wallet.derivationStrategy.should.equal('BIP44');
|
});
|
||||||
wallet.addressType.should.equal('P2PKH');
|
}, done);
|
||||||
done();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('should use BIP45 & P2SH for 1-of-1 wallet if not supported', function(done) {
|
|
||||||
var walletOpts = {
|
it('should delete a wallet', function(done) {
|
||||||
name: 'my wallet',
|
server.removeWallet({}, function(err) {
|
||||||
m: 1,
|
|
||||||
n: 1,
|
|
||||||
pubKey: TestData.keyPair.pub,
|
|
||||||
supportBIP44AndP2PKH: false,
|
|
||||||
};
|
|
||||||
server.createWallet(walletOpts, function(err, wid) {
|
|
||||||
should.not.exist(err);
|
should.not.exist(err);
|
||||||
server.storage.fetchWallet(wid, function(err, wallet) {
|
server.getWallet({}, function(err, w) {
|
||||||
should.not.exist(err);
|
should.exist(err);
|
||||||
wallet.derivationStrategy.should.equal('BIP45');
|
err.code.should.equal('WALLET_NOT_FOUND');
|
||||||
wallet.addressType.should.equal('P2SH');
|
should.not.exist(w);
|
||||||
done();
|
async.parallel([
|
||||||
|
|
||||||
|
function(next) {
|
||||||
|
server.storage.fetchAddresses(wallet.id, function(err, items) {
|
||||||
|
items.length.should.equal(0);
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
function(next) {
|
||||||
|
server.storage.fetchTxs(wallet.id, {}, function(err, items) {
|
||||||
|
items.length.should.equal(0);
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
function(next) {
|
||||||
|
server.storage.fetchNotifications(wallet.id, null, 0, function(err, items) {
|
||||||
|
items.length.should.equal(0);
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
], function(err) {
|
||||||
|
should.not.exist(err);
|
||||||
|
done();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('should use BIP44 & P2SH for shared wallet if supported', function(done) {
|
|
||||||
var walletOpts = {
|
// creates 2 wallet, and deletes only 1.
|
||||||
name: 'my wallet',
|
it('should delete a wallet, and only that wallet', function(done) {
|
||||||
m: 2,
|
var server2, wallet2;
|
||||||
n: 3,
|
async.series([
|
||||||
pubKey: TestData.keyPair.pub,
|
|
||||||
};
|
function(next) {
|
||||||
server.createWallet(walletOpts, function(err, wid) {
|
helpers.createAndJoinWallet(1, 1, {
|
||||||
|
offset: 1
|
||||||
|
}, function(s, w) {
|
||||||
|
server2 = s;
|
||||||
|
wallet2 = w;
|
||||||
|
|
||||||
|
helpers.stubUtxos(server2, wallet2, _.range(1, 3), function() {
|
||||||
|
var txOpts = helpers.createSimpleProposalOpts('18PzpUFkFZE8zKWUPvfykkTxmB9oMR8qP7', 0.1, TestData.copayers[1].privKey_1H_0, {
|
||||||
|
message: 'some message'
|
||||||
|
});
|
||||||
|
async.eachSeries(_.range(2), function(i, next) {
|
||||||
|
server2.createTxLegacy(txOpts, function(err, tx) {
|
||||||
|
should.not.exist(err);
|
||||||
|
next(err);
|
||||||
|
});
|
||||||
|
}, next);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
function(next) {
|
||||||
|
server.removeWallet({}, next);
|
||||||
|
},
|
||||||
|
function(next) {
|
||||||
|
server.getWallet({}, function(err, wallet) {
|
||||||
|
should.exist(err);
|
||||||
|
err.code.should.equal('WALLET_NOT_FOUND');
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
function(next) {
|
||||||
|
server2.getWallet({}, function(err, wallet) {
|
||||||
|
should.not.exist(err);
|
||||||
|
should.exist(wallet);
|
||||||
|
wallet.id.should.equal(wallet2.id);
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
function(next) {
|
||||||
|
server2.getMainAddresses({}, function(err, addresses) {
|
||||||
|
should.not.exist(err);
|
||||||
|
should.exist(addresses);
|
||||||
|
addresses.length.should.above(0);
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
function(next) {
|
||||||
|
server2.getTxs({}, function(err, txs) {
|
||||||
|
should.not.exist(err);
|
||||||
|
should.exist(txs);
|
||||||
|
txs.length.should.equal(2);
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
function(next) {
|
||||||
|
server2.getNotifications({}, function(err, notifications) {
|
||||||
|
should.not.exist(err);
|
||||||
|
should.exist(notifications);
|
||||||
|
notifications.length.should.above(0);
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
], function(err) {
|
||||||
should.not.exist(err);
|
should.not.exist(err);
|
||||||
server.storage.fetchWallet(wid, function(err, wallet) {
|
done();
|
||||||
should.not.exist(err);
|
|
||||||
wallet.derivationStrategy.should.equal('BIP44');
|
|
||||||
wallet.addressType.should.equal('P2SH');
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
it('should use BIP45 & P2SH for shared wallet if supported', function(done) {
|
|
||||||
var walletOpts = {
|
|
||||||
name: 'my wallet',
|
|
||||||
m: 2,
|
|
||||||
n: 3,
|
|
||||||
pubKey: TestData.keyPair.pub,
|
|
||||||
supportBIP44AndP2PKH: false,
|
|
||||||
};
|
|
||||||
server.createWallet(walletOpts, function(err, wid) {
|
|
||||||
should.not.exist(err);
|
|
||||||
server.storage.fetchWallet(wid, function(err, wallet) {
|
|
||||||
should.not.exist(err);
|
|
||||||
wallet.derivationStrategy.should.equal('BIP45');
|
|
||||||
wallet.addressType.should.equal('P2SH');
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1433,7 +1564,6 @@ describe('Wallet service', function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -3668,20 +3798,6 @@ describe('Wallet service', function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('#createTx backoff time', function() {
|
|
||||||
var server, wallet, txid;
|
|
||||||
|
|
||||||
beforeEach(function(done) {
|
|
||||||
helpers.createAndJoinWallet(2, 2, function(s, w) {
|
|
||||||
server = s;
|
|
||||||
wallet = w;
|
|
||||||
helpers.stubUtxos(server, wallet, _.range(2, 6), function() {
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
it('should ignore small utxos if fee is higher', function(done) {
|
it('should ignore small utxos if fee is higher', function(done) {
|
||||||
helpers.stubUtxos(server, wallet, [].concat(_.times(10, function() {
|
helpers.stubUtxos(server, wallet, [].concat(_.times(10, function() {
|
||||||
return '30bit';
|
return '30bit';
|
||||||
|
@ -5119,137 +5235,6 @@ describe('Wallet service', function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('#removeWallet', function() {
|
|
||||||
var server, wallet, clock;
|
|
||||||
|
|
||||||
beforeEach(function(done) {
|
|
||||||
helpers.createAndJoinWallet(1, 1, function(s, w) {
|
|
||||||
server = s;
|
|
||||||
wallet = w;
|
|
||||||
|
|
||||||
helpers.stubUtxos(server, wallet, _.range(2), function() {
|
|
||||||
var txOpts = {
|
|
||||||
toAddress: '18PzpUFkFZE8zKWUPvfykkTxmB9oMR8qP7',
|
|
||||||
amount: helpers.toSatoshi(0.1),
|
|
||||||
};
|
|
||||||
async.eachSeries(_.range(2), function(i, next) {
|
|
||||||
server.createTxLegacy(txOpts, function(err, tx) {
|
|
||||||
next();
|
|
||||||
});
|
|
||||||
}, done);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should delete a wallet', function(done) {
|
|
||||||
server.removeWallet({}, function(err) {
|
|
||||||
should.not.exist(err);
|
|
||||||
server.getWallet({}, function(err, w) {
|
|
||||||
should.exist(err);
|
|
||||||
err.code.should.equal('WALLET_NOT_FOUND');
|
|
||||||
should.not.exist(w);
|
|
||||||
async.parallel([
|
|
||||||
|
|
||||||
function(next) {
|
|
||||||
server.storage.fetchAddresses(wallet.id, function(err, items) {
|
|
||||||
items.length.should.equal(0);
|
|
||||||
next();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
function(next) {
|
|
||||||
server.storage.fetchTxs(wallet.id, {}, function(err, items) {
|
|
||||||
items.length.should.equal(0);
|
|
||||||
next();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
function(next) {
|
|
||||||
server.storage.fetchNotifications(wallet.id, null, 0, function(err, items) {
|
|
||||||
items.length.should.equal(0);
|
|
||||||
next();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
], function(err) {
|
|
||||||
should.not.exist(err);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// creates 2 wallet, and deletes only 1.
|
|
||||||
it('should delete a wallet, and only that wallet', function(done) {
|
|
||||||
var server2, wallet2;
|
|
||||||
async.series([
|
|
||||||
|
|
||||||
function(next) {
|
|
||||||
helpers.createAndJoinWallet(1, 1, {
|
|
||||||
offset: 1
|
|
||||||
}, function(s, w) {
|
|
||||||
server2 = s;
|
|
||||||
wallet2 = w;
|
|
||||||
|
|
||||||
helpers.stubUtxos(server2, wallet2, _.range(1, 3), function() {
|
|
||||||
var txOpts = helpers.createSimpleProposalOpts('18PzpUFkFZE8zKWUPvfykkTxmB9oMR8qP7', 0.1, TestData.copayers[1].privKey_1H_0, {
|
|
||||||
message: 'some message'
|
|
||||||
});
|
|
||||||
async.eachSeries(_.range(2), function(i, next) {
|
|
||||||
server2.createTxLegacy(txOpts, function(err, tx) {
|
|
||||||
should.not.exist(err);
|
|
||||||
next(err);
|
|
||||||
});
|
|
||||||
}, next);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
function(next) {
|
|
||||||
server.removeWallet({}, next);
|
|
||||||
},
|
|
||||||
function(next) {
|
|
||||||
server.getWallet({}, function(err, wallet) {
|
|
||||||
should.exist(err);
|
|
||||||
err.code.should.equal('WALLET_NOT_FOUND');
|
|
||||||
next();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
function(next) {
|
|
||||||
server2.getWallet({}, function(err, wallet) {
|
|
||||||
should.not.exist(err);
|
|
||||||
should.exist(wallet);
|
|
||||||
wallet.id.should.equal(wallet2.id);
|
|
||||||
next();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
function(next) {
|
|
||||||
server2.getMainAddresses({}, function(err, addresses) {
|
|
||||||
should.not.exist(err);
|
|
||||||
should.exist(addresses);
|
|
||||||
addresses.length.should.above(0);
|
|
||||||
next();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
function(next) {
|
|
||||||
server2.getTxs({}, function(err, txs) {
|
|
||||||
should.not.exist(err);
|
|
||||||
should.exist(txs);
|
|
||||||
txs.length.should.equal(2);
|
|
||||||
next();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
function(next) {
|
|
||||||
server2.getNotifications({}, function(err, notifications) {
|
|
||||||
should.not.exist(err);
|
|
||||||
should.exist(notifications);
|
|
||||||
notifications.length.should.above(0);
|
|
||||||
next();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
], function(err) {
|
|
||||||
should.not.exist(err);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('#removePendingTx', function() {
|
describe('#removePendingTx', function() {
|
||||||
var server, wallet, txp;
|
var server, wallet, txp;
|
||||||
beforeEach(function(done) {
|
beforeEach(function(done) {
|
||||||
|
@ -6390,7 +6375,7 @@ describe('Wallet service', function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Subscribe/unsubscribe', function() {
|
describe('Push notifications', function() {
|
||||||
var server, wallet;
|
var server, wallet;
|
||||||
beforeEach(function(done) {
|
beforeEach(function(done) {
|
||||||
helpers.createAndJoinWallet(2, 3, function(s, w) {
|
helpers.createAndJoinWallet(2, 3, function(s, w) {
|
||||||
|
|
Loading…
Reference in New Issue