Merge pull request #2104 from al42and/listreceivedbyaddress_txids
listreceivedbyaddress now provides tx ids (issue #1149)
This commit is contained in:
commit
9d01dd7658
2 changed files with 42 additions and 9 deletions
|
@ -811,6 +811,7 @@ struct tallyitem
|
|||
{
|
||||
int64 nAmount;
|
||||
int nConf;
|
||||
vector<uint256> txids;
|
||||
tallyitem()
|
||||
{
|
||||
nAmount = 0;
|
||||
|
@ -852,6 +853,7 @@ Value ListReceived(const Array& params, bool fByAccounts)
|
|||
tallyitem& item = mapTally[address];
|
||||
item.nAmount += txout.nValue;
|
||||
item.nConf = min(item.nConf, nDepth);
|
||||
item.txids.push_back(wtx.GetHash());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -887,6 +889,15 @@ Value ListReceived(const Array& params, bool fByAccounts)
|
|||
obj.push_back(Pair("account", strAccount));
|
||||
obj.push_back(Pair("amount", ValueFromAmount(nAmount)));
|
||||
obj.push_back(Pair("confirmations", (nConf == std::numeric_limits<int>::max() ? 0 : nConf)));
|
||||
Array transactions;
|
||||
if (it != mapTally.end())
|
||||
{
|
||||
BOOST_FOREACH(const uint256& item, (*it).second.txids)
|
||||
{
|
||||
transactions.push_back(item.GetHex());
|
||||
}
|
||||
}
|
||||
obj.push_back(Pair("txids", transactions));
|
||||
ret.push_back(obj);
|
||||
}
|
||||
}
|
||||
|
@ -919,7 +930,8 @@ Value listreceivedbyaddress(const Array& params, bool fHelp)
|
|||
" \"address\" : receiving address\n"
|
||||
" \"account\" : the account of the receiving address\n"
|
||||
" \"amount\" : total amount received by the address\n"
|
||||
" \"confirmations\" : number of confirmations of the most recent transaction included");
|
||||
" \"confirmations\" : number of confirmations of the most recent transaction included\n"
|
||||
" \"txids\" : list of transactions with outputs to the address\n");
|
||||
|
||||
return ListReceived(params, false);
|
||||
}
|
||||
|
|
|
@ -79,6 +79,35 @@ static Value CallRPC(string args)
|
|||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(rpc_wallet)
|
||||
{
|
||||
// Test RPC calls for various wallet statistics
|
||||
Value r;
|
||||
|
||||
BOOST_CHECK_NO_THROW(CallRPC("listunspent"));
|
||||
BOOST_CHECK_THROW(CallRPC("listunspent string"), runtime_error);
|
||||
BOOST_CHECK_THROW(CallRPC("listunspent 0 string"), runtime_error);
|
||||
BOOST_CHECK_THROW(CallRPC("listunspent 0 1 not_array"), runtime_error);
|
||||
BOOST_CHECK_THROW(CallRPC("listunspent 0 1 [] extra"), runtime_error);
|
||||
BOOST_CHECK_NO_THROW(r=CallRPC("listunspent 0 1 []"));
|
||||
BOOST_CHECK(r.get_array().empty());
|
||||
|
||||
BOOST_CHECK_NO_THROW(CallRPC("listreceivedbyaddress"));
|
||||
BOOST_CHECK_NO_THROW(CallRPC("listreceivedbyaddress 0"));
|
||||
BOOST_CHECK_THROW(CallRPC("listreceivedbyaddress not_int"), runtime_error);
|
||||
BOOST_CHECK_THROW(CallRPC("listreceivedbyaddress 0 not_bool"), runtime_error);
|
||||
BOOST_CHECK_NO_THROW(CallRPC("listreceivedbyaddress 0 true"));
|
||||
BOOST_CHECK_THROW(CallRPC("listreceivedbyaddress 0 true extra"), runtime_error);
|
||||
|
||||
BOOST_CHECK_NO_THROW(CallRPC("listreceivedbyaccount"));
|
||||
BOOST_CHECK_NO_THROW(CallRPC("listreceivedbyaccount 0"));
|
||||
BOOST_CHECK_THROW(CallRPC("listreceivedbyaccount not_int"), runtime_error);
|
||||
BOOST_CHECK_THROW(CallRPC("listreceivedbyaccount 0 not_bool"), runtime_error);
|
||||
BOOST_CHECK_NO_THROW(CallRPC("listreceivedbyaccount 0 true"));
|
||||
BOOST_CHECK_THROW(CallRPC("listreceivedbyaccount 0 true extra"), runtime_error);
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(rpc_rawparams)
|
||||
{
|
||||
// Test raw transaction API argument handling
|
||||
|
@ -88,14 +117,6 @@ BOOST_AUTO_TEST_CASE(rpc_rawparams)
|
|||
BOOST_CHECK_THROW(CallRPC("getrawtransaction not_hex"), runtime_error);
|
||||
BOOST_CHECK_THROW(CallRPC("getrawtransaction a3b807410df0b60fcb9736768df5823938b2f838694939ba45f3c0a1bff150ed not_int"), runtime_error);
|
||||
|
||||
BOOST_CHECK_NO_THROW(CallRPC("listunspent"));
|
||||
BOOST_CHECK_THROW(CallRPC("listunspent string"), runtime_error);
|
||||
BOOST_CHECK_THROW(CallRPC("listunspent 0 string"), runtime_error);
|
||||
BOOST_CHECK_THROW(CallRPC("listunspent 0 1 not_array"), runtime_error);
|
||||
BOOST_CHECK_NO_THROW(r=CallRPC("listunspent 0 1 []"));
|
||||
BOOST_CHECK_THROW(r=CallRPC("listunspent 0 1 [] extra"), runtime_error);
|
||||
BOOST_CHECK(r.get_array().empty());
|
||||
|
||||
BOOST_CHECK_THROW(CallRPC("createrawtransaction"), runtime_error);
|
||||
BOOST_CHECK_THROW(CallRPC("createrawtransaction null null"), runtime_error);
|
||||
BOOST_CHECK_THROW(CallRPC("createrawtransaction not_array"), runtime_error);
|
||||
|
|
Loading…
Reference in a new issue