aboutsummaryrefslogtreecommitdiff
path: root/test/functional/rpc_bind.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/rpc_bind.py')
-rwxr-xr-xtest/functional/rpc_bind.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/functional/rpc_bind.py b/test/functional/rpc_bind.py
index 8c76c1f5f5..69afd45b9a 100755
--- a/test/functional/rpc_bind.py
+++ b/test/functional/rpc_bind.py
@@ -45,6 +45,19 @@ class RPCBindTest(BitcoinTestFramework):
assert_equal(set(get_bind_addrs(pid)), set(expected))
self.stop_nodes()
+ def run_invalid_bind_test(self, allow_ips, addresses):
+ '''
+ Attempt to start a node with requested rpcallowip and rpcbind
+ parameters, expecting that the node will fail.
+ '''
+ self.log.info(f'Invalid bind test for {addresses}')
+ base_args = ['-disablewallet', '-nolisten']
+ if allow_ips:
+ base_args += ['-rpcallowip=' + x for x in allow_ips]
+ init_error = 'Error: Invalid port specified in -rpcbind: '
+ for addr in addresses:
+ self.nodes[0].assert_start_raises_init_error(base_args + [f'-rpcbind={addr}'], init_error + f"'{addr}'")
+
def run_allowip_test(self, allow_ips, rpchost, rpcport):
'''
Start a node with rpcallow IP, and request getnetworkinfo
@@ -84,6 +97,10 @@ class RPCBindTest(BitcoinTestFramework):
if not self.options.run_nonloopback:
self._run_loopback_tests()
+ if self.options.run_ipv4:
+ self.run_invalid_bind_test(['127.0.0.1'], ['127.0.0.1:notaport', '127.0.0.1:-18443', '127.0.0.1:0', '127.0.0.1:65536'])
+ if self.options.run_ipv6:
+ self.run_invalid_bind_test(['[::1]'], ['[::1]:notaport', '[::1]:-18443', '[::1]:0', '[::1]:65536'])
if not self.options.run_ipv4 and not self.options.run_ipv6:
self._run_nonloopback_tests()