Browse Source

sign tx

hk-custom-address
Wei Lu 11 years ago
parent
commit
913b48e87f
  1. 3
      package.json
  2. 3
      src/wallet.js
  3. 37
      test/wallet.js

3
package.json

@ -18,7 +18,8 @@
"mocha": "1.18.2",
"istanbul": "0.1.30",
"uglify-js": "2.4.13",
"node-browserify": "https://github.com/substack/node-browserify/tarball/master"
"node-browserify": "https://github.com/substack/node-browserify/tarball/master",
"sinon": "^1.9.0"
},
"testling": {
"browsers": [

3
src/wallet.js

@ -201,7 +201,8 @@ var Wallet = function (seed, options) {
break;
}
// TODO: sign tx
this.sign(tx)
return tx
}

37
test/wallet.js

@ -13,6 +13,8 @@ var fixtureTxes = require('./fixtures/mainnet_tx')
var fixtureTx1Hex = fixtureTxes.prevTx
var fixtureTx2Hex = fixtureTxes.tx
var sinon = require('sinon')
describe('Wallet', function() {
var seed, wallet;
beforeEach(function(){
@ -318,37 +320,38 @@ describe('Wallet', function() {
})
describe('createTx', function(){
var to, value, prevTx;
var to, value;
var address1, address2;
beforeEach(function(){
to = '15mMHKL96tWAUtqF3tbVf99Z8arcmnJrr3'
value = 500000
// generate 2 addresses
wallet.generateAddress()
wallet.generateAddress()
address1 = wallet.generateAddress()
address2 = wallet.generateAddress()
// set up 3 utxo
utxo = [
{
"hash": fakeTxHash(1),
"outputIndex": 0,
"scriptPubKey": scriptPubKeyFor(wallet.addresses[0], 300000),
"address" : wallet.addresses[0],
"scriptPubKey": scriptPubKeyFor(address1, 300000),
"address" : address1,
"value": 400000 // not enough for value
},
{
"hash": fakeTxHash(2),
"outputIndex": 1,
"scriptPubKey": scriptPubKeyFor(wallet.addresses[0], 500000),
"address" : wallet.addresses[0],
"scriptPubKey": scriptPubKeyFor(address1, 500000),
"address" : address1,
"value": 500000 // enough for only value
},
{
"hash": fakeTxHash(3),
"outputIndex": 0,
"scriptPubKey": scriptPubKeyFor(wallet.addresses[1], 520000),
"address" : wallet.addresses[1],
"scriptPubKey": scriptPubKeyFor(address2, 520000),
"address" : address2,
"value": 520000 // enough for value and fee
}
]
@ -422,6 +425,22 @@ describe('Wallet', function() {
})
})
})
describe('signing', function(){
afterEach(function(){
Transaction.prototype.sign.restore()
})
it('signes the inputs with respective keys', function(){
var fee = 30000
sinon.stub(Transaction.prototype, "sign")
var tx = wallet.createTx(to, value, fee)
assert(Transaction.prototype.sign.calledWith(0, wallet.getPrivateKeyForAddress(address2)))
assert(Transaction.prototype.sign.calledWith(1, wallet.getPrivateKeyForAddress(address1)))
})
})
})
function assertEqual(obj1, obj2){

Loading…
Cancel
Save