Skip to content

Commit a3b559c

Browse files
test: added test for disabled wallet
Divided tests in rpc_signmessage.py into 2 files wallet_signmessagewithaddress.py and rpc_signmessagewithprivkey.py, latter one can run even when wallet is disabled.
1 parent 9948f11 commit a3b559c

File tree

3 files changed

+52
-23
lines changed

3 files changed

+52
-23
lines changed

test/functional/rpc_signmessage.py renamed to test/functional/rpc_signmessagewithprivkey.py

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,18 @@
22
# Copyright (c) 2016-2019 The Bitcoin Core developers
33
# Distributed under the MIT software license, see the accompanying
44
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
5-
"""Test RPC commands for signing and verifying messages."""
5+
"""Test RPC commands for signing messages with private key."""
66

77
from test_framework.test_framework import BitcoinTestFramework
88
from test_framework.util import (
99
assert_equal,
1010
assert_raises_rpc_error,
1111
)
1212

13-
class SignMessagesTest(BitcoinTestFramework):
13+
class SignMessagesWithPrivTest(BitcoinTestFramework):
1414
def set_test_params(self):
1515
self.setup_clean_chain = True
1616
self.num_nodes = 1
17-
self.extra_args = [["-addresstype=legacy"]]
18-
19-
def skip_test_if_missing_module(self):
20-
self.skip_if_no_wallet()
2117

2218
def run_test(self):
2319
message = 'This is just a test message'
@@ -30,33 +26,20 @@ def run_test(self):
3026
assert_equal(expected_signature, signature)
3127
assert self.nodes[0].verifymessage(address, signature, message)
3228

33-
self.log.info('test signing with an address with wallet')
34-
address = self.nodes[0].getnewaddress()
35-
signature = self.nodes[0].signmessage(address, message)
36-
assert self.nodes[0].verifymessage(address, signature, message)
37-
38-
self.log.info('test verifying with another address should not work')
39-
other_address = self.nodes[0].getnewaddress()
40-
other_signature = self.nodes[0].signmessage(other_address, message)
41-
assert not self.nodes[0].verifymessage(other_address, signature, message)
42-
assert not self.nodes[0].verifymessage(address, other_signature, message)
43-
4429
self.log.info('test parameter validity and error codes')
45-
# signmessage(withprivkey) have two required parameters
30+
# signmessagewithprivkey has two required parameters
4631
for num_params in [0, 1, 3, 4, 5]:
4732
param_list = ["dummy"]*num_params
4833
assert_raises_rpc_error(-1, "signmessagewithprivkey", self.nodes[0].signmessagewithprivkey, *param_list)
49-
assert_raises_rpc_error(-1, "signmessage", self.nodes[0].signmessage, *param_list)
5034
# verifymessage has three required parameters
5135
for num_params in [0, 1, 2, 4, 5]:
5236
param_list = ["dummy"]*num_params
5337
assert_raises_rpc_error(-1, "verifymessage", self.nodes[0].verifymessage, *param_list)
5438
# invalid key or address provided
5539
assert_raises_rpc_error(-5, "Invalid private key", self.nodes[0].signmessagewithprivkey, "invalid_key", message)
56-
assert_raises_rpc_error(-5, "Invalid address", self.nodes[0].signmessage, "invalid_addr", message)
5740
assert_raises_rpc_error(-5, "Invalid address", self.nodes[0].verifymessage, "invalid_addr", signature, message)
5841
# malformed signature provided
59-
assert_raises_rpc_error(-3, "Malformed base64 encoding", self.nodes[0].verifymessage, self.nodes[0].getnewaddress(), "invalid_sig", message)
42+
assert_raises_rpc_error(-3, "Malformed base64 encoding", self.nodes[0].verifymessage, 'mpLQjfK79b7CCV4VMJWEWAj5Mpx8Up5zxB', "invalid_sig", message)
6043

6144
if __name__ == '__main__':
62-
SignMessagesTest().main()
45+
SignMessagesWithPrivTest().main()

test/functional/test_runner.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,8 @@
225225
'wallet_importprunedfunds.py --descriptors',
226226
'p2p_leak_tx.py',
227227
'p2p_eviction.py',
228-
'rpc_signmessage.py',
228+
'wallet_signmessagewithaddress.py',
229+
'rpc_signmessagewithprivkey.py',
229230
'rpc_generateblock.py',
230231
'rpc_generate.py',
231232
'wallet_balance.py --legacy-wallet',
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/usr/bin/env python3
2+
# Copyright (c) 2016-2019 The Bitcoin Core developers
3+
# Distributed under the MIT software license, see the accompanying
4+
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
5+
"""Test Wallet commands for signing and verifying messages."""
6+
7+
from test_framework.test_framework import BitcoinTestFramework
8+
from test_framework.util import (
9+
assert_raises_rpc_error,
10+
)
11+
12+
class SignMessagesWithAddressTest(BitcoinTestFramework):
13+
def set_test_params(self):
14+
self.setup_clean_chain = True
15+
self.num_nodes = 1
16+
self.extra_args = [["-addresstype=legacy"]]
17+
18+
def skip_test_if_missing_module(self):
19+
self.skip_if_no_wallet()
20+
21+
def run_test(self):
22+
message = 'This is just a test message'
23+
24+
self.log.info('test signing with an address with wallet')
25+
address = self.nodes[0].getnewaddress()
26+
signature = self.nodes[0].signmessage(address, message)
27+
assert self.nodes[0].verifymessage(address, signature, message)
28+
29+
self.log.info('test verifying with another address should not work')
30+
other_address = self.nodes[0].getnewaddress()
31+
other_signature = self.nodes[0].signmessage(other_address, message)
32+
assert not self.nodes[0].verifymessage(other_address, signature, message)
33+
assert not self.nodes[0].verifymessage(address, other_signature, message)
34+
35+
self.log.info('test parameter validity and error codes')
36+
# signmessage has two required parameters
37+
for num_params in [0, 1, 3, 4, 5]:
38+
param_list = ["dummy"]*num_params
39+
assert_raises_rpc_error(-1, "signmessage", self.nodes[0].signmessage, *param_list)
40+
# invalid key or address provided
41+
assert_raises_rpc_error(-5, "Invalid address", self.nodes[0].signmessage, "invalid_addr", message)
42+
43+
44+
if __name__ == '__main__':
45+
SignMessagesWithAddressTest().main()

0 commit comments

Comments
 (0)