assert the fee calculation is correct
This commit is contained in:
parent
876a241e0c
commit
9ee115b030
2 changed files with 18 additions and 19 deletions
3
test/fixtures/psbt.json
vendored
3
test/fixtures/psbt.json
vendored
|
@ -464,7 +464,8 @@
|
|||
"nonExistantIndex": 42
|
||||
},
|
||||
"getFeeRate": {
|
||||
"psbt": "cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAEAuwIAAAABqtc5MQGL0l+ErkALaISL4J23BurCrBgpi6vucatlb4sAAAAASEcwRAIgWPb8fGoz4bMVSNSByCbAFb0wE1qtQs1neQ2rZtKtJDsCIEoc7SYExnNbY5PltBaR3XiwDwxZQvufdRhW+qk4FX26Af7///8CgPD6AgAAAAAXqRQPuUY0IWlrgsgzryQceMF9295JNIfQ8gonAQAAABepFCnKdPigj4GZlCgYXJe12FLkBj9hh2UAAAAiAgKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgf0cwRAIgdAGK1BgAl7hzMjwAFXILNoTMgSOJEEjn282bVa1nnJkCIHPTabdA4+tT3O+jOCPIBwUUylWn3ZVE8VfBZ5EyYRGMASICAtq2H/SaFNtqfQKwzR+7ePxLGDErW05U2uTbovv+9TbXSDBFAiEA9hA4swjcHahlo0hSdG8BV3KTQgjG0kRUOTzZm98iF3cCIAVuZ1pnWm0KArhbFOXikHTYolqbV2C+ooFvZhkQoAbqAQEDBAEAAAABBEdSIQKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgfyEC2rYf9JoU22p9ArDNH7t4/EsYMStbTlTa5Nui+/71NtdSriIGApWDvzmuCmCXR60Zmt3WNPphCFWdbFzTm0whg/GrluB/ENkMak8AAACAAAAAgAAAAIAiBgLath/0mhTban0CsM0fu3j8SxgxK1tOVNrk26L7/vU21xDZDGpPAAAAgAAAAIABAACAAAEBIADC6wsAAAAAF6kUt/X69A49QKWkWbHbNTXyty+pIeiHIgIDCJ3BDHrG21T5EymvYXMz2ziM6tDCMfcjN50bmQMLAtxHMEQCIGLrelVhB6fHP0WsSrWh3d9vcHX7EnWWmn84Pv/3hLyyAiAMBdu3Rw2/LwhVfdNWxzJcHtMJE+mWzThAlF2xIijaXwEiAgI63ZBPPW3PWd25BrDe4jUpt/+57VDl6GFRkmhgIh8Oc0cwRAIgZfRbpZmLWaJ//hp77QFq8fH5DVSzqo90UKpfVqJRA70CIH9yRwOtHtuWaAsoS1bU/8uI9/t1nqu+CKow8puFE4PSAQEDBAEAAAABBCIAIIwjUxc3Q7WV37Sge3K6jkLjeX2nTof+fZ10l+OyAokDAQVHUiEDCJ3BDHrG21T5EymvYXMz2ziM6tDCMfcjN50bmQMLAtwhAjrdkE89bc9Z3bkGsN7iNSm3/7ntUOXoYVGSaGAiHw5zUq4iBgI63ZBPPW3PWd25BrDe4jUpt/+57VDl6GFRkmhgIh8OcxDZDGpPAAAAgAAAAIADAACAIgYDCJ3BDHrG21T5EymvYXMz2ziM6tDCMfcjN50bmQMLAtwQ2QxqTwAAAIAAAACAAgAAgAAiAgOppMN/WZbTqiXbrGtXCvBlA5RJKUJGCzVHU+2e7KWHcRDZDGpPAAAAgAAAAIAEAACAACICAn9jmXV9Lv9VoTatAsaEsYOLZVbl8bazQoKpS2tQBRCWENkMak8AAACAAAAAgAUAAIAA"
|
||||
"psbt": "cHNidP8BAJoCAAAAAljoeiG1ba8MI76OcHBFbDNvfLqlyHV5JPVFiHuyq911AAAAAAD/////g40EJ9DsZQpoqka7CwmK6kQiwHGyyng1Kgd5WdB86h0BAAAAAP////8CcKrwCAAAAAAWABTYXCtx0AYLCcmIauuBXlCZHdoSTQDh9QUAAAAAFgAUAK6pouXw+HaliN9VRuh0LR2HAI8AAAAAAAEAuwIAAAABqtc5MQGL0l+ErkALaISL4J23BurCrBgpi6vucatlb4sAAAAASEcwRAIgWPb8fGoz4bMVSNSByCbAFb0wE1qtQs1neQ2rZtKtJDsCIEoc7SYExnNbY5PltBaR3XiwDwxZQvufdRhW+qk4FX26Af7///8CgPD6AgAAAAAXqRQPuUY0IWlrgsgzryQceMF9295JNIfQ8gonAQAAABepFCnKdPigj4GZlCgYXJe12FLkBj9hh2UAAAAiAgKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgf0cwRAIgdAGK1BgAl7hzMjwAFXILNoTMgSOJEEjn282bVa1nnJkCIHPTabdA4+tT3O+jOCPIBwUUylWn3ZVE8VfBZ5EyYRGMASICAtq2H/SaFNtqfQKwzR+7ePxLGDErW05U2uTbovv+9TbXSDBFAiEA9hA4swjcHahlo0hSdG8BV3KTQgjG0kRUOTzZm98iF3cCIAVuZ1pnWm0KArhbFOXikHTYolqbV2C+ooFvZhkQoAbqAQEDBAEAAAABBEdSIQKVg785rgpgl0etGZrd1jT6YQhVnWxc05tMIYPxq5bgfyEC2rYf9JoU22p9ArDNH7t4/EsYMStbTlTa5Nui+/71NtdSriIGApWDvzmuCmCXR60Zmt3WNPphCFWdbFzTm0whg/GrluB/ENkMak8AAACAAAAAgAAAAIAiBgLath/0mhTban0CsM0fu3j8SxgxK1tOVNrk26L7/vU21xDZDGpPAAAAgAAAAIABAACAAAEBIADC6wsAAAAAF6kUt/X69A49QKWkWbHbNTXyty+pIeiHIgIDCJ3BDHrG21T5EymvYXMz2ziM6tDCMfcjN50bmQMLAtxHMEQCIGLrelVhB6fHP0WsSrWh3d9vcHX7EnWWmn84Pv/3hLyyAiAMBdu3Rw2/LwhVfdNWxzJcHtMJE+mWzThAlF2xIijaXwEiAgI63ZBPPW3PWd25BrDe4jUpt/+57VDl6GFRkmhgIh8Oc0cwRAIgZfRbpZmLWaJ//hp77QFq8fH5DVSzqo90UKpfVqJRA70CIH9yRwOtHtuWaAsoS1bU/8uI9/t1nqu+CKow8puFE4PSAQEDBAEAAAABBCIAIIwjUxc3Q7WV37Sge3K6jkLjeX2nTof+fZ10l+OyAokDAQVHUiEDCJ3BDHrG21T5EymvYXMz2ziM6tDCMfcjN50bmQMLAtwhAjrdkE89bc9Z3bkGsN7iNSm3/7ntUOXoYVGSaGAiHw5zUq4iBgI63ZBPPW3PWd25BrDe4jUpt/+57VDl6GFRkmhgIh8OcxDZDGpPAAAAgAAAAIADAACAIgYDCJ3BDHrG21T5EymvYXMz2ziM6tDCMfcjN50bmQMLAtwQ2QxqTwAAAIAAAACAAgAAgAAiAgOppMN/WZbTqiXbrGtXCvBlA5RJKUJGCzVHU+2e7KWHcRDZDGpPAAAAgAAAAIAEAACAACICAn9jmXV9Lv9VoTatAsaEsYOLZVbl8bazQoKpS2tQBRCWENkMak8AAACAAAAAgAUAAIAA",
|
||||
"fee": 21
|
||||
},
|
||||
"cache": {
|
||||
"nonWitnessUtxo": {
|
||||
|
|
34
test/psbt.js
34
test/psbt.js
|
@ -97,22 +97,22 @@ describe(`Psbt`, () => {
|
|||
fixtures.bip174.signer.forEach(f => {
|
||||
it('Signs PSBT to the expected result', () => {
|
||||
const psbt = Psbt.fromBase64(f.psbt)
|
||||
|
||||
|
||||
f.keys.forEach(({inputToSign, WIF}) => {
|
||||
const keyPair = ECPair.fromWIF(WIF, NETWORKS.testnet);
|
||||
psbt.signInput(inputToSign, keyPair);
|
||||
})
|
||||
|
||||
|
||||
assert.strictEqual(psbt.toBase64(), f.result)
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
fixtures.bip174.combiner.forEach(f => {
|
||||
it('Combines two PSBTs to the expected result', () => {
|
||||
const psbts = f.psbts.map(psbt => Psbt.fromBase64(psbt))
|
||||
|
||||
|
||||
psbts[0].combine(psbts[1])
|
||||
|
||||
|
||||
// Produces a different Base64 string due to implemetation specific key-value ordering.
|
||||
// That means this test will fail:
|
||||
// assert.strictEqual(psbts[0].toBase64(), f.result)
|
||||
|
@ -120,41 +120,41 @@ describe(`Psbt`, () => {
|
|||
assert.deepStrictEqual(psbts[0], Psbt.fromBase64(f.result))
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
fixtures.bip174.finalizer.forEach(f => {
|
||||
it("Finalizes inputs and gives the expected PSBT", () => {
|
||||
const psbt = Psbt.fromBase64(f.psbt)
|
||||
|
||||
|
||||
psbt.finalizeAllInputs()
|
||||
|
||||
|
||||
assert.strictEqual(psbt.toBase64(), f.result)
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
fixtures.bip174.extractor.forEach(f => {
|
||||
it('Extracts the expected transaction from a PSBT', () => {
|
||||
const psbt1 = Psbt.fromBase64(f.psbt)
|
||||
const transaction1 = psbt1.extractTransaction(true).toHex()
|
||||
|
||||
|
||||
const psbt2 = Psbt.fromBase64(f.psbt)
|
||||
const transaction2 = psbt2.extractTransaction().toHex()
|
||||
|
||||
|
||||
assert.strictEqual(transaction1, transaction2)
|
||||
assert.strictEqual(transaction1, f.transaction)
|
||||
|
||||
|
||||
const psbt3 = Psbt.fromBase64(f.psbt)
|
||||
delete psbt3.inputs[0].finalScriptSig
|
||||
delete psbt3.inputs[0].finalScriptWitness
|
||||
assert.throws(() => {
|
||||
psbt3.extractTransaction()
|
||||
}, new RegExp('Not finalized'))
|
||||
|
||||
|
||||
const psbt4 = Psbt.fromBase64(f.psbt)
|
||||
psbt4.setMaximumFeeRate(1)
|
||||
assert.throws(() => {
|
||||
psbt4.extractTransaction()
|
||||
}, new RegExp('Warning: You are paying around [\\d.]+ in fees'))
|
||||
|
||||
|
||||
const psbt5 = Psbt.fromBase64(f.psbt)
|
||||
psbt5.extractTransaction(true)
|
||||
const fr1 = psbt5.getFeeRate()
|
||||
|
@ -426,9 +426,7 @@ describe(`Psbt`, () => {
|
|||
|
||||
psbt.finalizeAllInputs()
|
||||
|
||||
assert.doesNotThrow(() => {
|
||||
psbt.getFeeRate()
|
||||
})
|
||||
assert.strictEqual(psbt.getFeeRate(), f.fee)
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -516,4 +514,4 @@ describe(`Psbt`, () => {
|
|||
assert.ok(psbt.inputs[index].nonWitnessUtxo.equals(value))
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Add table
Reference in a new issue