Browse Source

[qa] fundrawtransaction: Create get_unspent()

0.13
MarcoFalke 9 years ago
parent
commit
fa324653ab
  1. 93
      qa/rpc-tests/fundrawtransaction.py

93
qa/rpc-tests/fundrawtransaction.py

@ -6,7 +6,14 @@
from test_framework.test_framework import BitcoinTestFramework from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import * from test_framework.util import *
# Create one-input, one-output, no-fee transaction:
def get_unspent(listunspent, amount):
for utx in listunspent:
if utx['amount'] == amount:
return utx
raise AssertionError('Could not find unspent with amount={}'.format(amount))
class RawTransactionsTest(BitcoinTestFramework): class RawTransactionsTest(BitcoinTestFramework):
def __init__(self): def __init__(self):
@ -71,7 +78,7 @@ class RawTransactionsTest(BitcoinTestFramework):
rawtxfund = self.nodes[2].fundrawtransaction(rawtx) rawtxfund = self.nodes[2].fundrawtransaction(rawtx)
fee = rawtxfund['fee'] fee = rawtxfund['fee']
dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex']) dec_tx = self.nodes[2].decoderawtransaction(rawtxfund['hex'])
assert(len(dec_tx['vin']) > 0) #test if we have enought inputs assert(len(dec_tx['vin']) > 0) #test that we have enough inputs
############################## ##############################
# simple test with two coins # # simple test with two coins #
@ -123,14 +130,7 @@ class RawTransactionsTest(BitcoinTestFramework):
######################################################################### #########################################################################
# test a fundrawtransaction with a VIN greater than the required amount # # test a fundrawtransaction with a VIN greater than the required amount #
######################################################################### #########################################################################
utx = False utx = get_unspent(self.nodes[2].listunspent(), 5)
listunspent = self.nodes[2].listunspent()
for aUtx in listunspent:
if aUtx['amount'] == 5.0:
utx = aUtx
break
assert(utx!=False)
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']}] inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']}]
outputs = { self.nodes[0].getnewaddress() : 1.0 } outputs = { self.nodes[0].getnewaddress() : 1.0 }
@ -151,14 +151,7 @@ class RawTransactionsTest(BitcoinTestFramework):
##################################################################### #####################################################################
# test a fundrawtransaction with which will not get a change output # # test a fundrawtransaction with which will not get a change output #
##################################################################### #####################################################################
utx = False utx = get_unspent(self.nodes[2].listunspent(), 5)
listunspent = self.nodes[2].listunspent()
for aUtx in listunspent:
if aUtx['amount'] == 5.0:
utx = aUtx
break
assert(utx!=False)
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']}] inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']}]
outputs = { self.nodes[0].getnewaddress() : Decimal(5.0) - fee - feeTolerance } outputs = { self.nodes[0].getnewaddress() : Decimal(5.0) - fee - feeTolerance }
@ -180,14 +173,7 @@ class RawTransactionsTest(BitcoinTestFramework):
#################################################### ####################################################
# test a fundrawtransaction with an invalid option # # test a fundrawtransaction with an invalid option #
#################################################### ####################################################
utx = False utx = get_unspent(self.nodes[2].listunspent(), 5)
listunspent = self.nodes[2].listunspent()
for aUtx in listunspent:
if aUtx['amount'] == 5.0:
utx = aUtx
break
assert_equal(utx!=False, True)
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']} ] inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']} ]
outputs = { self.nodes[0].getnewaddress() : Decimal(4.0) } outputs = { self.nodes[0].getnewaddress() : Decimal(4.0) }
@ -205,14 +191,7 @@ class RawTransactionsTest(BitcoinTestFramework):
############################################################ ############################################################
# test a fundrawtransaction with an invalid change address # # test a fundrawtransaction with an invalid change address #
############################################################ ############################################################
utx = False utx = get_unspent(self.nodes[2].listunspent(), 5)
listunspent = self.nodes[2].listunspent()
for aUtx in listunspent:
if aUtx['amount'] == 5.0:
utx = aUtx
break
assert_equal(utx!=False, True)
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']} ] inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']} ]
outputs = { self.nodes[0].getnewaddress() : Decimal(4.0) } outputs = { self.nodes[0].getnewaddress() : Decimal(4.0) }
@ -227,18 +206,10 @@ class RawTransactionsTest(BitcoinTestFramework):
assert("changeAddress must be a valid bitcoin address" in e.error['message']) assert("changeAddress must be a valid bitcoin address" in e.error['message'])
############################################################ ############################################################
# test a fundrawtransaction with a provided change address # # test a fundrawtransaction with a provided change address #
############################################################ ############################################################
utx = False utx = get_unspent(self.nodes[2].listunspent(), 5)
listunspent = self.nodes[2].listunspent()
for aUtx in listunspent:
if aUtx['amount'] == 5.0:
utx = aUtx
break
assert_equal(utx!=False, True)
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']} ] inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']} ]
outputs = { self.nodes[0].getnewaddress() : Decimal(4.0) } outputs = { self.nodes[0].getnewaddress() : Decimal(4.0) }
@ -259,18 +230,10 @@ class RawTransactionsTest(BitcoinTestFramework):
assert_equal(change, out['scriptPubKey']['addresses'][0]) assert_equal(change, out['scriptPubKey']['addresses'][0])
######################################################################### #########################################################################
# test a fundrawtransaction with a VIN smaller than the required amount # # test a fundrawtransaction with a VIN smaller than the required amount #
######################################################################### #########################################################################
utx = False utx = get_unspent(self.nodes[2].listunspent(), 1)
listunspent = self.nodes[2].listunspent()
for aUtx in listunspent:
if aUtx['amount'] == 1.0:
utx = aUtx
break
assert(utx!=False)
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']}] inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']}]
outputs = { self.nodes[0].getnewaddress() : 1.0 } outputs = { self.nodes[0].getnewaddress() : 1.0 }
@ -305,17 +268,8 @@ class RawTransactionsTest(BitcoinTestFramework):
########################################### ###########################################
# test a fundrawtransaction with two VINs # # test a fundrawtransaction with two VINs #
########################################### ###########################################
utx = False utx = get_unspent(self.nodes[2].listunspent(), 1)
utx2 = False utx2 = get_unspent(self.nodes[2].listunspent(), 5)
listunspent = self.nodes[2].listunspent()
for aUtx in listunspent:
if aUtx['amount'] == 1.0:
utx = aUtx
if aUtx['amount'] == 5.0:
utx2 = aUtx
assert(utx!=False)
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']},{'txid' : utx2['txid'], 'vout' : utx2['vout']} ] inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']},{'txid' : utx2['txid'], 'vout' : utx2['vout']} ]
outputs = { self.nodes[0].getnewaddress() : 6.0 } outputs = { self.nodes[0].getnewaddress() : 6.0 }
@ -347,17 +301,8 @@ class RawTransactionsTest(BitcoinTestFramework):
######################################################### #########################################################
# test a fundrawtransaction with two VINs and two vOUTs # # test a fundrawtransaction with two VINs and two vOUTs #
######################################################### #########################################################
utx = False utx = get_unspent(self.nodes[2].listunspent(), 1)
utx2 = False utx2 = get_unspent(self.nodes[2].listunspent(), 5)
listunspent = self.nodes[2].listunspent()
for aUtx in listunspent:
if aUtx['amount'] == 1.0:
utx = aUtx
if aUtx['amount'] == 5.0:
utx2 = aUtx
assert(utx!=False)
inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']},{'txid' : utx2['txid'], 'vout' : utx2['vout']} ] inputs = [ {'txid' : utx['txid'], 'vout' : utx['vout']},{'txid' : utx2['txid'], 'vout' : utx2['vout']} ]
outputs = { self.nodes[0].getnewaddress() : 6.0, self.nodes[0].getnewaddress() : 1.0 } outputs = { self.nodes[0].getnewaddress() : 6.0, self.nodes[0].getnewaddress() : 1.0 }

Loading…
Cancel
Save