scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead...
[bitcoinplatinum.git] / test / functional / importprunedfunds.py
blob94753fe43114c31eb75092249b17c8a05d20b233
1 #!/usr/bin/env python3
2 # Copyright (c) 2014-2016 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 the importprunedfunds and removeprunedfunds RPCs."""
6 from test_framework.test_framework import BitcoinTestFramework
7 from test_framework.util import *
10 class ImportPrunedFundsTest(BitcoinTestFramework):
12 def __init__(self):
13 super().__init__()
14 self.setup_clean_chain = True
15 self.num_nodes = 2
17 def run_test(self):
18 self.log.info("Mining blocks...")
19 self.nodes[0].generate(101)
21 self.sync_all()
23 # address
24 address1 = self.nodes[0].getnewaddress()
25 # pubkey
26 address2 = self.nodes[0].getnewaddress()
27 address2_pubkey = self.nodes[0].validateaddress(address2)['pubkey'] # Using pubkey
28 # privkey
29 address3 = self.nodes[0].getnewaddress()
30 address3_privkey = self.nodes[0].dumpprivkey(address3) # Using privkey
32 #Check only one address
33 address_info = self.nodes[0].validateaddress(address1)
34 assert_equal(address_info['ismine'], True)
36 self.sync_all()
38 #Node 1 sync test
39 assert_equal(self.nodes[1].getblockcount(),101)
41 #Address Test - before import
42 address_info = self.nodes[1].validateaddress(address1)
43 assert_equal(address_info['iswatchonly'], False)
44 assert_equal(address_info['ismine'], False)
46 address_info = self.nodes[1].validateaddress(address2)
47 assert_equal(address_info['iswatchonly'], False)
48 assert_equal(address_info['ismine'], False)
50 address_info = self.nodes[1].validateaddress(address3)
51 assert_equal(address_info['iswatchonly'], False)
52 assert_equal(address_info['ismine'], False)
54 #Send funds to self
55 txnid1 = self.nodes[0].sendtoaddress(address1, 0.1)
56 self.nodes[0].generate(1)
57 rawtxn1 = self.nodes[0].gettransaction(txnid1)['hex']
58 proof1 = self.nodes[0].gettxoutproof([txnid1])
60 txnid2 = self.nodes[0].sendtoaddress(address2, 0.05)
61 self.nodes[0].generate(1)
62 rawtxn2 = self.nodes[0].gettransaction(txnid2)['hex']
63 proof2 = self.nodes[0].gettxoutproof([txnid2])
65 txnid3 = self.nodes[0].sendtoaddress(address3, 0.025)
66 self.nodes[0].generate(1)
67 rawtxn3 = self.nodes[0].gettransaction(txnid3)['hex']
68 proof3 = self.nodes[0].gettxoutproof([txnid3])
70 self.sync_all()
72 #Import with no affiliated address
73 assert_raises_jsonrpc(-5, "No addresses", self.nodes[1].importprunedfunds, rawtxn1, proof1)
75 balance1 = self.nodes[1].getbalance("", 0, True)
76 assert_equal(balance1, Decimal(0))
78 #Import with affiliated address with no rescan
79 self.nodes[1].importaddress(address2, "add2", False)
80 result2 = self.nodes[1].importprunedfunds(rawtxn2, proof2)
81 balance2 = self.nodes[1].getbalance("add2", 0, True)
82 assert_equal(balance2, Decimal('0.05'))
84 #Import with private key with no rescan
85 self.nodes[1].importprivkey(address3_privkey, "add3", False)
86 result3 = self.nodes[1].importprunedfunds(rawtxn3, proof3)
87 balance3 = self.nodes[1].getbalance("add3", 0, False)
88 assert_equal(balance3, Decimal('0.025'))
89 balance3 = self.nodes[1].getbalance("*", 0, True)
90 assert_equal(balance3, Decimal('0.075'))
92 #Addresses Test - after import
93 address_info = self.nodes[1].validateaddress(address1)
94 assert_equal(address_info['iswatchonly'], False)
95 assert_equal(address_info['ismine'], False)
96 address_info = self.nodes[1].validateaddress(address2)
97 assert_equal(address_info['iswatchonly'], True)
98 assert_equal(address_info['ismine'], False)
99 address_info = self.nodes[1].validateaddress(address3)
100 assert_equal(address_info['iswatchonly'], False)
101 assert_equal(address_info['ismine'], True)
103 #Remove transactions
104 assert_raises_jsonrpc(-8, "Transaction does not exist in wallet.", self.nodes[1].removeprunedfunds, txnid1)
106 balance1 = self.nodes[1].getbalance("*", 0, True)
107 assert_equal(balance1, Decimal('0.075'))
109 self.nodes[1].removeprunedfunds(txnid2)
110 balance2 = self.nodes[1].getbalance("*", 0, True)
111 assert_equal(balance2, Decimal('0.025'))
113 self.nodes[1].removeprunedfunds(txnid3)
114 balance3 = self.nodes[1].getbalance("*", 0, True)
115 assert_equal(balance3, Decimal('0.0'))
117 if __name__ == '__main__':
118 ImportPrunedFundsTest().main()