Tests for RPC delegators, delegators_count

This commit is contained in:
SergiySW 2017-07-24 10:03:54 +03:00
commit 70e6f93f22
2 changed files with 64 additions and 3 deletions

View file

@ -2162,3 +2162,64 @@ TEST (rpc, wallet_balances)
ASSERT_EQ ("0", pending_text);
}
}
TEST (rpc, delegators)
{
rai::system system (24000, 1);
rai::keypair key;
system.wallet (0)->insert_adhoc (rai::test_genesis_key.prv);
system.wallet (0)->insert_adhoc (key.prv);
auto & node1 (*system.nodes [0]);
auto latest (system.nodes [0]->latest (rai::test_genesis_key.pub));
rai::send_block send (latest, key.pub, 100, rai::test_genesis_key.prv, rai::test_genesis_key.pub, node1.generate_work (latest));
system.nodes [0]->process (send);
rai::open_block open (send.hash (), rai::test_genesis_key.pub, key.pub, key.prv, key.pub, node1.generate_work (key.pub));
ASSERT_EQ (rai::process_result::progress, system.nodes [0]->process (open).code);
rai::rpc rpc (system.service, *system.nodes [0], rai::rpc_config (true));
rpc.start ();
boost::property_tree::ptree request;
request.put ("action", "delegators");
request.put ("account", rai::test_genesis_key.pub.to_account ());
test_response response (request, rpc, system.service);
while (response.status == 0)
{
system.poll ();
}
ASSERT_EQ (200, response.status);
auto & delegators_node (response.json.get_child ("delegators"));
boost::property_tree::ptree delegators;
for (auto i (delegators_node.begin ()), n (delegators_node.end ()); i != n; ++i)
{
delegators.put ((i->first), (i->second.get <std::string> ("")));
}
ASSERT_EQ (2, delegators.size ());
ASSERT_EQ ("100", delegators.get <std::string> (rai::test_genesis_key.pub.to_account ()));
ASSERT_EQ ("340282366920938463463374607431768211355", delegators.get <std::string> (key.pub.to_account ()));
}
TEST (rpc, delegators_count)
{
rai::system system (24000, 1);
rai::keypair key;
system.wallet (0)->insert_adhoc (rai::test_genesis_key.prv);
system.wallet (0)->insert_adhoc (key.prv);
auto & node1 (*system.nodes [0]);
auto latest (system.nodes [0]->latest (rai::test_genesis_key.pub));
rai::send_block send (latest, key.pub, 100, rai::test_genesis_key.prv, rai::test_genesis_key.pub, node1.generate_work (latest));
system.nodes [0]->process (send);
rai::open_block open (send.hash (), rai::test_genesis_key.pub, key.pub, key.prv, key.pub, node1.generate_work (key.pub));
ASSERT_EQ (rai::process_result::progress, system.nodes [0]->process (open).code);
rai::rpc rpc (system.service, *system.nodes [0], rai::rpc_config (true));
rpc.start ();
boost::property_tree::ptree request;
request.put ("action", "delegators_count");
request.put ("account", rai::test_genesis_key.pub.to_account ());
test_response response (request, rpc, system.service);
while (response.status == 0)
{
system.poll ();
}
ASSERT_EQ (200, response.status);
std::string count (response.json.get <std::string> ("count"));
ASSERT_EQ ("2", count);
}

View file

@ -868,9 +868,9 @@ void rai::rpc_handler::delegators ()
auto block (node.store.block_get (transaction, info.rep_block));
assert (block != nullptr);
if (block->representative() == account) {
rai::account account_l (i->first);
auto balance (node.ledger.account_balance (transaction, account_l));
delegators.put (account_l.to_account (), balance.convert_to <std::string> ());
std::string balance;
rai::uint128_union (info.balance).encode_dec (balance);
delegators.put (rai::account (i->first).to_account (), balance);
}
}
response_l.add_child ("delegators", delegators);