text: ﻿#!/usr/bin/env python3
  # Copyright (c) 2017-2018 The Machinecoin Core developers
  # Distributed under the MIT software license, see the accompanying
  # file COPYING or http://www.opensource.org/licenses/mit-license.php.
  """Test deprecation of RPC calls."""
  from test_framework.test_framework import MachinecoinTestFramework
  from test_framework.util import assert_raises_rpc_error
  
  class DeprecatedRpcTest(MachinecoinTestFramework):
      def set_test_params(self):
          self.num_nodes = 2
          self.setup_clean_chain = True
          self.extra_args = [[], ["-deprecatedrpc=validateaddress", "-deprecatedrpc=accounts"]]
  
      def skip_test_if_missing_module(self):
          self.skip_if_no_wallet()
  
      def run_test(self):
          # This test should be used to verify correct behaviour of deprecated
          # RPC methods with and without the -deprecatedrpc flags. For example:
          #
          # self.log.info("Make sure that -deprecatedrpc=createmultisig allows it to take addresses")
          # assert_raises_rpc_error(-5, "Invalid public key", self.nodes[0].createmultisig, 1, [self.nodes[0].getnewaddress()])
          # self.nodes[1].createmultisig(1, [self.nodes[1].getnewaddress()])
  
          self.log.info("Test validateaddress deprecation")
          SOME_ADDRESS = "mnvGjUy3NMj67yJ6gkK5o9e5RS33Z2Vqcu"  # This is just some random address to pass as a parameter to validateaddress
          dep_validate_address = self.nodes[0].validateaddress(SOME_ADDRESS)
          assert "ismine" not in dep_validate_address
          not_dep_val = self.nodes[1].validateaddress(SOME_ADDRESS)
          assert "ismine" in not_dep_val
  
          self.log.info("Test accounts deprecation")
          # The following account RPC methods are deprecated:
          # - getaccount
          # - getaccountaddress
          # - getaddressesbyaccount
          # - getreceivedbyaccount
          # - listaccouts
          # - listreceivedbyaccount
          # - move
          # - setaccount
          #
          # The following 'label' RPC methods are usable both with and without the
          # -deprecatedrpc=accounts switch enabled.
          # - getaddressesbylabel
          # - getreceivedbylabel
          # - listlabels
          # - listreceivedbylabel
          # - setlabel
          #
          address0 = self.nodes[0].getnewaddress()
          self.nodes[0].generatetoaddress(101, address0)
          self.sync_all()
          address1 = self.nodes[1].getnewaddress()
          self.nodes[1].generatetoaddress(101, address1)
  
          self.log.info("- getaccount")
          assert_raises_rpc_error(-32, "getaccount is deprecated", self.nodes[0].getaccount, address0)
          self.nodes[1].getaccount(address1)
  
          self.log.info("- setaccount")
          assert_raises_rpc_error(-32, "setaccount is deprecated", self.nodes[0].setaccount, address0, "label0")
          self.nodes[1].setaccount(address1, "label1")
  
          self.log.info("- setlabel")
          self.nodes[0].setlabel(address0, "label0")
          self.nodes[1].setlabel(address1, "label1")
  
          self.log.info("- getaccountaddress")
          assert_raises_rpc_error(-32, "getaccountaddress is deprecated", self.nodes[0].getaccountaddress, "label0")
          self.nodes[1].getaccountaddress("label1")
  
          self.log.info("- getaddressesbyaccount")
          assert_raises_rpc_error(-32, "getaddressesbyaccount is deprecated", self.nodes[0].getaddressesbyaccount, "label0")
          self.nodes[1].getaddressesbyaccount("label1")
  
          self.log.info("- getaddressesbylabel")
          self.nodes[0].getaddressesbylabel("label0")
          self.nodes[1].getaddressesbylabel("label1")
  
          self.log.info("- getreceivedbyaccount")
          assert_raises_rpc_error(-32, "getreceivedbyaccount is deprecated", self.nodes[0].getreceivedbyaccount, "label0")
          self.nodes[1].getreceivedbyaccount("label1")
  
          self.log.info("- getreceivedbylabel")
          self.nodes[0].getreceivedbylabel("label0")
          self.nodes[1].getreceivedbylabel("label1")
  
          self.log.info("- listaccounts")
          assert_raises_rpc_error(-32, "listaccounts is deprecated", self.nodes[0].listaccounts)
          self.nodes[1].listaccounts()
  
          self.log.info("- listlabels")
          self.nodes[0].listlabels()
          self.nodes[1].listlabels()
  
          self.log.info("- listreceivedbyaccount")
          assert_raises_rpc_error(-32, "listreceivedbyaccount is deprecated", self.nodes[0].listreceivedbyaccount)
          self.nodes[1].listreceivedbyaccount()
  
          self.log.info("- listreceivedbylabel")
          self.nodes[0].listreceivedbylabel()
          self.nodes[1].listreceivedbylabel()
  
          self.log.info("- move")
          assert_raises_rpc_error(-32, "move is deprecated", self.nodes[0].move, "label0", "label0b", 10)
          self.nodes[1].move("label1", "label1b", 10)
  
  if __name__ == '__main__':
      DeprecatedRpcTest().main()
  