fix broadcasting new proposals

This commit is contained in:
Ivan Socolsky 2016-01-29 10:51:06 -03:00
parent 8cf56c2a3d
commit 23cddbe47f
3 changed files with 233 additions and 163 deletions

View File

@ -209,6 +209,10 @@ TxProposal.prototype.getBitcoreTx = function() {
return t;
};
TxProposal.prototype.getNetworkName = function() {
return this.network;
};
TxProposal.prototype.getRawTx = function() {
var t = this.getBitcoreTx();

View File

@ -468,4 +468,15 @@ helpers.createAddresses = function(server, wallet, main, change, cb) {
});
};
helpers.createAndPublishTx = function(server, txOpts, signingKey, cb) {
server.createTx(txOpts, function(err, txp) {
should.not.exist(err);
var publishOpts = helpers.getProposalSignatureOpts(txp, signingKey);
server.publishTx(publishOpts, function(err) {
should.not.exist(err);
return cb(txp);
});
});
};
module.exports = helpers;

View File

@ -3429,6 +3429,8 @@ describe('Wallet service', function() {
describe('#broadcastTx & #broadcastRawTx', function() {
var server, wallet, txpid, txid;
describe('Legacy', function() {
beforeEach(function(done) {
helpers.createAndJoinWallet(1, 1, function(s, w) {
server = s;
@ -3547,10 +3549,6 @@ describe('Wallet service', function() {
});
});
it('should fail to brodcast a not yet accepted tx', function(done) {
helpers.stubBroadcast();
var txOpts = helpers.createSimpleProposalOpts('18PzpUFkFZE8zKWUPvfykkTxmB9oMR8qP7', 9, TestData.copayers[0].privKey_1H_0, {
@ -3633,6 +3631,63 @@ describe('Wallet service', function() {
});
});
describe('New', function() {
beforeEach(function(done) {
helpers.createAndJoinWallet(1, 1, function(s, w) {
server = s;
wallet = w;
helpers.stubUtxos(server, wallet, [10, 10], function() {
var txOpts = {
outputs: [{
toAddress: '18PzpUFkFZE8zKWUPvfykkTxmB9oMR8qP7',
amount: 9e8,
}],
message: 'some message',
};
helpers.createAndPublishTx(server, txOpts, TestData.copayers[0].privKey_1H_0, function(txp) {
should.exist(txp);
var signatures = helpers.clientSign(txp, TestData.copayers[0].xPrivKey_44H_0H_0H);
server.signTx({
txProposalId: txp.id,
signatures: signatures,
}, function(err, txp) {
should.not.exist(err);
should.exist(txp);
txp.isAccepted().should.be.true;
txp.isBroadcasted().should.be.false;
txid = txp.txid;
txpid = txp.id;
done();
});
});
});
});
});
it('should broadcast a tx', function(done) {
var clock = sinon.useFakeTimers(1234000, 'Date');
helpers.stubBroadcast();
server.broadcastTx({
txProposalId: txpid
}, function(err) {
should.not.exist(err);
server.getTx({
txProposalId: txpid
}, function(err, txp) {
should.not.exist(err);
should.not.exist(txp.raw);
txp.txid.should.equal(txid);
txp.isBroadcasted().should.be.true;
txp.broadcastedOn.should.equal(1234);
clock.restore();
done();
});
});
});
});
});
describe('Tx proposal workflow', function() {
var server, wallet;
beforeEach(function(done) {