@@ -67,6 +67,31 @@ BOOST_AUTO_TEST_CASE(rpc_wallet)
67
67
68
68
LOCK2 (cs_main, pwalletMain->cs_wallet );
69
69
70
+ CPubKey demoPubkey = pwalletMain->GenerateNewKey ();
71
+ CBitcoinAddress demoAddress = CBitcoinAddress (CTxDestination (demoPubkey.GetID ()));
72
+ Value retValue;
73
+ string strAccount = " walletDemoAccount" ;
74
+ string strPurpose = " receive" ;
75
+ BOOST_CHECK_NO_THROW ({ /* Initialize Wallet with an account */
76
+ CWalletDB walletdb (pwalletMain->strWalletFile );
77
+ CAccount account;
78
+ account.vchPubKey = demoPubkey;
79
+ pwalletMain->SetAddressBook (account.vchPubKey .GetID (), strAccount, strPurpose);
80
+ walletdb.WriteAccount (strAccount, account);
81
+ });
82
+
83
+
84
+ /* ********************************
85
+ * setaccount
86
+ *********************************/
87
+ BOOST_CHECK_NO_THROW (CallRPC (" setaccount 1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ nullaccount" ));
88
+ BOOST_CHECK_THROW (CallRPC (" setaccount" ), runtime_error);
89
+ /* 1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4X (33 chars) is an illegal address (should be 34 chars) */
90
+ BOOST_CHECK_THROW (CallRPC (" setaccount 1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4X nullaccount" ), runtime_error);
91
+
92
+ /* ********************************
93
+ * listunspent
94
+ *********************************/
70
95
BOOST_CHECK_NO_THROW (CallRPC (" listunspent" ));
71
96
BOOST_CHECK_THROW (CallRPC (" listunspent string" ), runtime_error);
72
97
BOOST_CHECK_THROW (CallRPC (" listunspent 0 string" ), runtime_error);
@@ -75,19 +100,81 @@ BOOST_AUTO_TEST_CASE(rpc_wallet)
75
100
BOOST_CHECK_NO_THROW (r=CallRPC (" listunspent 0 1 []" ));
76
101
BOOST_CHECK (r.get_array ().empty ());
77
102
103
+ /* ********************************
104
+ * listreceivedbyaddress
105
+ *********************************/
78
106
BOOST_CHECK_NO_THROW (CallRPC (" listreceivedbyaddress" ));
79
107
BOOST_CHECK_NO_THROW (CallRPC (" listreceivedbyaddress 0" ));
80
108
BOOST_CHECK_THROW (CallRPC (" listreceivedbyaddress not_int" ), runtime_error);
81
109
BOOST_CHECK_THROW (CallRPC (" listreceivedbyaddress 0 not_bool" ), runtime_error);
82
110
BOOST_CHECK_NO_THROW (CallRPC (" listreceivedbyaddress 0 true" ));
83
111
BOOST_CHECK_THROW (CallRPC (" listreceivedbyaddress 0 true extra" ), runtime_error);
84
112
113
+ /* ********************************
114
+ * listreceivedbyaccount
115
+ *********************************/
85
116
BOOST_CHECK_NO_THROW (CallRPC (" listreceivedbyaccount" ));
86
117
BOOST_CHECK_NO_THROW (CallRPC (" listreceivedbyaccount 0" ));
87
118
BOOST_CHECK_THROW (CallRPC (" listreceivedbyaccount not_int" ), runtime_error);
88
119
BOOST_CHECK_THROW (CallRPC (" listreceivedbyaccount 0 not_bool" ), runtime_error);
89
120
BOOST_CHECK_NO_THROW (CallRPC (" listreceivedbyaccount 0 true" ));
90
121
BOOST_CHECK_THROW (CallRPC (" listreceivedbyaccount 0 true extra" ), runtime_error);
122
+
123
+ /* ********************************
124
+ * getrawchangeaddress
125
+ *********************************/
126
+ BOOST_CHECK_NO_THROW (CallRPC (" getrawchangeaddress" ));
127
+
128
+ /* ********************************
129
+ * getnewaddress
130
+ *********************************/
131
+ BOOST_CHECK_NO_THROW (CallRPC (" getnewaddress" ));
132
+ BOOST_CHECK_NO_THROW (CallRPC (" getnewaddress getnewaddress_demoaccount" ));
133
+
134
+ /* ********************************
135
+ * getaccountaddress
136
+ *********************************/
137
+ BOOST_CHECK_NO_THROW (CallRPC (" getaccountaddress \"\" " ));
138
+ BOOST_CHECK_NO_THROW (CallRPC (" getaccountaddress accountThatDoesntExists" )); // Should generate a new account
139
+ BOOST_CHECK_NO_THROW (retValue = CallRPC (" getaccountaddress " + strAccount));
140
+ BOOST_CHECK (CBitcoinAddress (retValue.get_str ()).Get () == demoAddress.Get ());
141
+
142
+ /* ********************************
143
+ * getaccount
144
+ *********************************/
145
+ BOOST_CHECK_THROW (CallRPC (" getaccount" ), runtime_error);
146
+ BOOST_CHECK_NO_THROW (CallRPC (" getaccount " + demoAddress.ToString ()));
147
+
148
+ /* ********************************
149
+ * signmessage + verifymessage
150
+ *********************************/
151
+ BOOST_CHECK_NO_THROW (retValue = CallRPC (" signmessage " + demoAddress.ToString () + " mymessage" ));
152
+ BOOST_CHECK_THROW (CallRPC (" signmessage" ), runtime_error);
153
+ /* Should throw error because this address is not loaded in the wallet */
154
+ BOOST_CHECK_THROW (CallRPC (" signmessage 1QFqqMUD55ZV3PJEJZtaKCsQmjLT6JkjvJ mymessage" ), runtime_error);
155
+
156
+ /* missing arguments */
157
+ BOOST_CHECK_THROW (CallRPC (" verifymessage " + demoAddress.ToString ()), runtime_error);
158
+ BOOST_CHECK_THROW (CallRPC (" verifymessage " + demoAddress.ToString () + " " + retValue.get_str ()), runtime_error);
159
+ /* Illegal address */
160
+ BOOST_CHECK_THROW (CallRPC (" verifymessage 1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4X " + retValue.get_str () + " mymessage" ), runtime_error);
161
+ /* wrong address */
162
+ BOOST_CHECK (CallRPC (" verifymessage 1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ " + retValue.get_str () + " mymessage" ).get_bool () == false );
163
+ /* Correct address and signature but wrong message */
164
+ BOOST_CHECK (CallRPC (" verifymessage " + demoAddress.ToString () + " " + retValue.get_str () + " wrongmessage" ).get_bool () == false );
165
+ /* Correct address, message and signature*/
166
+ BOOST_CHECK (CallRPC (" verifymessage " + demoAddress.ToString () + " " + retValue.get_str () + " mymessage" ).get_bool () == true );
167
+
168
+ /* ********************************
169
+ * getaddressesbyaccount
170
+ *********************************/
171
+ BOOST_CHECK_THROW (CallRPC (" getaddressesbyaccount" ), runtime_error);
172
+ BOOST_CHECK_NO_THROW (retValue = CallRPC (" getaddressesbyaccount " + strAccount));
173
+ Array arr = retValue.get_array ();
174
+ BOOST_CHECK (arr.size () > 0 );
175
+ BOOST_CHECK (CBitcoinAddress (arr[0 ].get_str ()).Get () == demoAddress.Get ());
176
+
91
177
}
92
178
179
+
93
180
BOOST_AUTO_TEST_SUITE_END ()
0 commit comments