/test/functional/rpc_invalid_address_message.py

https://github.com/vertcoin-project/vertcoin-core · Python · 84 lines · 80 code · 0 blank · 4 comment · 0 complexity · 17ece1f2cfc60466b39a998015afd00c MD5 · raw file

  1. #!/usr/bin/env python3
  2. # Copyright (c) 2020 The Bitcoin Core developers
  3. # Distributed under the MIT software license, see the accompanying
  4. # file COPYING or http://www.opensource.org/licenses/mit-license.php.
  5. """Test error messages for 'getaddressinfo' and 'validateaddress' RPC commands."""
  6. from test_framework.test_framework import BitcoinTestFramework
  7. from test_framework.util import assert_raises_rpc_error
  8. BECH32_VALID = 'bcrt1qtmp74ayg7p24uslctssvjm06q5phz4yrxucgnv'
  9. BECH32_INVALID_BECH32 = 'bcrt1p0xlxvlhemja6c4dqv22uapctqupfhlxm9h8z3k2e72q4k9hcz7vqdmchcc'
  10. BECH32_INVALID_BECH32M = 'bcrt1qw508d6qejxtdg4y5r3zarvary0c5xw7k35mrzd'
  11. BECH32_INVALID_VERSION = 'bcrt130xlxvlhemja6c4dqv22uapctqupfhlxm9h8z3k2e72q4k9hcz7vqynjegk'
  12. BECH32_INVALID_SIZE = 'bcrt1s0xlxvlhemja6c4dqv22uapctqupfhlxm9h8z3k2e72q4k9hcz7v8n0nx0muaewav25430mtr'
  13. BECH32_INVALID_V0_SIZE = 'bcrt1qw508d6qejxtdg4y5r3zarvary0c5xw7kqqq5k3my'
  14. BECH32_INVALID_PREFIX = 'bc1pw508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7k7grplx'
  15. BASE58_VALID = 'mipcBbFg9gMiCh81Kj8tqqdgoZub1ZJRfn'
  16. BASE58_INVALID_PREFIX = '17VZNX1SN5NtKa8UQFxwQbFeFc3iqRYhem'
  17. INVALID_ADDRESS = 'asfah14i8fajz0123f'
  18. class InvalidAddressErrorMessageTest(BitcoinTestFramework):
  19. def set_test_params(self):
  20. self.setup_clean_chain = True
  21. self.num_nodes = 1
  22. def skip_test_if_missing_module(self):
  23. self.skip_if_no_wallet()
  24. def test_validateaddress(self):
  25. node = self.nodes[0]
  26. # Bech32
  27. info = node.validateaddress(BECH32_INVALID_SIZE)
  28. assert not info['isvalid']
  29. info = node.validateaddress(BECH32_INVALID_PREFIX)
  30. assert not info['isvalid']
  31. info = node.validateaddress(BECH32_INVALID_BECH32)
  32. assert not info['isvalid']
  33. info = node.validateaddress(BECH32_INVALID_BECH32M)
  34. assert not info['isvalid']
  35. info = node.validateaddress(BECH32_INVALID_V0_SIZE)
  36. assert not info['isvalid']
  37. info = node.validateaddress(BECH32_VALID)
  38. assert info['isvalid']
  39. assert 'error' not in info
  40. # Base58
  41. info = node.validateaddress(BASE58_INVALID_PREFIX)
  42. assert not info['isvalid']
  43. info = node.validateaddress(BASE58_VALID)
  44. assert info['isvalid']
  45. assert 'error' not in info
  46. # Invalid address format
  47. info = node.validateaddress(INVALID_ADDRESS)
  48. assert not info['isvalid']
  49. def test_getaddressinfo(self):
  50. node = self.nodes[0]
  51. assert_raises_rpc_error(-5, "Invalid address", node.getaddressinfo, BECH32_INVALID_SIZE)
  52. assert_raises_rpc_error(-5, "Invalid address", node.getaddressinfo, BECH32_INVALID_PREFIX)
  53. assert_raises_rpc_error(-5, "Invalid address", node.getaddressinfo, BASE58_INVALID_PREFIX)
  54. assert_raises_rpc_error(-5, "Invalid address", node.getaddressinfo, INVALID_ADDRESS)
  55. def run_test(self):
  56. self.test_validateaddress()
  57. self.test_getaddressinfo()
  58. if __name__ == '__main__':
  59. InvalidAddressErrorMessageTest().main()