From 8f53fc8bc153cb485d2687bd9e6b0b3b02861b01 Mon Sep 17 00:00:00 2001 From: Braydon Fuller Date: Mon, 16 Nov 2015 14:11:24 -0500 Subject: [PATCH] Transaction: Added tests for roundtrip with signatures. --- test/transaction/transaction.js | 47 +++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/test/transaction/transaction.js b/test/transaction/transaction.js index 4788c28..f62417c 100644 --- a/test/transaction/transaction.js +++ b/test/transaction/transaction.js @@ -79,6 +79,33 @@ describe('Transaction', function() { a.should.deep.equal(b); }); + it('serialize to Object with signatures roundtrip', function() { + var tx = new Transaction() + .from(simpleUtxoWith100000Satoshis) + .to([{address: toAddress, satoshis: 50000}]) + .change(changeAddress) + .sign(privateKey); + + var txData = JSON.stringify(tx); + var tx2 = new Transaction(JSON.parse(txData)); + var txData2 = JSON.stringify(tx2); + txData.should.equal(txData2); + }); + + it('serialize to Object with p2sh signatures roundtrip', function() { + var tx = new Transaction() + .from(p2shUtxoWith1BTC, [p2shPublicKey1, p2shPublicKey2, p2shPublicKey3], 2) + .to([{address: toAddress, satoshis: 50000}]) + .change(changeAddress) + .sign(p2shPrivateKey1) + .sign(p2shPrivateKey2); + + var txData = JSON.stringify(tx); + var tx2 = new Transaction(JSON.parse(txData)); + var tx2Data = JSON.stringify(tx2); + txData.should.equal(tx2Data); + }); + it('constructor returns a shallow copy of another transaction', function() { var transaction = new Transaction(tx_1_hex); var copy = new Transaction(transaction); @@ -159,6 +186,26 @@ describe('Transaction', function() { var fourth = 25e6; var half = 5e7; + var p2shPrivateKey1 = PrivateKey.fromWIF('cNuW8LX2oeQXfKKCGxajGvqwhCgBtacwTQqiCGHzzKfmpHGY4TE9'); + var p2shPublicKey1 = p2shPrivateKey1.toPublicKey(); + var p2shPrivateKey2 = PrivateKey.fromWIF('cTtLHt4mv6zuJytSnM7Vd6NLxyNauYLMxD818sBC8PJ1UPiVTRSs'); + var p2shPublicKey2 = p2shPrivateKey2.toPublicKey(); + var p2shPrivateKey3 = PrivateKey.fromWIF('cQFMZ5gP9CJtUZPc9X3yFae89qaiQLspnftyxxLGvVNvM6tS6mYY'); + var p2shPublicKey3 = p2shPrivateKey3.toPublicKey(); + + var p2shAddress = Address.createMultisig([ + p2shPublicKey1, + p2shPublicKey2, + p2shPublicKey3 + ], 2, 'testnet'); + var p2shUtxoWith1BTC = { + address: p2shAddress.toString(), + txId: 'a477af6b2667c29670467e4e0728b685ee07b240235771862318e29ddbe58458', + outputIndex: 0, + script: Script(p2shAddress).toString(), + satoshis: 1e8 + }; + describe('adding inputs', function() { it('adds just once one utxo', function() {