@@ -23,6 +23,10 @@ def mock_signer_path(self):
23
23
path = os .path .join (os .path .dirname (os .path .realpath (__file__ )), 'mocks' , 'signer.py' )
24
24
return sys .executable + " " + path
25
25
26
+ def mock_no_connected_signer_path (self ):
27
+ path = os .path .join (os .path .dirname (os .path .realpath (__file__ )), 'mocks' , 'no_signer.py' )
28
+ return sys .executable + " " + path
29
+
26
30
def mock_invalid_signer_path (self ):
27
31
path = os .path .join (os .path .dirname (os .path .realpath (__file__ )), 'mocks' , 'invalid_signer.py' )
28
32
return sys .executable + " " + path
@@ -52,6 +56,7 @@ def clear_mock_result(self, node):
52
56
53
57
def run_test (self ):
54
58
self .test_valid_signer ()
59
+ self .test_disconnected_signer ()
55
60
self .restart_node (1 , [f"-signer={ self .mock_invalid_signer_path ()} " , "-keypool=10" ])
56
61
self .test_invalid_signer ()
57
62
self .restart_node (1 , [f"-signer={ self .mock_multi_signers_path ()} " , "-keypool=10" ])
@@ -234,6 +239,28 @@ def test_valid_signer(self):
234
239
# )
235
240
# self.clear_mock_result(self.nodes[4])
236
241
242
+ def test_disconnected_signer (self ):
243
+ self .log .info ('Test disconnected external signer' )
244
+
245
+ # First create a wallet with the signer connected
246
+ self .nodes [1 ].createwallet (wallet_name = 'hww_disconnect' , disable_private_keys = True , external_signer = True )
247
+ hww = self .nodes [1 ].get_wallet_rpc ('hww_disconnect' )
248
+ assert_equal (hww .getwalletinfo ()["external_signer" ], True )
249
+
250
+ # Fund wallet
251
+ self .nodes [0 ].sendtoaddress (hww .getnewaddress (address_type = "bech32m" ), 1 )
252
+ self .generate (self .nodes [0 ], 1 )
253
+
254
+ # Restart node with no signer connected
255
+ self .log .debug (f"-signer={ self .mock_no_connected_signer_path ()} " )
256
+ self .restart_node (1 , [f"-signer={ self .mock_no_connected_signer_path ()} " , "-keypool=10" ])
257
+ self .nodes [1 ].loadwallet ('hww_disconnect' )
258
+ hww = self .nodes [1 ].get_wallet_rpc ('hww_disconnect' )
259
+
260
+ # Try to spend
261
+ dest = hww .getrawchangeaddress ()
262
+ assert_raises_rpc_error (- 25 , "External signer not found" , hww .send , outputs = [{dest :0.5 }])
263
+
237
264
def test_invalid_signer (self ):
238
265
self .log .debug (f"-signer={ self .mock_invalid_signer_path ()} " )
239
266
self .log .info ('Test invalid external signer' )
0 commit comments