Skip to content

Commit 73b0722

Browse files
committed
Merge pull request #3837
75ebced added many rpc wallet tests (Alon Muroch)
2 parents 52d7a54 + 75ebced commit 73b0722

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed

src/test/rpc_wallet_tests.cpp

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,31 @@ BOOST_AUTO_TEST_CASE(rpc_wallet)
6767

6868
LOCK2(cs_main, pwalletMain->cs_wallet);
6969

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+
*********************************/
7095
BOOST_CHECK_NO_THROW(CallRPC("listunspent"));
7196
BOOST_CHECK_THROW(CallRPC("listunspent string"), runtime_error);
7297
BOOST_CHECK_THROW(CallRPC("listunspent 0 string"), runtime_error);
@@ -75,19 +100,81 @@ BOOST_AUTO_TEST_CASE(rpc_wallet)
75100
BOOST_CHECK_NO_THROW(r=CallRPC("listunspent 0 1 []"));
76101
BOOST_CHECK(r.get_array().empty());
77102

103+
/*********************************
104+
* listreceivedbyaddress
105+
*********************************/
78106
BOOST_CHECK_NO_THROW(CallRPC("listreceivedbyaddress"));
79107
BOOST_CHECK_NO_THROW(CallRPC("listreceivedbyaddress 0"));
80108
BOOST_CHECK_THROW(CallRPC("listreceivedbyaddress not_int"), runtime_error);
81109
BOOST_CHECK_THROW(CallRPC("listreceivedbyaddress 0 not_bool"), runtime_error);
82110
BOOST_CHECK_NO_THROW(CallRPC("listreceivedbyaddress 0 true"));
83111
BOOST_CHECK_THROW(CallRPC("listreceivedbyaddress 0 true extra"), runtime_error);
84112

113+
/*********************************
114+
* listreceivedbyaccount
115+
*********************************/
85116
BOOST_CHECK_NO_THROW(CallRPC("listreceivedbyaccount"));
86117
BOOST_CHECK_NO_THROW(CallRPC("listreceivedbyaccount 0"));
87118
BOOST_CHECK_THROW(CallRPC("listreceivedbyaccount not_int"), runtime_error);
88119
BOOST_CHECK_THROW(CallRPC("listreceivedbyaccount 0 not_bool"), runtime_error);
89120
BOOST_CHECK_NO_THROW(CallRPC("listreceivedbyaccount 0 true"));
90121
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+
91177
}
92178

179+
93180
BOOST_AUTO_TEST_SUITE_END()

0 commit comments

Comments
 (0)