aboutsummaryrefslogtreecommitdiff
path: root/test/functional/wallet_labels.py
diff options
context:
space:
mode:
authorMarcoFalke <falke.marco@gmail.com>2020-05-14 08:40:23 -0400
committerMarcoFalke <falke.marco@gmail.com>2020-05-14 09:36:51 -0400
commitfacede18a42ccbf45cb5156bd4e5c9cabb359821 (patch)
tree3a3e2d39230b69430a6fff0bcba26a41eb14e6f2 /test/functional/wallet_labels.py
parenta9a6d946e41b459d3d04ab79df85ce0b31304948 (diff)
downloadbitcoin-facede18a42ccbf45cb5156bd4e5c9cabb359821.tar.xz
test: Check that invalid witness destinations can not be imported
Diffstat (limited to 'test/functional/wallet_labels.py')
-rwxr-xr-xtest/functional/wallet_labels.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/functional/wallet_labels.py b/test/functional/wallet_labels.py
index f8d1720469..fb4a1f9792 100755
--- a/test/functional/wallet_labels.py
+++ b/test/functional/wallet_labels.py
@@ -134,6 +134,33 @@ class WalletLabelsTest(BitcoinTestFramework):
# in the label. This is a no-op.
change_label(node, labels[2].addresses[0], labels[2], labels[2])
+ self.log.info('Check watchonly labels')
+ node.createwallet(wallet_name='watch_only', disable_private_keys=True, descriptors=False)
+ wallet_watch_only = node.get_wallet_rpc('watch_only')
+ BECH32_VALID = {
+ '✔️_VER15_PROG40': 'bcrt10qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqn2cjv3',
+ '✔️_VER16_PROG03': 'bcrt1sqqqqqjq8pdp',
+ '✔️_VER16_PROB02': 'bcrt1sqqqqqjq8pv',
+ }
+ BECH32_INVALID = {
+ '❌_VER15_PROG41': 'bcrt10qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzc7xyq',
+ '❌_VER16_PROB01': 'bcrt1sqqpl9r5c',
+ }
+ for l in BECH32_VALID:
+ ad = BECH32_VALID[l]
+ wallet_watch_only.importaddress(label=l, rescan=False, address=ad)
+ node.generatetoaddress(1, ad)
+ assert_equal(wallet_watch_only.getaddressesbylabel(label=l), {ad: {'purpose': 'receive'}})
+ assert_equal(wallet_watch_only.getreceivedbylabel(label=l), 0)
+ for l in BECH32_INVALID:
+ ad = BECH32_INVALID[l]
+ assert_raises_rpc_error(
+ -5,
+ "Invalid Bitcoin address or script",
+ lambda: wallet_watch_only.importaddress(label=l, rescan=False, address=ad),
+ )
+
+
class Label:
def __init__(self, name):
# Label name