refactor select_top_fifteen_sons test

This commit is contained in:
gladcow 2019-10-22 13:17:47 +03:00
parent e7b717bb63
commit c798f40643

View file

@ -24,9 +24,67 @@
#include "cli_fixture.hpp"
#include <fc/smart_ref_impl.hpp>
#include <fc/string.hpp>
#include <boost/test/unit_test.hpp>
class son_test_helper
{
cli_fixture& fixture_;
public:
son_test_helper(cli_fixture& fixture):
fixture_(fixture)
{
fixture_.init_nathan();
}
void create_son(const std::string& account_name, const std::string& son_url,
bool generate_maintenance = true)
{
graphene::wallet::brain_key_info bki;
signed_transaction create_tx;
signed_transaction transfer_tx;
signed_transaction upgrade_tx;
account_object son_account;
son_object son_obj;
// create son account
bki = fixture_.con.wallet_api_ptr->suggest_brain_key();
BOOST_CHECK(!bki.brain_priv_key.empty());
create_tx = fixture_.con.wallet_api_ptr->create_account_with_brain_key(
bki.brain_priv_key, account_name, "nathan", "nathan", true
);
// save the private key for this new account in the wallet file
BOOST_CHECK(fixture_.con.wallet_api_ptr->import_key(account_name, bki.wif_priv_key));
fixture_.con.wallet_api_ptr->save_wallet_file(fixture_.con.wallet_filename);
// attempt to give son account some CORE tokens
BOOST_TEST_MESSAGE("Transferring CORE tokens from Nathan to son account");
transfer_tx = fixture_.con.wallet_api_ptr->transfer(
"nathan", account_name, "15000", "1.3.0", "Here are some CORE token for your new account", true
);
BOOST_CHECK(fixture_.generate_block());
// upgrade son account
BOOST_TEST_MESSAGE("Upgrading son account to LTM");
upgrade_tx = fixture_.con.wallet_api_ptr->upgrade_account(account_name, true);
son_account = fixture_.con.wallet_api_ptr->get_account(account_name);
// verify that the upgrade was successful
BOOST_CHECK(son_account.is_lifetime_member());
BOOST_CHECK(fixture_.generate_block());
create_tx = fixture_.con.wallet_api_ptr->create_son(account_name, son_url, true);
if (generate_maintenance)
BOOST_CHECK(fixture_.generate_maintenance_block());
}
};
///////////////////////
// SON CLI
///////////////////////
@ -291,7 +349,7 @@ BOOST_FIXTURE_TEST_CASE( select_top_fifteen_sons, cli_fixture )
BOOST_TEST_MESSAGE("SON cli wallet tests begin");
try
{
INVOKE(upgrade_nathan_account);
son_test_helper sth(*this);
graphene::wallet::brain_key_info bki;
signed_transaction create_tx;
@ -302,725 +360,58 @@ BOOST_FIXTURE_TEST_CASE( select_top_fifteen_sons, cli_fixture )
son_object son_obj;
global_property_object gpo;
// create sonaccount01
bki = con.wallet_api_ptr->suggest_brain_key();
BOOST_CHECK(!bki.brain_priv_key.empty());
create_tx = con.wallet_api_ptr->create_account_with_brain_key(
bki.brain_priv_key, "sonaccount01", "nathan", "nathan", true
);
// save the private key for this new account in the wallet file
BOOST_CHECK(con.wallet_api_ptr->import_key("sonaccount01", bki.wif_priv_key));
con.wallet_api_ptr->save_wallet_file(con.wallet_filename);
// attempt to give sonaccount01 some CORE tokens
BOOST_TEST_MESSAGE("Transferring CORE tokens from Nathan to sonaccount01");
transfer_tx = con.wallet_api_ptr->transfer(
"nathan", "sonaccount01", "15000", "1.3.0", "Here are some CORE token for your new account", true
);
acc_before_upgrade = con.wallet_api_ptr->get_account("sonaccount01");
BOOST_CHECK(generate_block(app1));
// upgrade sonaccount01
BOOST_TEST_MESSAGE("Upgrading sonaccount01 to LTM");
upgrade_tx = con.wallet_api_ptr->upgrade_account("sonaccount01", true);
acc_after_upgrade = con.wallet_api_ptr->get_account("sonaccount01");
// verify that the upgrade was successful
BOOST_CHECK_PREDICATE(
std::not_equal_to<uint32_t>(),
(acc_before_upgrade.membership_expiration_date.sec_since_epoch())
(acc_after_upgrade.membership_expiration_date.sec_since_epoch())
);
BOOST_CHECK(acc_after_upgrade.is_lifetime_member());
BOOST_CHECK(generate_block(app1));
// create sonaccount02
bki = con.wallet_api_ptr->suggest_brain_key();
BOOST_CHECK(!bki.brain_priv_key.empty());
create_tx = con.wallet_api_ptr->create_account_with_brain_key(
bki.brain_priv_key, "sonaccount02", "nathan", "nathan", true
);
// save the private key for this new account in the wallet file
BOOST_CHECK(con.wallet_api_ptr->import_key("sonaccount02", bki.wif_priv_key));
con.wallet_api_ptr->save_wallet_file(con.wallet_filename);
// attempt to give sonaccount02 some CORE tokens
BOOST_TEST_MESSAGE("Transferring CORE tokens from Nathan to sonaccount02");
transfer_tx = con.wallet_api_ptr->transfer(
"nathan", "sonaccount02", "15000", "1.3.0", "Here are some CORE token for your new account", true
);
acc_before_upgrade = con.wallet_api_ptr->get_account("sonaccount02");
BOOST_CHECK(generate_block(app1));
// upgrade sonaccount02
BOOST_TEST_MESSAGE("Upgrading sonaccount02 to LTM");
upgrade_tx = con.wallet_api_ptr->upgrade_account("sonaccount02", true);
acc_after_upgrade = con.wallet_api_ptr->get_account("sonaccount02");
// verify that the upgrade was successful
BOOST_CHECK_PREDICATE(
std::not_equal_to<uint32_t>(),
(acc_before_upgrade.membership_expiration_date.sec_since_epoch())
(acc_after_upgrade.membership_expiration_date.sec_since_epoch())
);
BOOST_CHECK(acc_after_upgrade.is_lifetime_member());
BOOST_CHECK(generate_block(app1));
// create sonaccount03
bki = con.wallet_api_ptr->suggest_brain_key();
BOOST_CHECK(!bki.brain_priv_key.empty());
create_tx = con.wallet_api_ptr->create_account_with_brain_key(
bki.brain_priv_key, "sonaccount03", "nathan", "nathan", true
);
// save the private key for this new account in the wallet file
BOOST_CHECK(con.wallet_api_ptr->import_key("sonaccount03", bki.wif_priv_key));
con.wallet_api_ptr->save_wallet_file(con.wallet_filename);
// attempt to give sonaccount03 some CORE tokens
BOOST_TEST_MESSAGE("Transferring CORE tokens from Nathan to sonaccount03");
transfer_tx = con.wallet_api_ptr->transfer(
"nathan", "sonaccount03", "15000", "1.3.0", "Here are some CORE token for your new account", true
);
acc_before_upgrade = con.wallet_api_ptr->get_account("sonaccount03");
BOOST_CHECK(generate_block(app1));
// upgrade sonaccount03
BOOST_TEST_MESSAGE("Upgrading sonaccount03 to LTM");
upgrade_tx = con.wallet_api_ptr->upgrade_account("sonaccount03", true);
acc_after_upgrade = con.wallet_api_ptr->get_account("sonaccount03");
// verify that the upgrade was successful
BOOST_CHECK_PREDICATE(
std::not_equal_to<uint32_t>(),
(acc_before_upgrade.membership_expiration_date.sec_since_epoch())
(acc_after_upgrade.membership_expiration_date.sec_since_epoch())
);
BOOST_CHECK(acc_after_upgrade.is_lifetime_member());
BOOST_CHECK(generate_block(app1));
// create sonaccount04
bki = con.wallet_api_ptr->suggest_brain_key();
BOOST_CHECK(!bki.brain_priv_key.empty());
create_tx = con.wallet_api_ptr->create_account_with_brain_key(
bki.brain_priv_key, "sonaccount04", "nathan", "nathan", true
);
// save the private key for this new account in the wallet file
BOOST_CHECK(con.wallet_api_ptr->import_key("sonaccount04", bki.wif_priv_key));
con.wallet_api_ptr->save_wallet_file(con.wallet_filename);
// attempt to give sonaccount04 some CORE tokens
BOOST_TEST_MESSAGE("Transferring CORE tokens from Nathan to sonaccount04");
transfer_tx = con.wallet_api_ptr->transfer(
"nathan", "sonaccount04", "15000", "1.3.0", "Here are some CORE token for your new account", true
);
acc_before_upgrade = con.wallet_api_ptr->get_account("sonaccount04");
BOOST_CHECK(generate_block(app1));
// upgrade sonaccount04
BOOST_TEST_MESSAGE("Upgrading sonaccount04 to LTM");
upgrade_tx = con.wallet_api_ptr->upgrade_account("sonaccount04", true);
acc_after_upgrade = con.wallet_api_ptr->get_account("sonaccount04");
// verify that the upgrade was successful
BOOST_CHECK_PREDICATE(
std::not_equal_to<uint32_t>(),
(acc_before_upgrade.membership_expiration_date.sec_since_epoch())
(acc_after_upgrade.membership_expiration_date.sec_since_epoch())
);
BOOST_CHECK(acc_after_upgrade.is_lifetime_member());
BOOST_CHECK(generate_block(app1));
// create sonaccount05
bki = con.wallet_api_ptr->suggest_brain_key();
BOOST_CHECK(!bki.brain_priv_key.empty());
create_tx = con.wallet_api_ptr->create_account_with_brain_key(
bki.brain_priv_key, "sonaccount05", "nathan", "nathan", true
);
// save the private key for this new account in the wallet file
BOOST_CHECK(con.wallet_api_ptr->import_key("sonaccount05", bki.wif_priv_key));
con.wallet_api_ptr->save_wallet_file(con.wallet_filename);
// attempt to give sonaccount05 some CORE tokens
BOOST_TEST_MESSAGE("Transferring CORE tokens from Nathan to sonaccount05");
transfer_tx = con.wallet_api_ptr->transfer(
"nathan", "sonaccount05", "15000", "1.3.0", "Here are some CORE token for your new account", true
);
acc_before_upgrade = con.wallet_api_ptr->get_account("sonaccount05");
BOOST_CHECK(generate_block(app1));
// upgrade sonaccount05
BOOST_TEST_MESSAGE("Upgrading sonaccount05 to LTM");
upgrade_tx = con.wallet_api_ptr->upgrade_account("sonaccount05", true);
acc_after_upgrade = con.wallet_api_ptr->get_account("sonaccount05");
// verify that the upgrade was successful
BOOST_CHECK_PREDICATE(
std::not_equal_to<uint32_t>(),
(acc_before_upgrade.membership_expiration_date.sec_since_epoch())
(acc_after_upgrade.membership_expiration_date.sec_since_epoch())
);
BOOST_CHECK(acc_after_upgrade.is_lifetime_member());
BOOST_CHECK(generate_block(app1));
// create sonaccount06
bki = con.wallet_api_ptr->suggest_brain_key();
BOOST_CHECK(!bki.brain_priv_key.empty());
create_tx = con.wallet_api_ptr->create_account_with_brain_key(
bki.brain_priv_key, "sonaccount06", "nathan", "nathan", true
);
// save the private key for this new account in the wallet file
BOOST_CHECK(con.wallet_api_ptr->import_key("sonaccount06", bki.wif_priv_key));
con.wallet_api_ptr->save_wallet_file(con.wallet_filename);
// attempt to give sonaccount06 some CORE tokens
BOOST_TEST_MESSAGE("Transferring CORE tokens from Nathan to sonaccount06");
transfer_tx = con.wallet_api_ptr->transfer(
"nathan", "sonaccount06", "15000", "1.3.0", "Here are some CORE token for your new account", true
);
acc_before_upgrade = con.wallet_api_ptr->get_account("sonaccount06");
BOOST_CHECK(generate_block(app1));
// upgrade sonaccount06
BOOST_TEST_MESSAGE("Upgrading sonaccount06 to LTM");
upgrade_tx = con.wallet_api_ptr->upgrade_account("sonaccount06", true);
acc_after_upgrade = con.wallet_api_ptr->get_account("sonaccount06");
// verify that the upgrade was successful
BOOST_CHECK_PREDICATE(
std::not_equal_to<uint32_t>(),
(acc_before_upgrade.membership_expiration_date.sec_since_epoch())
(acc_after_upgrade.membership_expiration_date.sec_since_epoch())
);
BOOST_CHECK(acc_after_upgrade.is_lifetime_member());
BOOST_CHECK(generate_block(app1));
// create sonaccount07
bki = con.wallet_api_ptr->suggest_brain_key();
BOOST_CHECK(!bki.brain_priv_key.empty());
create_tx = con.wallet_api_ptr->create_account_with_brain_key(
bki.brain_priv_key, "sonaccount07", "nathan", "nathan", true
);
// save the private key for this new account in the wallet file
BOOST_CHECK(con.wallet_api_ptr->import_key("sonaccount07", bki.wif_priv_key));
con.wallet_api_ptr->save_wallet_file(con.wallet_filename);
// attempt to give sonaccount07 some CORE tokens
BOOST_TEST_MESSAGE("Transferring CORE tokens from Nathan to sonaccount07");
transfer_tx = con.wallet_api_ptr->transfer(
"nathan", "sonaccount07", "15000", "1.3.0", "Here are some CORE token for your new account", true
);
acc_before_upgrade = con.wallet_api_ptr->get_account("sonaccount07");
BOOST_CHECK(generate_block(app1));
// upgrade sonaccount07
BOOST_TEST_MESSAGE("Upgrading sonaccount07 to LTM");
upgrade_tx = con.wallet_api_ptr->upgrade_account("sonaccount07", true);
acc_after_upgrade = con.wallet_api_ptr->get_account("sonaccount07");
// verify that the upgrade was successful
BOOST_CHECK_PREDICATE(
std::not_equal_to<uint32_t>(),
(acc_before_upgrade.membership_expiration_date.sec_since_epoch())
(acc_after_upgrade.membership_expiration_date.sec_since_epoch())
);
BOOST_CHECK(acc_after_upgrade.is_lifetime_member());
BOOST_CHECK(generate_block(app1));
// create sonaccount08
bki = con.wallet_api_ptr->suggest_brain_key();
BOOST_CHECK(!bki.brain_priv_key.empty());
create_tx = con.wallet_api_ptr->create_account_with_brain_key(
bki.brain_priv_key, "sonaccount08", "nathan", "nathan", true
);
// save the private key for this new account in the wallet file
BOOST_CHECK(con.wallet_api_ptr->import_key("sonaccount08", bki.wif_priv_key));
con.wallet_api_ptr->save_wallet_file(con.wallet_filename);
// attempt to give sonaccount08 some CORE tokens
BOOST_TEST_MESSAGE("Transferring CORE tokens from Nathan to sonaccount08");
transfer_tx = con.wallet_api_ptr->transfer(
"nathan", "sonaccount08", "15000", "1.3.0", "Here are some CORE token for your new account", true
);
acc_before_upgrade = con.wallet_api_ptr->get_account("sonaccount08");
BOOST_CHECK(generate_block(app1));
// upgrade sonaccount08
BOOST_TEST_MESSAGE("Upgrading sonaccount08 to LTM");
upgrade_tx = con.wallet_api_ptr->upgrade_account("sonaccount08", true);
acc_after_upgrade = con.wallet_api_ptr->get_account("sonaccount08");
// verify that the upgrade was successful
BOOST_CHECK_PREDICATE(
std::not_equal_to<uint32_t>(),
(acc_before_upgrade.membership_expiration_date.sec_since_epoch())
(acc_after_upgrade.membership_expiration_date.sec_since_epoch())
);
BOOST_CHECK(acc_after_upgrade.is_lifetime_member());
BOOST_CHECK(generate_block(app1));
// create sonaccount09
bki = con.wallet_api_ptr->suggest_brain_key();
BOOST_CHECK(!bki.brain_priv_key.empty());
create_tx = con.wallet_api_ptr->create_account_with_brain_key(
bki.brain_priv_key, "sonaccount09", "nathan", "nathan", true
);
// save the private key for this new account in the wallet file
BOOST_CHECK(con.wallet_api_ptr->import_key("sonaccount09", bki.wif_priv_key));
con.wallet_api_ptr->save_wallet_file(con.wallet_filename);
// attempt to give sonaccount09 some CORE tokens
BOOST_TEST_MESSAGE("Transferring CORE tokens from Nathan to sonaccount09");
transfer_tx = con.wallet_api_ptr->transfer(
"nathan", "sonaccount09", "15000", "1.3.0", "Here are some CORE token for your new account", true
);
acc_before_upgrade = con.wallet_api_ptr->get_account("sonaccount09");
BOOST_CHECK(generate_block(app1));
// upgrade sonaccount09
BOOST_TEST_MESSAGE("Upgrading sonaccount09 to LTM");
upgrade_tx = con.wallet_api_ptr->upgrade_account("sonaccount09", true);
acc_after_upgrade = con.wallet_api_ptr->get_account("sonaccount09");
// verify that the upgrade was successful
BOOST_CHECK_PREDICATE(
std::not_equal_to<uint32_t>(),
(acc_before_upgrade.membership_expiration_date.sec_since_epoch())
(acc_after_upgrade.membership_expiration_date.sec_since_epoch())
);
BOOST_CHECK(acc_after_upgrade.is_lifetime_member());
BOOST_CHECK(generate_block(app1));
// create sonaccount10
bki = con.wallet_api_ptr->suggest_brain_key();
BOOST_CHECK(!bki.brain_priv_key.empty());
create_tx = con.wallet_api_ptr->create_account_with_brain_key(
bki.brain_priv_key, "sonaccount10", "nathan", "nathan", true
);
// save the private key for this new account in the wallet file
BOOST_CHECK(con.wallet_api_ptr->import_key("sonaccount10", bki.wif_priv_key));
con.wallet_api_ptr->save_wallet_file(con.wallet_filename);
// attempt to give sonaccount10 some CORE tokens
BOOST_TEST_MESSAGE("Transferring CORE tokens from Nathan to sonaccount10");
transfer_tx = con.wallet_api_ptr->transfer(
"nathan", "sonaccount10", "15000", "1.3.0", "Here are some CORE token for your new account", true
);
acc_before_upgrade = con.wallet_api_ptr->get_account("sonaccount10");
BOOST_CHECK(generate_block(app1));
// upgrade sonaccount10
BOOST_TEST_MESSAGE("Upgrading sonaccount10 to LTM");
upgrade_tx = con.wallet_api_ptr->upgrade_account("sonaccount10", true);
acc_after_upgrade = con.wallet_api_ptr->get_account("sonaccount10");
// verify that the upgrade was successful
BOOST_CHECK_PREDICATE(
std::not_equal_to<uint32_t>(),
(acc_before_upgrade.membership_expiration_date.sec_since_epoch())
(acc_after_upgrade.membership_expiration_date.sec_since_epoch())
);
BOOST_CHECK(acc_after_upgrade.is_lifetime_member());
BOOST_CHECK(generate_block(app1));
// create sonaccount11
bki = con.wallet_api_ptr->suggest_brain_key();
BOOST_CHECK(!bki.brain_priv_key.empty());
create_tx = con.wallet_api_ptr->create_account_with_brain_key(
bki.brain_priv_key, "sonaccount11", "nathan", "nathan", true
);
// save the private key for this new account in the wallet file
BOOST_CHECK(con.wallet_api_ptr->import_key("sonaccount11", bki.wif_priv_key));
con.wallet_api_ptr->save_wallet_file(con.wallet_filename);
// attempt to give sonaccount11 some CORE tokens
BOOST_TEST_MESSAGE("Transferring CORE tokens from Nathan to sonaccount11");
transfer_tx = con.wallet_api_ptr->transfer(
"nathan", "sonaccount11", "15000", "1.3.0", "Here are some CORE token for your new account", true
);
acc_before_upgrade = con.wallet_api_ptr->get_account("sonaccount11");
BOOST_CHECK(generate_block(app1));
// upgrade sonaccount11
BOOST_TEST_MESSAGE("Upgrading sonaccount11 to LTM");
upgrade_tx = con.wallet_api_ptr->upgrade_account("sonaccount11", true);
acc_after_upgrade = con.wallet_api_ptr->get_account("sonaccount11");
// verify that the upgrade was successful
BOOST_CHECK_PREDICATE(
std::not_equal_to<uint32_t>(),
(acc_before_upgrade.membership_expiration_date.sec_since_epoch())
(acc_after_upgrade.membership_expiration_date.sec_since_epoch())
);
BOOST_CHECK(acc_after_upgrade.is_lifetime_member());
BOOST_CHECK(generate_block(app1));
// create sonaccount12
bki = con.wallet_api_ptr->suggest_brain_key();
BOOST_CHECK(!bki.brain_priv_key.empty());
create_tx = con.wallet_api_ptr->create_account_with_brain_key(
bki.brain_priv_key, "sonaccount12", "nathan", "nathan", true
);
// save the private key for this new account in the wallet file
BOOST_CHECK(con.wallet_api_ptr->import_key("sonaccount12", bki.wif_priv_key));
con.wallet_api_ptr->save_wallet_file(con.wallet_filename);
// attempt to give sonaccount12 some CORE tokens
BOOST_TEST_MESSAGE("Transferring CORE tokens from Nathan to sonaccount12");
transfer_tx = con.wallet_api_ptr->transfer(
"nathan", "sonaccount12", "15000", "1.3.0", "Here are some CORE token for your new account", true
);
acc_before_upgrade = con.wallet_api_ptr->get_account("sonaccount12");
BOOST_CHECK(generate_block(app1));
// upgrade sonaccount12
BOOST_TEST_MESSAGE("Upgrading sonaccount12 to LTM");
upgrade_tx = con.wallet_api_ptr->upgrade_account("sonaccount12", true);
acc_after_upgrade = con.wallet_api_ptr->get_account("sonaccount12");
// verify that the upgrade was successful
BOOST_CHECK_PREDICATE(
std::not_equal_to<uint32_t>(),
(acc_before_upgrade.membership_expiration_date.sec_since_epoch())
(acc_after_upgrade.membership_expiration_date.sec_since_epoch())
);
BOOST_CHECK(acc_after_upgrade.is_lifetime_member());
BOOST_CHECK(generate_block(app1));
// create sonaccount13
bki = con.wallet_api_ptr->suggest_brain_key();
BOOST_CHECK(!bki.brain_priv_key.empty());
create_tx = con.wallet_api_ptr->create_account_with_brain_key(
bki.brain_priv_key, "sonaccount13", "nathan", "nathan", true
);
// save the private key for this new account in the wallet file
BOOST_CHECK(con.wallet_api_ptr->import_key("sonaccount13", bki.wif_priv_key));
con.wallet_api_ptr->save_wallet_file(con.wallet_filename);
// attempt to give sonaccount13 some CORE tokens
BOOST_TEST_MESSAGE("Transferring CORE tokens from Nathan to sonaccount13");
transfer_tx = con.wallet_api_ptr->transfer(
"nathan", "sonaccount13", "15000", "1.3.0", "Here are some CORE token for your new account", true
);
acc_before_upgrade = con.wallet_api_ptr->get_account("sonaccount13");
BOOST_CHECK(generate_block(app1));
// upgrade sonaccount13
BOOST_TEST_MESSAGE("Upgrading sonaccount13 to LTM");
upgrade_tx = con.wallet_api_ptr->upgrade_account("sonaccount13", true);
acc_after_upgrade = con.wallet_api_ptr->get_account("sonaccount13");
// verify that the upgrade was successful
BOOST_CHECK_PREDICATE(
std::not_equal_to<uint32_t>(),
(acc_before_upgrade.membership_expiration_date.sec_since_epoch())
(acc_after_upgrade.membership_expiration_date.sec_since_epoch())
);
BOOST_CHECK(acc_after_upgrade.is_lifetime_member());
BOOST_CHECK(generate_block(app1));
// create sonaccount14
bki = con.wallet_api_ptr->suggest_brain_key();
BOOST_CHECK(!bki.brain_priv_key.empty());
create_tx = con.wallet_api_ptr->create_account_with_brain_key(
bki.brain_priv_key, "sonaccount14", "nathan", "nathan", true
);
// save the private key for this new account in the wallet file
BOOST_CHECK(con.wallet_api_ptr->import_key("sonaccount14", bki.wif_priv_key));
con.wallet_api_ptr->save_wallet_file(con.wallet_filename);
// attempt to give sonaccount14 some CORE tokens
BOOST_TEST_MESSAGE("Transferring CORE tokens from Nathan to sonaccount14");
transfer_tx = con.wallet_api_ptr->transfer(
"nathan", "sonaccount14", "15000", "1.3.0", "Here are some CORE token for your new account", true
);
acc_before_upgrade = con.wallet_api_ptr->get_account("sonaccount14");
BOOST_CHECK(generate_block(app1));
// upgrade sonaccount14
BOOST_TEST_MESSAGE("Upgrading sonaccount14 to LTM");
upgrade_tx = con.wallet_api_ptr->upgrade_account("sonaccount14", true);
acc_after_upgrade = con.wallet_api_ptr->get_account("sonaccount14");
// verify that the upgrade was successful
BOOST_CHECK_PREDICATE(
std::not_equal_to<uint32_t>(),
(acc_before_upgrade.membership_expiration_date.sec_since_epoch())
(acc_after_upgrade.membership_expiration_date.sec_since_epoch())
);
BOOST_CHECK(acc_after_upgrade.is_lifetime_member());
BOOST_CHECK(generate_block(app1));
// create sonaccount15
bki = con.wallet_api_ptr->suggest_brain_key();
BOOST_CHECK(!bki.brain_priv_key.empty());
create_tx = con.wallet_api_ptr->create_account_with_brain_key(
bki.brain_priv_key, "sonaccount15", "nathan", "nathan", true
);
// save the private key for this new account in the wallet file
BOOST_CHECK(con.wallet_api_ptr->import_key("sonaccount15", bki.wif_priv_key));
con.wallet_api_ptr->save_wallet_file(con.wallet_filename);
// attempt to give sonaccount15 some CORE tokens
BOOST_TEST_MESSAGE("Transferring CORE tokens from Nathan to sonaccount15");
transfer_tx = con.wallet_api_ptr->transfer(
"nathan", "sonaccount15", "15000", "1.3.0", "Here are some CORE token for your new account", true
);
acc_before_upgrade = con.wallet_api_ptr->get_account("sonaccount15");
BOOST_CHECK(generate_block(app1));
// upgrade sonaccount15
BOOST_TEST_MESSAGE("Upgrading sonaccount15 to LTM");
upgrade_tx = con.wallet_api_ptr->upgrade_account("sonaccount15", true);
acc_after_upgrade = con.wallet_api_ptr->get_account("sonaccount15");
// verify that the upgrade was successful
BOOST_CHECK_PREDICATE(
std::not_equal_to<uint32_t>(),
(acc_before_upgrade.membership_expiration_date.sec_since_epoch())
(acc_after_upgrade.membership_expiration_date.sec_since_epoch())
);
BOOST_CHECK(acc_after_upgrade.is_lifetime_member());
BOOST_CHECK(generate_block(app1));
// create sonaccount16
bki = con.wallet_api_ptr->suggest_brain_key();
BOOST_CHECK(!bki.brain_priv_key.empty());
create_tx = con.wallet_api_ptr->create_account_with_brain_key(
bki.brain_priv_key, "sonaccount16", "nathan", "nathan", true
);
// save the private key for this new account in the wallet file
BOOST_CHECK(con.wallet_api_ptr->import_key("sonaccount16", bki.wif_priv_key));
con.wallet_api_ptr->save_wallet_file(con.wallet_filename);
// attempt to give sonaccount16 some CORE tokens
BOOST_TEST_MESSAGE("Transferring CORE tokens from Nathan to sonaccount16");
transfer_tx = con.wallet_api_ptr->transfer(
"nathan", "sonaccount16", "15000", "1.3.0", "Here are some CORE token for your new account", true
);
acc_before_upgrade = con.wallet_api_ptr->get_account("sonaccount16");
BOOST_CHECK(generate_block(app1));
// upgrade sonaccount16
BOOST_TEST_MESSAGE("Upgrading sonaccount16 to LTM");
upgrade_tx = con.wallet_api_ptr->upgrade_account("sonaccount16", true);
acc_after_upgrade = con.wallet_api_ptr->get_account("sonaccount16");
// verify that the upgrade was successful
BOOST_CHECK_PREDICATE(
std::not_equal_to<uint32_t>(),
(acc_before_upgrade.membership_expiration_date.sec_since_epoch())
(acc_after_upgrade.membership_expiration_date.sec_since_epoch())
);
BOOST_CHECK(acc_after_upgrade.is_lifetime_member());
BOOST_CHECK(generate_block(app1));
// create 16 SONs
BOOST_TEST_MESSAGE("Creating 16 SONs");
create_tx = con.wallet_api_ptr->create_son("sonaccount01", "http://son01", "true");
create_tx = con.wallet_api_ptr->create_son("sonaccount02", "http://son02", "true");
create_tx = con.wallet_api_ptr->create_son("sonaccount03", "http://son03", "true");
create_tx = con.wallet_api_ptr->create_son("sonaccount04", "http://son04", "true");
create_tx = con.wallet_api_ptr->create_son("sonaccount05", "http://son05", "true");
create_tx = con.wallet_api_ptr->create_son("sonaccount06", "http://son06", "true");
create_tx = con.wallet_api_ptr->create_son("sonaccount07", "http://son07", "true");
create_tx = con.wallet_api_ptr->create_son("sonaccount08", "http://son08", "true");
create_tx = con.wallet_api_ptr->create_son("sonaccount09", "http://son09", "true");
create_tx = con.wallet_api_ptr->create_son("sonaccount10", "http://son10", "true");
create_tx = con.wallet_api_ptr->create_son("sonaccount11", "http://son11", "true");
create_tx = con.wallet_api_ptr->create_son("sonaccount12", "http://son12", "true");
create_tx = con.wallet_api_ptr->create_son("sonaccount13", "http://son13", "true");
create_tx = con.wallet_api_ptr->create_son("sonaccount14", "http://son14", "true");
create_tx = con.wallet_api_ptr->create_son("sonaccount15", "http://son15", "true");
create_tx = con.wallet_api_ptr->create_son("sonaccount16", "http://son16", "true");
BOOST_CHECK(generate_maintenance_block(app1));
son_obj = con.wallet_api_ptr->get_son("sonaccount01");
BOOST_CHECK(son_obj.son_account == con.wallet_api_ptr->get_account_id("sonaccount01"));
BOOST_CHECK_EQUAL(son_obj.url, "http://son01");
son_obj = con.wallet_api_ptr->get_son("sonaccount02");
BOOST_CHECK(son_obj.son_account == con.wallet_api_ptr->get_account_id("sonaccount02"));
BOOST_CHECK_EQUAL(son_obj.url, "http://son02");
son_obj = con.wallet_api_ptr->get_son("sonaccount03");
BOOST_CHECK(son_obj.son_account == con.wallet_api_ptr->get_account_id("sonaccount03"));
BOOST_CHECK_EQUAL(son_obj.url, "http://son03");
son_obj = con.wallet_api_ptr->get_son("sonaccount04");
BOOST_CHECK(son_obj.son_account == con.wallet_api_ptr->get_account_id("sonaccount04"));
BOOST_CHECK_EQUAL(son_obj.url, "http://son04");
son_obj = con.wallet_api_ptr->get_son("sonaccount05");
BOOST_CHECK(son_obj.son_account == con.wallet_api_ptr->get_account_id("sonaccount05"));
BOOST_CHECK_EQUAL(son_obj.url, "http://son05");
son_obj = con.wallet_api_ptr->get_son("sonaccount06");
BOOST_CHECK(son_obj.son_account == con.wallet_api_ptr->get_account_id("sonaccount06"));
BOOST_CHECK_EQUAL(son_obj.url, "http://son06");
son_obj = con.wallet_api_ptr->get_son("sonaccount07");
BOOST_CHECK(son_obj.son_account == con.wallet_api_ptr->get_account_id("sonaccount07"));
BOOST_CHECK_EQUAL(son_obj.url, "http://son07");
son_obj = con.wallet_api_ptr->get_son("sonaccount08");
BOOST_CHECK(son_obj.son_account == con.wallet_api_ptr->get_account_id("sonaccount08"));
BOOST_CHECK_EQUAL(son_obj.url, "http://son08");
son_obj = con.wallet_api_ptr->get_son("sonaccount09");
BOOST_CHECK(son_obj.son_account == con.wallet_api_ptr->get_account_id("sonaccount09"));
BOOST_CHECK_EQUAL(son_obj.url, "http://son09");
son_obj = con.wallet_api_ptr->get_son("sonaccount10");
BOOST_CHECK(son_obj.son_account == con.wallet_api_ptr->get_account_id("sonaccount10"));
BOOST_CHECK_EQUAL(son_obj.url, "http://son10");
son_obj = con.wallet_api_ptr->get_son("sonaccount11");
BOOST_CHECK(son_obj.son_account == con.wallet_api_ptr->get_account_id("sonaccount11"));
BOOST_CHECK_EQUAL(son_obj.url, "http://son11");
son_obj = con.wallet_api_ptr->get_son("sonaccount12");
BOOST_CHECK(son_obj.son_account == con.wallet_api_ptr->get_account_id("sonaccount12"));
BOOST_CHECK_EQUAL(son_obj.url, "http://son12");
son_obj = con.wallet_api_ptr->get_son("sonaccount13");
BOOST_CHECK(son_obj.son_account == con.wallet_api_ptr->get_account_id("sonaccount13"));
BOOST_CHECK_EQUAL(son_obj.url, "http://son13");
son_obj = con.wallet_api_ptr->get_son("sonaccount14");
BOOST_CHECK(son_obj.son_account == con.wallet_api_ptr->get_account_id("sonaccount14"));
BOOST_CHECK_EQUAL(son_obj.url, "http://son14");
son_obj = con.wallet_api_ptr->get_son("sonaccount15");
BOOST_CHECK(son_obj.son_account == con.wallet_api_ptr->get_account_id("sonaccount15"));
BOOST_CHECK_EQUAL(son_obj.url, "http://son15");
son_obj = con.wallet_api_ptr->get_son("sonaccount16");
BOOST_CHECK(son_obj.son_account == con.wallet_api_ptr->get_account_id("sonaccount16"));
BOOST_CHECK_EQUAL(son_obj.url, "http://son16");
gpo = con.wallet_api_ptr->get_global_properties();
unsigned int son_number = gpo.parameters.maximum_son_count;
// create son accounts
for(unsigned int i = 0; i < son_number + 1; i++)
{
sth.create_son("sonaccount" + fc::to_pretty_string(i),
"http://son" + fc::to_pretty_string(i), false);
}
BOOST_CHECK(generate_maintenance_block());
BOOST_TEST_MESSAGE("Voting for SONs");
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount01", "sonaccount01", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount02", "sonaccount02", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount03", "sonaccount03", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount04", "sonaccount04", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount05", "sonaccount05", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount06", "sonaccount06", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount07", "sonaccount07", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount08", "sonaccount08", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount09", "sonaccount09", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount10", "sonaccount10", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount11", "sonaccount11", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount12", "sonaccount12", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount13", "sonaccount13", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount14", "sonaccount14", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount15", "sonaccount15", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount16", "sonaccount16", true, true);
BOOST_CHECK(generate_maintenance_block(app1));
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount01", "sonaccount02", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount02", "sonaccount03", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount03", "sonaccount04", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount04", "sonaccount05", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount05", "sonaccount06", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount06", "sonaccount07", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount07", "sonaccount08", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount08", "sonaccount09", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount09", "sonaccount10", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount10", "sonaccount11", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount11", "sonaccount12", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount12", "sonaccount13", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount13", "sonaccount14", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount14", "sonaccount15", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount15", "sonaccount16", true, true);
for(unsigned int i = 0; i < son_number + 1; i++)
{
std::string name = "sonaccount" + fc::to_pretty_string(i);
vote_tx = con.wallet_api_ptr->vote_for_son(name, name, true, true);
}
BOOST_CHECK(generate_maintenance_block());
for(unsigned int i = 0; i < son_number; i++)
{
std::string name1 = "sonaccount" + fc::to_pretty_string(i);
std::string name2 = "sonaccount" + fc::to_pretty_string(i + 1);
vote_tx = con.wallet_api_ptr->vote_for_son(name1, name2, true, true);
}
gpo = con.wallet_api_ptr->get_global_properties();
BOOST_TEST_MESSAGE("gpo: " << gpo.active_sons.size());
BOOST_CHECK(generate_maintenance_block(app1));
BOOST_CHECK(generate_maintenance_block());
gpo = con.wallet_api_ptr->get_global_properties();
BOOST_TEST_MESSAGE("gpo: " << gpo.active_sons.size());
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount03", "sonaccount01", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount04", "sonaccount02", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount05", "sonaccount03", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount06", "sonaccount04", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount07", "sonaccount05", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount08", "sonaccount06", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount09", "sonaccount07", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount10", "sonaccount08", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount11", "sonaccount09", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount12", "sonaccount10", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount13", "sonaccount11", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount14", "sonaccount12", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount15", "sonaccount13", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount16", "sonaccount14", true, true);
for(unsigned int i = 0; i < son_number - 1; i++)
{
std::string name1 = "sonaccount" + fc::to_pretty_string(i + 2);
std::string name2 = "sonaccount" + fc::to_pretty_string(i);
vote_tx = con.wallet_api_ptr->vote_for_son(name1, name2, true, true);
}
gpo = con.wallet_api_ptr->get_global_properties();
BOOST_TEST_MESSAGE("gpo: " << gpo.active_sons.size());
BOOST_CHECK(generate_maintenance_block(app1));
BOOST_CHECK(generate_maintenance_block());
gpo = con.wallet_api_ptr->get_global_properties();
BOOST_TEST_MESSAGE("gpo: " << gpo.active_sons.size());
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount04", "sonaccount01", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount05", "sonaccount02", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount06", "sonaccount03", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount07", "sonaccount04", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount08", "sonaccount05", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount09", "sonaccount06", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount10", "sonaccount07", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount11", "sonaccount08", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount12", "sonaccount09", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount13", "sonaccount10", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount14", "sonaccount11", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount15", "sonaccount12", true, true);
vote_tx = con.wallet_api_ptr->vote_for_son("sonaccount16", "sonaccount13", true, true);
for(unsigned int i = 0; i < son_number - 2; i++)
{
std::string name1 = "sonaccount" + fc::to_pretty_string(i + 3);
std::string name2 = "sonaccount" + fc::to_pretty_string(i);
vote_tx = con.wallet_api_ptr->vote_for_son(name1, name2, true, true);
}
gpo = con.wallet_api_ptr->get_global_properties();
BOOST_TEST_MESSAGE("gpo: " << gpo.active_sons.size());
BOOST_CHECK(generate_maintenance_block(app1));
BOOST_CHECK(generate_maintenance_block());
BOOST_CHECK(gpo.active_sons.size() == 15);