From 54dcf2dce8aec14d30c7ad492b729c7cec0c850e Mon Sep 17 00:00:00 2001 From: "Peter D. Gray" Date: Wed, 17 Sep 2025 10:03:50 -0400 Subject: [PATCH] little bug --- shared/utils.py | 2 +- testing/test_decoders.py | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/shared/utils.py b/shared/utils.py index 816cdd07..cce7c86c 100644 --- a/shared/utils.py +++ b/shared/utils.py @@ -645,7 +645,7 @@ def decode_bip21_text(got): proto, args, addr = None, None, None # remove URL protocol: if present - if ':' in got: + if ':' in got[0:16]: proto, got = got.split(':', 1) # looks like BIP-21 payment URL diff --git a/testing/test_decoders.py b/testing/test_decoders.py index 69c2f962..50aa4225 100644 --- a/testing/test_decoders.py +++ b/testing/test_decoders.py @@ -53,12 +53,13 @@ def test_detector_bin(fname, expect, encoding, try_decode): @pytest.mark.parametrize('url', [ -'bitcoin:mtHSVByP9EYZmB26jASDdPVm19gvpecb5R', -'bitcoin:mtHSVByP9EYZmB26jASDdPVm19gvpecb5R?label=Luke-Jr', -'bitcoin:mtHSVByP9EYZmB26jASDdPVm19gvpecb5R?amount=20.3&label=Luke-Jr', -'bitcoin:mtHSVByP9EYZmB26jASDdPVm19gvpecb5R?amount=50&label=Luke-Jr&message=Donation%20for%20project%20xyz', -'bitcoin:mtHSVByP9EYZmB26jASDdPVm19gvpecb5R?req-somethingyoudontunderstand=50&req-somethingelseyoudontget=999', -'bitcoin:mtHSVByP9EYZmB26jASDdPVm19gvpecb5R?somethingyoudontunderstand=50&somethingelseyoudontget=999', +'mtHSVByP9EYZmB26jASDdPVm19gvpecb5R', +'mtHSVByP9EYZmB26jASDdPVm19gvpecb5R?label=Luke-Jr', +'mtHSVByP9EYZmB26jASDdPVm19gvpecb5R?amount=20.3&label=Luke-Jr', +'mtHSVByP9EYZmB26jASDdPVm19gvpecb5R?amount=50&label=Luke-Jr&message=Donation%20for%20project%20xyz', +'mtHSVByP9EYZmB26jASDdPVm19gvpecb5R?req-somethingyoudontunderstand=50&req-somethingelseyoudontget=999', +'mtHSVByP9EYZmB26jASDdPVm19gvpecb5R?somethingyoudontunderstand=50&somethingelseyoudontget=999', +'mtHSVByP9EYZmB26jASDdPVm19gvpecb5R?label=total%20due:%20500', ]) @pytest.mark.parametrize('bip21', range(2)) @pytest.mark.parametrize('addr_fmt', range(2)) @@ -66,8 +67,9 @@ def test_detector_url(url, bip21, addr_fmt, try_decode): a1, a2 = ('mtHSVByP9EYZmB26jASDdPVm19gvpecb5R', 'BCRT1QUPYD58NDSH7LUT0ET0VTRQ432JVU9JTDX8FGYV') - if not bip21: - _, url = url.split(':', 1) + if bip21: + url = 'bitcoin:' + url + if addr_fmt: url = url.replace(a1, a2) expect_addr = a2.lower()