From 70e6f93f22eb37539d66a1a2e71036f6a152a956 Mon Sep 17 00:00:00 2001 From: SergiySW Date: Mon, 24 Jul 2017 10:03:54 +0300 Subject: [PATCH] Tests for RPC delegators, delegators_count --- rai/core_test/rpc.cpp | 61 +++++++++++++++++++++++++++++++++++++++++++ rai/node/rpc.cpp | 6 ++--- 2 files changed, 64 insertions(+), 3 deletions(-) diff --git a/rai/core_test/rpc.cpp b/rai/core_test/rpc.cpp index fb3d2ce0..30dae4e7 100644 --- a/rai/core_test/rpc.cpp +++ b/rai/core_test/rpc.cpp @@ -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 (""))); + } + ASSERT_EQ (2, delegators.size ()); + ASSERT_EQ ("100", delegators.get (rai::test_genesis_key.pub.to_account ())); + ASSERT_EQ ("340282366920938463463374607431768211355", delegators.get (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 ("count")); + ASSERT_EQ ("2", count); +} diff --git a/rai/node/rpc.cpp b/rai/node/rpc.cpp index 945c94c9..66ad1247 100755 --- a/rai/node/rpc.cpp +++ b/rai/node/rpc.cpp @@ -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 balance; + rai::uint128_union (info.balance).encode_dec (balance); + delegators.put (rai::account (i->first).to_account (), balance); } } response_l.add_child ("delegators", delegators);