Wallet/test/test.txproposal.js
Matias Alejo Garcia f1645945d3 add sign in block
2014-04-14 14:15:09 -03:00

147 lines
4 KiB
JavaScript

'use strict';
var chai = chai || require('chai');
var should = chai.should();
var bitcore = bitcore || require('bitcore');
var Transaction = bitcore.Transaction;
var buffertools = bitcore.buffertools;
var WalletKey = bitcore.WalletKey;
var Key = bitcore.Key;
var BIP32 = bitcore.BIP32;
var bignum = bitcore.bignum;
var networks = bitcore.networks;
var copay = copay || require('../copay');
var fakeStorage = copay.FakeStorage;
var PrivateKey = copay.PrivateKey || require('../js/models/PrivateKey');
var TxProposals = copay.TxProposals || require('../js/models/TxProposal');
var PublicKeyRing = (typeof process.versions === 'undefined') ? copay.PublicKeyRing :
require('soop').load('../js/models/PublicKeyRing', {Storage: fakeStorage});
var config = {
networkName:'livenet',
};
var unspentTest = [
{
"address": "dummy",
"scriptPubKey": "dummy",
"txid": "2ac165fa7a3a2b535d106a0041c7568d03b531e58aeccdd3199d7289ab12cfc1",
"vout": 1,
"amount": 10,
"confirmations":7
}
];
var createW = function (bip32s) {
var w = new PublicKeyRing(config);
should.exist(w);
for(var i=0; i<5; i++) {
if (bip32s) {
var b=bip32s[i];
w.addCopayer(b?b.extendedPublicKeyString():null);
}
else
w.addCopayer();
}
w.generateAddress(true);
w.generateAddress(true);
w.generateAddress(true);
w.generateAddress(false);
w.generateAddress(false);
return w;
};
describe('TxProposals model', function() {
it('should create an instance', function () {
var w = new TxProposals({
networkName: config.networkName
});
should.exist(w);
w.network.name.should.equal('livenet');
});
it('#create', function () {
var w = new TxProposals({
networkName: config.networkName,
publicKeyRing: createW(),
});
should.exist(w);
w.network.name.should.equal('livenet');
unspentTest[0].address = w.publicKeyRing.getAddress(1, true);
unspentTest[0].scriptPubKey = w.publicKeyRing.getRedeemScript(1, true).getBuffer();
var tx = w.create(
'15q6HKjWHAksHcH91JW23BJEuzZgFwydBt',
bignum('123456789'),
unspentTest
);
should.exist(tx);
tx.isComplete().should.equal(false);
});
it('#create. Signing with derivate keys', function () {
var priv = new PrivateKey(config);
var w = new TxProposals({
networkName: config.networkName,
publicKeyRing: createW([priv.getBIP32()]),
});
should.exist(w);
w.network.name.should.equal('livenet');
for (var isChange=0; isChange<2; isChange++) {
for (var index=0; index<3; index++) {
unspentTest[0].address = w.publicKeyRing.getAddress(index, isChange);
unspentTest[0].scriptPubKey = w.publicKeyRing.getRedeemScript(index, isChange).getBuffer();
var tx = w.create(
'15q6HKjWHAksHcH91JW23BJEuzZgFwydBt',
bignum('123456789'),
unspentTest,
[priv.get(index,isChange)]
);
should.exist(tx);
tx.isComplete().should.equal(false);
tx.countInputMissingSignatures(0).should.equal(2);
}
}
});
it('#create. Signing with derivate keys block', function () {
var priv = new PrivateKey(config);
var privs = priv.getAll(3,3);
var w = new TxProposals({
networkName: config.networkName,
publicKeyRing: createW([priv.getBIP32()]),
});
should.exist(w);
w.network.name.should.equal('livenet');
for (var isChange=0; isChange<2; isChange++) {
for (var index=0; index<3; index++) {
unspentTest[0].address = w.publicKeyRing.getAddress(index, isChange);
unspentTest[0].scriptPubKey = w.publicKeyRing.getRedeemScript(index, isChange).getBuffer();
var tx = w.create(
'15q6HKjWHAksHcH91JW23BJEuzZgFwydBt',
bignum('123456789'),
unspentTest,
privs
);
should.exist(tx);
tx.isComplete().should.equal(false);
tx.countInputMissingSignatures(0).should.equal(2);
}
}
});
});