Skip to content

Commit b503327

Browse files
committed
test: type error and out of range fee rates where missing
1 parent c5fd434 commit b503327

File tree

3 files changed

+20
-4
lines changed

3 files changed

+20
-4
lines changed

test/functional/wallet_basic.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
)
1616
from test_framework.wallet_util import test_address
1717

18+
NOT_A_NUMBER_OR_STRING = "Amount is not a number or string"
1819
OUT_OF_RANGE = "Amount out of range"
1920

2021

@@ -277,6 +278,9 @@ def run_test(self):
277278
assert_raises_rpc_error(-3, msg, self.nodes[2].sendmany, amounts={address: 1.0}, fee_rate=invalid_value)
278279
# Test fee_rate out of range (negative number).
279280
assert_raises_rpc_error(-3, OUT_OF_RANGE, self.nodes[2].sendmany, amounts={address: 10}, fee_rate=-1)
281+
# Test type error.
282+
for invalid_value in [True, {"foo": "bar"}]:
283+
assert_raises_rpc_error(-3, NOT_A_NUMBER_OR_STRING, self.nodes[2].sendmany, amounts={address: 10}, fee_rate=invalid_value)
280284

281285
self.log.info("Test sendmany raises if an invalid conf_target or estimate_mode is passed")
282286
for target, mode in product([-1, 0, 1009], ["economical", "conservative"]):
@@ -467,6 +471,9 @@ def run_test(self):
467471
assert_raises_rpc_error(-3, msg, self.nodes[2].sendtoaddress, address=address, amount=1.0, fee_rate=invalid_value)
468472
# Test fee_rate out of range (negative number).
469473
assert_raises_rpc_error(-3, OUT_OF_RANGE, self.nodes[2].sendtoaddress, address=address, amount=1.0, fee_rate=-1)
474+
# Test type error.
475+
for invalid_value in [True, {"foo": "bar"}]:
476+
assert_raises_rpc_error(-3, NOT_A_NUMBER_OR_STRING, self.nodes[2].sendtoaddress, address=address, amount=1.0, fee_rate=invalid_value)
470477

471478
self.log.info("Test sendtoaddress raises if an invalid conf_target or estimate_mode is passed")
472479
for target, mode in product([-1, 0, 1009], ["economical", "conservative"]):

test/functional/wallet_bumpfee.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ def test_invalid_parameters(self, rbf_node, peer_node, dest_address):
122122
assert_raises_rpc_error(-3, msg, rbf_node.bumpfee, rbfid, {"fee_rate": invalid_value})
123123
# Test fee_rate out of range (negative number).
124124
assert_raises_rpc_error(-3, "Amount out of range", rbf_node.bumpfee, rbfid, {"fee_rate": -1})
125+
# Test type error.
125126
for value in [{"foo": "bar"}, True]:
126127
assert_raises_rpc_error(-3, "Amount is not a number or string", rbf_node.bumpfee, rbfid, {"fee_rate": value})
127128

test/functional/wallet_send.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -343,11 +343,10 @@ def run_test(self):
343343
self.test_send(from_wallet=w0, to_wallet=w1, amount=1, arg_conf_target=0.1, arg_estimate_mode=mode, expect_error=(-8, msg))
344344
assert_raises_rpc_error(-8, msg, w0.send, {w1.getnewaddress(): 1}, 0.1, mode)
345345

346-
for mode in ["economical", "conservative", "btc/kb", "sat/b"]:
347-
self.log.debug("{}".format(mode))
348-
for k, v in {"string": "true", "object": {"foo": "bar"}}.items():
346+
for mode in ["economical", "conservative"]:
347+
for k, v in {"string": "true", "bool": True, "object": {"foo": "bar"}}.items():
349348
self.test_send(from_wallet=w0, to_wallet=w1, amount=1, conf_target=v, estimate_mode=mode,
350-
expect_error=(-3, "Expected type number for conf_target, got {}".format(k)))
349+
expect_error=(-3, f"Expected type number for conf_target, got {k}"))
351350

352351
# Test setting explicit fee rate just below the minimum of 1 sat/vB.
353352
self.log.info("Explicit fee rate raises RPC error 'fee rate too low' if fee_rate of 0.99999999 is passed")
@@ -365,6 +364,15 @@ def run_test(self):
365364
for invalid_value in ["", 0.000000001, 1e-09, 1.111111111, 1111111111111111, "31.999999999999999999999"]:
366365
self.test_send(from_wallet=w0, to_wallet=w1, amount=1, fee_rate=invalid_value, expect_error=(-3, msg))
367366
self.test_send(from_wallet=w0, to_wallet=w1, amount=1, arg_fee_rate=invalid_value, expect_error=(-3, msg))
367+
# Test fee_rate out of range (negative number).
368+
msg = "Amount out of range"
369+
self.test_send(from_wallet=w0, to_wallet=w1, amount=1, fee_rate=-1, expect_error=(-3, msg))
370+
self.test_send(from_wallet=w0, to_wallet=w1, amount=1, arg_fee_rate=-1, expect_error=(-3, msg))
371+
# Test type error.
372+
msg = "Amount is not a number or string"
373+
for invalid_value in [True, {"foo": "bar"}]:
374+
self.test_send(from_wallet=w0, to_wallet=w1, amount=1, fee_rate=invalid_value, expect_error=(-3, msg))
375+
self.test_send(from_wallet=w0, to_wallet=w1, amount=1, arg_fee_rate=invalid_value, expect_error=(-3, msg))
368376

369377
# TODO: Return hex if fee rate is below -maxmempool
370378
# res = self.test_send(from_wallet=w0, to_wallet=w1, amount=1, conf_target=0.1, estimate_mode="sat/b", add_to_wallet=False)

0 commit comments

Comments
 (0)