From 66d7e46f9bd835361e2c14623833e19504d96b71 Mon Sep 17 00:00:00 2001 From: Adam Gibson Date: Thu, 2 Dec 2021 10:02:28 +0000 Subject: [PATCH] Fix RPC timelockaddress call. Fixes #1095. Also, adds test case for get_timelockaddress method. --- jmclient/jmclient/wallet_rpc.py | 14 +++++++------- jmclient/test/test_wallet_rpc.py | 18 +++++++++++++++--- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/jmclient/jmclient/wallet_rpc.py b/jmclient/jmclient/wallet_rpc.py index 2a2b604..878ffe8 100644 --- a/jmclient/jmclient/wallet_rpc.py +++ b/jmclient/jmclient/wallet_rpc.py @@ -694,20 +694,20 @@ class JMWalletDaemon(Service): return make_jmwalletd_response(request, address=address) @app.route('/wallet//address/timelock/new/', methods=['GET']) - def gettimelockaddress(self, request, walletname): + def gettimelockaddress(self, request, walletname, lockdate): self.check_cookie(request) if not self.wallet_service: raise NoWalletFound() if not self.wallet_name == walletname: raise InvalidRequestFormat() try: - timelockaddress = wallet_gettimelockaddress(self.wallet_service, - lockdate) - except Exception as e: - return InvalidRequestFormat() + timelockaddress = wallet_gettimelockaddress( + self.wallet_service.wallet, lockdate) + except Exception: + raise InvalidRequestFormat() if timelockaddress == "": - return InvalidRequestFormat() - return make_jmwalletd_response(request, address=address) + raise InvalidRequestFormat() + return make_jmwalletd_response(request, address=timelockaddress) @app.route('/wallet//configget', methods=["POST"]) def configget(self, request, walletname): diff --git a/jmclient/test/test_wallet_rpc.py b/jmclient/test/test_wallet_rpc.py index b223409..ed242b0 100644 --- a/jmclient/test/test_wallet_rpc.py +++ b/jmclient/test/test_wallet_rpc.py @@ -9,7 +9,7 @@ from autobahn.twisted.websocket import WebSocketClientFactory, \ from jmbase import get_nontor_agent, hextobin, BytesProducer, get_log from jmbitcoin import CTransaction -from jmclient import (load_test_config, jm_single, +from jmclient import (load_test_config, jm_single, SegwitWalletFidelityBonds, JMWalletDaemon, validate_address, start_reactor) from jmclient.wallet_rpc import api_version_string from commontest import make_wallets @@ -71,7 +71,7 @@ class WalletRPCTestBase(object): # the sync for test, by some means or other. self.daemon.wallet_service = make_wallets_to_list(make_wallets( 1, wallet_structures=[wallet_structures[0]], - mean_amt=self.mean_amt))[0] + mean_amt=self.mean_amt, wallet_cls=SegwitWalletFidelityBonds))[0] jm_single().bc_interface.tickchain() sync_wallets([self.daemon.wallet_service]) # dummy tx example to force a notification event: @@ -173,7 +173,7 @@ class TrialTestWRPC_DisplayWallet(WalletRPCTestBase, unittest.TestCase): addr = root + "/wallet/create" addr = addr.encode() body = BytesProducer(json.dumps({"walletname": testfileloc, - "password": "hunter2", "wallettype": "sw"}).encode()) + "password": "hunter2", "wallettype": "sw-fb"}).encode()) yield self.do_request(agent, b"POST", addr, body, self.process_create_wallet_response) @@ -266,6 +266,18 @@ class TrialTestWRPC_DisplayWallet(WalletRPCTestBase, unittest.TestCase): yield self.do_request(agent, b"GET", addr, None, self.process_new_addr_response) + @defer.inlineCallbacks + def test_gettimelockaddress(self): + self.daemon.auth_disabled = True + agent = get_nontor_agent() + addr = self.get_route_root() + addr += "/wallet/" + addr += self.daemon.wallet_name + addr += "/address/timelock/new/2023-02" + addr = addr.encode() + yield self.do_request(agent, b"GET", addr, None, + self.process_new_addr_response) + def process_new_addr_response(self, response): json_body = json.loads(response.decode("utf-8")) assert validate_address(json_body["address"])[0]