@@ -78,10 +78,9 @@ def run_test(self):
78
78
79
79
self .log .info ("Running tests" )
80
80
dest_address = peer_node .getnewaddress ()
81
- self .test_invalid_parameters (rbf_node , dest_address )
82
81
for mode in ["default" , "fee_rate" , BTC_MODE , SAT_MODE ]:
83
82
test_simple_bumpfee_succeeds (self , mode , rbf_node , peer_node , dest_address )
84
- test_feerate_args ( self , rbf_node , peer_node , dest_address )
83
+ self . test_invalid_parameters ( rbf_node , peer_node , dest_address )
85
84
test_segwit_bumpfee_succeeds (self , rbf_node , dest_address )
86
85
test_nonrbf_bumpfee_fails (self , peer_node , dest_address )
87
86
test_notmine_bumpfee_fails (self , rbf_node , peer_node , dest_address )
@@ -100,28 +99,56 @@ def run_test(self):
100
99
test_small_output_with_feerate_succeeds (self , rbf_node , dest_address )
101
100
test_no_more_inputs_fails (self , rbf_node , dest_address )
102
101
103
- def test_invalid_parameters (self , node , dest_address ):
104
- txid = spend_one_input (node , dest_address )
105
- # invalid estimate mode
106
- assert_raises_rpc_error (- 8 , "Invalid estimate_mode parameter" , node .bumpfee , txid , {
107
- "estimate_mode" : "moo" ,
108
- })
109
- assert_raises_rpc_error (- 3 , "Expected type string" , node .bumpfee , txid , {
110
- "estimate_mode" : 38 ,
111
- })
112
- assert_raises_rpc_error (- 3 , "Expected type string" , node .bumpfee , txid , {
113
- "estimate_mode" : {
114
- "foo" : "bar" ,
115
- },
116
- })
117
- assert_raises_rpc_error (- 8 , "Invalid estimate_mode parameter" , node .bumpfee , txid , {
118
- "estimate_mode" : Decimal ("3.141592" ),
119
- })
120
- # confTarget and conf_target
121
- assert_raises_rpc_error (- 8 , "confTarget and conf_target options should not both be set" , node .bumpfee , txid , {
122
- "confTarget" : 123 ,
123
- "conf_target" : 456 ,
124
- })
102
+ def test_invalid_parameters (self , rbf_node , peer_node , dest_address ):
103
+ self .log .info ('Test invalid parameters' )
104
+ rbfid = spend_one_input (rbf_node , dest_address )
105
+ self .sync_mempools ((rbf_node , peer_node ))
106
+ assert rbfid in rbf_node .getrawmempool () and rbfid in peer_node .getrawmempool ()
107
+
108
+ assert_raises_rpc_error (- 3 , "Unexpected key totalFee" , rbf_node .bumpfee , rbfid , {"totalFee" : NORMAL })
109
+ assert_raises_rpc_error (- 4 , "is too high (cannot be higher than" , rbf_node .bumpfee , rbfid , {"fee_rate" : TOO_HIGH })
110
+
111
+ # For each fee mode, bumping to just above minrelay should fail to increase the total fee enough.
112
+ for options in [{"fee_rate" : INSUFFICIENT }, {"conf_target" : INSUFFICIENT , "estimate_mode" : BTC_MODE }, {"conf_target" : 1 , "estimate_mode" : SAT_MODE }]:
113
+ assert_raises_rpc_error (- 8 , "Insufficient total fee" , rbf_node .bumpfee , rbfid , options )
114
+
115
+ self .log .info ("Test explicit fee rate raises RPC error if estimate_mode is passed without a conf_target" )
116
+ for unit , fee_rate in {"SAT/B" : 100 , "BTC/KB" : NORMAL }.items ():
117
+ assert_raises_rpc_error (- 8 , "Selected estimate_mode {} requires a fee rate to be specified in conf_target" .format (unit ),
118
+ rbf_node .bumpfee , rbfid , {"fee_rate" : fee_rate , "estimate_mode" : unit })
119
+
120
+ self .log .info ("Test explicit fee rate raises RPC error if both fee_rate and conf_target are passed" )
121
+ error_both = "Cannot specify both conf_target and fee_rate. Please provide either a confirmation " \
122
+ "target in blocks for automatic fee estimation, or an explicit fee rate."
123
+ assert_raises_rpc_error (- 8 , error_both , rbf_node .bumpfee , rbfid , {"conf_target" : NORMAL , "fee_rate" : NORMAL })
124
+
125
+ self .log .info ("Test invalid conf_target settings" )
126
+ assert_raises_rpc_error (- 8 , "confTarget and conf_target options should not both be set" ,
127
+ rbf_node .bumpfee , rbfid , {"confTarget" : 123 , "conf_target" : 456 })
128
+ for field in ["confTarget" , "conf_target" ]:
129
+ assert_raises_rpc_error (- 4 , "is too high (cannot be higher than -maxtxfee" ,
130
+ lambda : rbf_node .bumpfee (rbfid , {"estimate_mode" : BTC_MODE , "conf_target" : 2009 }))
131
+ assert_raises_rpc_error (- 4 , "is too high (cannot be higher than -maxtxfee" ,
132
+ lambda : rbf_node .bumpfee (rbfid , {"estimate_mode" : SAT_MODE , "conf_target" : 2009 * 10000 }))
133
+
134
+ self .log .info ("Test invalid estimate_mode settings" )
135
+ for k , v in {"number" : 42 , "object" : {"foo" : "bar" }}.items ():
136
+ assert_raises_rpc_error (- 3 , "Expected type string for estimate_mode, got {}" .format (k ),
137
+ lambda : rbf_node .bumpfee (rbfid , {"estimate_mode" : v , "fee_rate" : NORMAL }))
138
+ for mode in ["foo" , Decimal ("3.141592" )]:
139
+ assert_raises_rpc_error (- 8 , "Invalid estimate_mode parameter" ,
140
+ lambda : rbf_node .bumpfee (rbfid , {"estimate_mode" : mode , "fee_rate" : NORMAL }))
141
+
142
+ self .log .info ("Test invalid fee_rate settings" )
143
+ for mode in ["unset" , "economical" , "conservative" , BTC_MODE , SAT_MODE ]:
144
+ self .log .debug ("{}" .format (mode ))
145
+ for k , v in {"string" : "" , "object" : {"foo" : "bar" }}.items ():
146
+ assert_raises_rpc_error (- 3 , "Expected type number for fee_rate, got {}" .format (k ),
147
+ lambda : rbf_node .bumpfee (rbfid , {"estimate_mode" : mode , "fee_rate" : v }))
148
+ assert_raises_rpc_error (- 3 , "Amount out of range" ,
149
+ lambda : rbf_node .bumpfee (rbfid , {"estimate_mode" : mode , "fee_rate" : - 1 }))
150
+ assert_raises_rpc_error (- 8 , "Invalid fee_rate 0.00000000 BTC/kB (must be greater than 0)" ,
151
+ lambda : rbf_node .bumpfee (rbfid , {"estimate_mode" : mode , "fee_rate" : 0 }))
125
152
self .clear_mempool ()
126
153
127
154
@@ -167,57 +194,6 @@ def test_simple_bumpfee_succeeds(self, mode, rbf_node, peer_node, dest_address):
167
194
self .clear_mempool ()
168
195
169
196
170
- def test_feerate_args (self , rbf_node , peer_node , dest_address ):
171
- self .log .info ('Test fee_rate args' )
172
- rbfid = spend_one_input (rbf_node , dest_address )
173
- self .sync_mempools ((rbf_node , peer_node ))
174
- assert rbfid in rbf_node .getrawmempool () and rbfid in peer_node .getrawmempool ()
175
-
176
- assert_raises_rpc_error (- 3 , "Unexpected key totalFee" , rbf_node .bumpfee , rbfid , {"totalFee" : NORMAL })
177
-
178
- # For each fee mode, bumping to just above minrelay should fail to increase the total fee enough.
179
- for options in [{"fee_rate" : INSUFFICIENT }, {"conf_target" : INSUFFICIENT , "estimate_mode" : BTC_MODE }, {"conf_target" : 1 , "estimate_mode" : SAT_MODE }]:
180
- assert_raises_rpc_error (- 8 , "Insufficient total fee" , rbf_node .bumpfee , rbfid , options )
181
- assert_raises_rpc_error (- 3 , "Amount out of range" , rbf_node .bumpfee , rbfid , {"fee_rate" : - 1 })
182
- assert_raises_rpc_error (- 4 , "is too high (cannot be higher than" , rbf_node .bumpfee , rbfid , {"fee_rate" : TOO_HIGH })
183
-
184
- self .log .info ("Test explicit fee rate raises RPC error if estimate_mode is passed without a conf_target" )
185
- for unit , fee_rate in {"SAT/B" : 10 , "BTC/KB" : NORMAL }.items ():
186
- assert_raises_rpc_error (- 8 , "Selected estimate_mode {} requires a fee rate to be specified in conf_target" .format (unit ),
187
- rbf_node .bumpfee , rbfid , {"fee_rate" : fee_rate , "estimate_mode" : unit })
188
-
189
- self .log .info ("Test explicit fee rate raises RPC error if both fee_rate and conf_target are passed" )
190
- error_both = "Cannot specify both conf_target and fee_rate. Please provide either a confirmation " \
191
- "target in blocks for automatic fee estimation, or an explicit fee rate."
192
- assert_raises_rpc_error (- 8 , error_both , rbf_node .bumpfee , rbfid , {"conf_target" : NORMAL , "fee_rate" : NORMAL })
193
-
194
- self .log .info ("Test invalid conf_target settings" )
195
- for field in ["confTarget" , "conf_target" ]:
196
- assert_raises_rpc_error (- 8 , error_both , rbf_node .bumpfee , rbfid , {field : 1 , "fee_rate" : NORMAL })
197
- too_high = "is too high (cannot be higher than -maxtxfee"
198
- assert_raises_rpc_error (- 4 , too_high , lambda : rbf_node .bumpfee (rbfid , {"estimate_mode" : BTC_MODE , "conf_target" : 2009 }))
199
- assert_raises_rpc_error (- 4 , too_high , lambda : rbf_node .bumpfee (rbfid , {"estimate_mode" : SAT_MODE , "conf_target" : 2009 * 10000 }))
200
-
201
- self .log .info ("Test invalid estimate_mode settings" )
202
- for k , v in {"number" : 42 , "object" : {"foo" : "bar" }}.items ():
203
- assert_raises_rpc_error (- 3 , "Expected type string for estimate_mode, got {}" .format (k ),
204
- lambda : rbf_node .bumpfee (rbfid , {"estimate_mode" : v , "fee_rate" : NORMAL }))
205
- for mode in ["foo" , Decimal ("3.141592" )]:
206
- assert_raises_rpc_error (- 8 , "Invalid estimate_mode parameter" ,
207
- lambda : rbf_node .bumpfee (rbfid , {"estimate_mode" : mode , "fee_rate" : NORMAL }))
208
-
209
- self .log .info ("Test invalid fee_rate settings" )
210
- for mode in ["unset" , "economical" , "conservative" , BTC_MODE , SAT_MODE ]:
211
- self .log .debug ("{}" .format (mode ))
212
- for k , v in {"string" : "" , "object" : {"foo" : "bar" }}.items ():
213
- assert_raises_rpc_error (- 3 , "Expected type number for fee_rate, got {}" .format (k ),
214
- lambda : rbf_node .bumpfee (rbfid , {"estimate_mode" : mode , "fee_rate" : v }))
215
- assert_raises_rpc_error (- 3 , "Amount out of range" ,
216
- lambda : rbf_node .bumpfee (rbfid , {"estimate_mode" : mode , "fee_rate" : - 1 }))
217
- assert_raises_rpc_error (- 8 , "Invalid fee_rate 0.00000000 BTC/kB (must be greater than 0)" ,
218
- lambda : rbf_node .bumpfee (rbfid , {"estimate_mode" : mode , "fee_rate" : 0 }))
219
- self .clear_mempool ()
220
-
221
197
def test_segwit_bumpfee_succeeds (self , rbf_node , dest_address ):
222
198
self .log .info ('Test that segwit-sourcing bumpfee works' )
223
199
# Create a transaction with segwit output, then create an RBF transaction
0 commit comments