tests: add failing test for #633
This commit is contained in:
parent
b3fd50ffd6
commit
76c7c77311
2 changed files with 59 additions and 15 deletions
25
test/fixtures/transaction_builder.json
vendored
25
test/fixtures/transaction_builder.json
vendored
|
@ -633,7 +633,7 @@
|
|||
{
|
||||
"description": "Incomplete transaction w/ prevTxScript defined",
|
||||
"exception": "Not enough signatures provided",
|
||||
"alwaysThrows": true,
|
||||
"incomplete": true,
|
||||
"inputs": [
|
||||
{
|
||||
"txId": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
|
@ -658,6 +658,29 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "Duplicate transaction outs",
|
||||
"exception": "Duplicate TxOut: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff:0",
|
||||
"incomplete": true,
|
||||
"inputs": [
|
||||
{
|
||||
"txId": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"vout": 0,
|
||||
"signs": []
|
||||
},
|
||||
{
|
||||
"txId": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"vout": 0,
|
||||
"signs": []
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"script": "OP_DUP OP_HASH160 aa4d7985c57e011a8b3dd8e0e5a73aaef41629c5 OP_EQUALVERIFY OP_CHECKSIG",
|
||||
"value": 1000
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "Complete transaction w/ non-standard inputs",
|
||||
"exception": "nonstandard not supported",
|
||||
|
|
|
@ -285,32 +285,53 @@ describe('TransactionBuilder', function () {
|
|||
it('builds "' + f.description + '"', function () {
|
||||
var txb = construct(f)
|
||||
var tx = txb.build()
|
||||
|
||||
assert.strictEqual(tx.toHex(), f.txHex)
|
||||
})
|
||||
})
|
||||
|
||||
// TODO: remove duplicate test code
|
||||
fixtures.invalid.build.forEach(function (f) {
|
||||
describe('for ' + (f.description || f.exception), function () {
|
||||
var txb
|
||||
|
||||
beforeEach(function () {
|
||||
if (f.txHex) {
|
||||
txb = TransactionBuilder.fromTransaction(Transaction.fromHex(f.txHex))
|
||||
} else {
|
||||
txb = construct(f)
|
||||
}
|
||||
})
|
||||
|
||||
it('throws ' + f.exception, function () {
|
||||
assert.throws(function () {
|
||||
var txb
|
||||
if (f.txHex) {
|
||||
txb = TransactionBuilder.fromTransaction(Transaction.fromHex(f.txHex))
|
||||
} else {
|
||||
txb = construct(f)
|
||||
}
|
||||
|
||||
txb.build()
|
||||
}, new RegExp(f.exception))
|
||||
})
|
||||
|
||||
if (f.alwaysThrows) return
|
||||
it("doesn't throw if building incomplete", function () {
|
||||
txb.buildIncomplete()
|
||||
})
|
||||
// if throws on incomplete too, enforce that
|
||||
if (f.incomplete) {
|
||||
it('throws ' + f.exception, function () {
|
||||
assert.throws(function () {
|
||||
var txb
|
||||
if (f.txHex) {
|
||||
txb = TransactionBuilder.fromTransaction(Transaction.fromHex(f.txHex))
|
||||
} else {
|
||||
txb = construct(f)
|
||||
}
|
||||
|
||||
txb.buildIncomplete()
|
||||
}, new RegExp(f.exception))
|
||||
})
|
||||
} else {
|
||||
it('does not throw if buildIncomplete', function () {
|
||||
var txb
|
||||
if (f.txHex) {
|
||||
txb = TransactionBuilder.fromTransaction(Transaction.fromHex(f.txHex))
|
||||
} else {
|
||||
txb = construct(f)
|
||||
}
|
||||
|
||||
txb.buildIncomplete()
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Add table
Reference in a new issue