Fix absurd fee bug reported in #3281, with tests
This commit is contained in:
@@ -463,6 +463,62 @@ class WalletTest (BitcoinTestFramework):
|
||||
|
||||
assert_equal("not an integer" in errorString, True);
|
||||
|
||||
myzaddr = self.nodes[0].z_getnewaddress()
|
||||
recipients = [ {"address": myzaddr, "amount": Decimal('0.0') } ]
|
||||
errorString = ''
|
||||
|
||||
# Make sure that amount=0 transactions can use the default fee
|
||||
# without triggering "absurd fee" errors
|
||||
try:
|
||||
myopid = self.nodes[0].z_sendmany(myzaddr, recipients)
|
||||
assert(myopid)
|
||||
except JSONRPCException,e:
|
||||
errorString = e.error['message']
|
||||
print errorString
|
||||
assert(False)
|
||||
|
||||
# This fee is larger than the default fee and since amount=0
|
||||
# it should trigger error
|
||||
fee = Decimal('0.1')
|
||||
recipients = [ {"address": myzaddr, "amount": Decimal('0.0') } ]
|
||||
minconf = 1
|
||||
errorString = ''
|
||||
|
||||
try:
|
||||
myopid = self.nodes[0].z_sendmany(myzaddr, recipients, minconf, fee)
|
||||
except JSONRPCException,e:
|
||||
errorString = e.error['message']
|
||||
assert('Small transaction amount' in errorString)
|
||||
|
||||
#### This fee is less than default and greater than amount, but still valid
|
||||
fee = Decimal('0.0000001')
|
||||
recipients = [ {"address": myzaddr, "amount": Decimal('0.00000001') } ]
|
||||
minconf = 1
|
||||
errorString = ''
|
||||
|
||||
try:
|
||||
myopid = self.nodes[0].z_sendmany(myzaddr, recipients, minconf, fee)
|
||||
assert(myopid)
|
||||
except JSONRPCException,e:
|
||||
errorString = e.error['message']
|
||||
print errorString
|
||||
assert(False)
|
||||
|
||||
### Make sure amount=0, fee=0 transaction are valid to add to mempool
|
||||
# though miners decide whether to add to a block
|
||||
fee = Decimal('0.0')
|
||||
minconf = 1
|
||||
recipients = [ {"address": myzaddr, "amount": Decimal('0.0') } ]
|
||||
errorString = ''
|
||||
|
||||
try:
|
||||
myopid = self.nodes[0].z_sendmany(myzaddr, recipients, minconf, fee)
|
||||
assert(myopid)
|
||||
except JSONRPCException,e:
|
||||
errorString = e.error['message']
|
||||
print errorString
|
||||
assert(False)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
WalletTest ().main ()
|
||||
|
||||
Reference in New Issue
Block a user