From ee2c0cee75ae63833ae40960519a764363d7db98 Mon Sep 17 00:00:00 2001 From: PaarthAgarwal Date: Fri, 10 Feb 2023 15:23:36 +0530 Subject: [PATCH 1/2] catch the embit.base.EmbitError --- src/cryptoadvance/spectrum/spectrum.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cryptoadvance/spectrum/spectrum.py b/src/cryptoadvance/spectrum/spectrum.py index c95fd61..f0f14cf 100644 --- a/src/cryptoadvance/spectrum/spectrum.py +++ b/src/cryptoadvance/spectrum/spectrum.py @@ -11,6 +11,7 @@ from functools import wraps from embit import bip32 +from embit.base import EmbitError from embit.descriptor import Descriptor as EmbitDescriptor from embit.descriptor.checksum import add_checksum from embit.finalizer import finalize_psbt @@ -983,7 +984,10 @@ def listsinceblock( @walletrpc def getreceivedbyaddress(self, wallet, address, minconf=1): - sc = EmbitScript.from_address(address) + try: + sc = EmbitScript.from_address(address) + except EmbitError as e: + raise Spectrum.RPCError(f"Invalid Bitcoin address: {address}") from e script = Script.query.filter_by(script=sc.data.hex()).first() if not script: return 0 From 53603f2232e8ca5f73b11c765e4e9143d5142440 Mon Sep 17 00:00:00 2001 From: Kim Neunert Date: Tue, 7 Mar 2023 13:29:31 +0100 Subject: [PATCH 2/2] some testing --- src/cryptoadvance/spectrum/spectrum.py | 2 +- tests/test_spectrum_rpc.py | 59 ++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/src/cryptoadvance/spectrum/spectrum.py b/src/cryptoadvance/spectrum/spectrum.py index f0f14cf..420ed64 100644 --- a/src/cryptoadvance/spectrum/spectrum.py +++ b/src/cryptoadvance/spectrum/spectrum.py @@ -987,7 +987,7 @@ def getreceivedbyaddress(self, wallet, address, minconf=1): try: sc = EmbitScript.from_address(address) except EmbitError as e: - raise Spectrum.RPCError(f"Invalid Bitcoin address: {address}") from e + raise RPCError(f"Invalid Bitcoin address: {address}: {e}") script = Script.query.filter_by(script=sc.data.hex()).first() if not script: return 0 diff --git a/tests/test_spectrum_rpc.py b/tests/test_spectrum_rpc.py index 7449ee3..b70e6a8 100644 --- a/tests/test_spectrum_rpc.py +++ b/tests/test_spectrum_rpc.py @@ -115,3 +115,62 @@ def test_rescanblockchain(caplog, client): assert result.status_code == 200 print(json.loads(result.data)) + + +def test_createwallet(caplog, client): + caplog.set_level(logging.DEBUG) + caplog.set_level(logging.DEBUG, logger="cryptoadvance.spectrum") + + result = client.post( + "/wallet/some_shiny_new_wallet", + json={ + "method": "createwallet", + "params": ["some_shiny_new_wallet"], + "jsonrpc": "2.0", + "id": 0, + }, + ) + print(json.loads(result.data)) + assert result.status_code == 200 + + +def test_getreceivedbyaddress(caplog, client): + caplog.set_level(logging.DEBUG) + caplog.set_level(logging.DEBUG, logger="cryptoadvance.spectrum") + + result = client.post( + "/wallet/some_nonexisting_wallet", + json={ + "method": "getreceivedbyaddress", + "params": ["bc1q09vm5lfy0j5reeulh4x5752q25uqqvz34hufdl", 6], + "jsonrpc": "2.0", + "id": 0, + }, + ) + assert result.status_code == 200 + assert ( + json.loads(result.data)["error"]["message"] + == "Requested wallet some_nonexisting_wallet does not exist or is not loaded" + ) + result = client.post( + "/", + json={ + "method": "createwallet", + "params": ["some_new_wallet_to_test_getreceivedbyaddress"], + "jsonrpc": "2.0", + "id": 0, + }, + ) + + result = client.post( + "/wallet/some_new_wallet_to_test_getreceivedbyaddress", + json={ + "method": "getreceivedbyaddress", + "params": ["bc1qtr5cwxum3uwvyxgc8sgqm8gr658eksruyv3sty", 6], + "jsonrpc": "2.0", + "id": 0, + }, + ) + assert result.status_code == 200 + print(json.loads(result.data)) + assert False