COOPENOMICS
v1
Кооперативная Экономика
|
#include <boost/test/unit_test.hpp>
#include <eosio/testing/tester.hpp>
#include <eosio/chain/abi_serializer.hpp>
#include <eosio/chain/global_property_object.hpp>
#include <eosio/chain/wast_to_wasm.hpp>
#include <fc/variant_object.hpp>
#include "contracts.hpp"
#include "test_symbol.hpp"
Классы | |
class | eosio_msig_tester |
Определения типов | |
using | mvo = fc::mutable_variant_object |
Функции | |
BOOST_FIXTURE_TEST_CASE (propose_approve_execute, eosio_msig_tester) | |
FC_LOG_AND_RETHROW () BOOST_FIXTURE_TEST_CASE(propose_approve_unapprove | |
push_action ("alice"_n, "propose"_n, mvo()("proposer", "alice")("proposal_name", "first")("trx", trx)("requested", vector< permission_level >{{ "alice"_n, config::active_name }})) | |
push_action ("alice"_n, "approve"_n, mvo()("proposer", "alice")("proposal_name", "first")("level", permission_level{ "alice"_n, config::active_name })) | |
push_action ("alice"_n, "unapprove"_n, mvo()("proposer", "alice")("proposal_name", "first")("level", permission_level{ "alice"_n, config::active_name })) | |
alice ("proposal_name", "first")("executer" | |
eosio_assert_message_is ("transaction authorization failed")) | |
push_action ("alice"_n, "propose"_n, mvo()("proposer", "alice")("proposal_name", "first")("trx", trx)("requested", vector< permission_level >{ { "alice"_n, config::active_name }, { "bob"_n, config::active_name } })) | |
push_action ("bob"_n, "approve"_n, mvo()("proposer", "alice")("proposal_name", "first")("level", permission_level{ "bob"_n, config::active_name })) | |
check_traces (trace, { {{"receiver", "eosio.msig"_n}, {"act_name", "exec"_n}}, {{"receiver", config::system_account_name}, {"act_name", "reqauth"_n}} }) | |
alice ("proposal_name", "third")("trx" | |
trx ("requested", vector< permission_level >{ { "alice"_n, config::active_name } })) | |
produce_blocks () | |
push_action ("alice"_n, "propose"_n, mvo()("proposer", "alice")("proposal_name", "first")("trx", trx)("requested", perm)) | |
check_traces (trace, { {{"receiver", "eosio.msig"_n}, {"act_name", "exec"_n}}, {{"receiver", config::system_account_name}, {"act_name", "setcode"_n}} }) | |
set_producers ({"alice"_n,"bob"_n,"carol"_n}) | |
produce_blocks (50) | |
create_accounts ({ "eosio.token"_n, "eosio.rex"_n }) | |
set_code ("eosio.token"_n, contracts::token_wasm()) | |
set_abi ("eosio.token"_n, contracts::token_abi().data()) | |
create_currency ("eosio.token"_n, config::system_account_name, core_sym::from_string("10000000000.0000")) | |
issue (config::system_account_name, core_sym::from_string("1000000000.0000")) | |
BOOST_REQUIRE_EQUAL (core_sym::from_string("1000000000.0000"), get_balance(config::system_account_name)+get_balance("eosio.ramfee"_n)+get_balance("eosio.stake"_n)+get_balance("eosio.ram"_n)) | |
set_code (config::system_account_name, contracts::system_wasm()) | |
set_abi (config::system_account_name, contracts::system_abi().data()) | |
create_account_with_resources ("alice1111111"_n, "eosio"_n, core_sym::from_string("1.0000"), false) | |
create_account_with_resources ("bob111111111"_n, "eosio"_n, core_sym::from_string("0.4500"), false) | |
create_account_with_resources ("carol1111111"_n, "eosio"_n, core_sym::from_string("1.0000"), false) | |
push_action ("carol"_n, "approve"_n, mvo()("proposer", "alice")("proposal_name", "first")("level", permission_level{ "carol"_n, config::active_name })) | |
BOOST_REQUIRE_EXCEPTION (create_account_with_resources("alice1111112"_n, "eosio"_n, core_sym::from_string("1.0000"), false), eosio_assert_message_exception, eosio_assert_message_is("rejecting all actions")) | |
create_accounts ({ "apple"_n }) | |
set_producers ({"alice"_n,"bob"_n,"carol"_n, "apple"_n}) | |
BOOST_REQUIRE_EQUAL (core_sym::from_string("1000000000.0000"), get_balance(config::system_account_name)) | |
BOOST_REQUIRE_EXCEPTION (push_action("alice"_n, "exec"_n, mvo()("proposer", "alice")("proposal_name", "first")("executer", "alice")), eosio_assert_message_exception, eosio_assert_message_is("transaction authorization failed")) | |
push_action ("apple"_n, "approve"_n, mvo()("proposer", "alice")("proposal_name", "first")("level", permission_level{ "apple"_n, config::active_name })) | |
push_action ("alice"_n, "invalidate"_n, mvo()("account", "alice")) | |
set_abi ("eosio.msig"_n, contracts::util::msig_abi_old().data()) | |
set_code ("eosio.msig"_n, contracts::msig_wasm()) | |
set_abi ("eosio.msig"_n, contracts::msig_abi().data()) | |
push_action ("alice"_n, "approve"_n, mvo()("proposer", "alice")("proposal_name", "first")("level", permission_level{ "alice"_n, config::active_name })("proposal_hash", trx_hash)) | |
push_action ("alice"_n, "propose"_n, mvo()("proposer", "alice")("proposal_name", "first")("trx", trx1)("requested", vector< permission_level >{{ "alice"_n, config::active_name }})) | |
push_action ("alice"_n, "cancel"_n, mvo()("proposer", "alice")("proposal_name", "first")("canceler", "alice")) | |
push_action ("alice"_n, "propose"_n, mvo()("proposer", "alice")("proposal_name", "first")("trx", trx2)("requested", vector< permission_level >{ { "alice"_n, config::active_name }, { "alice"_n, config::owner_name } })) | |
set_code ("sendinline"_n, system_contracts::testing::test_contracts::sendinline_wasm()) | |
set_abi ("sendinline"_n, system_contracts::testing::test_contracts::sendinline_abi().data()) | |
create_accounts ({"wrongcon"_n}) | |
set_code ("wrongcon"_n, system_contracts::testing::test_contracts::sendinline_wasm()) | |
set_abi ("wrongcon"_n, system_contracts::testing::test_contracts::sendinline_abi().data()) | |
eosio ("action_name", "reqauth")("auths" | |
check_traces (trace, { {{"receiver", "sendinline"_n}, {"act_name", "send"_n}}, {{"receiver", config::system_account_name}, {"act_name", "reqauth"_n}} }) | |
Переменные | |
eosio_msig_tester | try |
proposer | |
alice | |
eosio_assert_message_exception | |
transaction_trace_ptr | trace |
params | max_inline_action_size = 512 * 1024 |
vector< permission_level > | perm = { { "alice"_n, config::active_name }, { "bob"_n, config::active_name } } |
auto | wasm = contracts::util::exchange_wasm() |
fc::variant | pretty_trx |
transaction | trx = reqauth( "alice"_n, {permission_level{"alice"_n, config::active_name}}, abi_serializer_max_time ) |
vector< permission_level > | action_perm = {{"eosio"_n, config::active_name}} |
auto | trx_hash = fc::sha256::hash( trx ) |
auto | not_trx_hash = fc::sha256::hash( trx_hash ) |
permission_level | |
auto | trx1_hash = fc::sha256::hash( trx1 ) |
auto | trx2 |
action | act = get_action( config::system_account_name, "reqauth"_n, {}, mvo()("from", "alice")) |
contract | |
action | approve_act |
using mvo = fc::mutable_variant_object |
alice | ( | "proposal_name" | , |
"first" | |||
) |
alice | ( | "proposal_name" | , |
"third" | |||
) |
BOOST_FIXTURE_TEST_CASE | ( | propose_approve_execute | , |
eosio_msig_tester | |||
) |
BOOST_REQUIRE_EQUAL | ( | core_sym::from_string("1000000000.0000") | , |
get_balance(config::system_account_name) | |||
) |
BOOST_REQUIRE_EQUAL | ( | core_sym::from_string("1000000000.0000") | , |
get_balance(config::system_account_name)+get_balance("eosio.ramfee"_n)+get_balance("eosio.stake"_n)+get_balance("eosio.ram"_n) | |||
) |
BOOST_REQUIRE_EXCEPTION | ( | create_account_with_resources("alice1111112"_n, "eosio"_n, core_sym::from_string("1.0000"), false) | , |
eosio_assert_message_exception | , | ||
eosio_assert_message_is("rejecting all actions") | |||
) |
BOOST_REQUIRE_EXCEPTION | ( | push_action("alice"_n, "exec"_n, mvo()("proposer", "alice")("proposal_name", "first")("executer", "alice")) | , |
eosio_assert_message_exception | , | ||
eosio_assert_message_is("transaction authorization failed") | |||
) |
check_traces | ( | trace | , |
{ {{"receiver", "eosio.msig"_n}, {"act_name", "exec"_n}}, {{"receiver", config::system_account_name}, {"act_name", "reqauth"_n}} } | |||
) |
check_traces | ( | trace | , |
{ {{"receiver", "eosio.msig"_n}, {"act_name", "exec"_n}}, {{"receiver", config::system_account_name}, {"act_name", "setcode"_n}} } | |||
) |
check_traces | ( | trace | , |
{ {{"receiver", "sendinline"_n}, {"act_name", "send"_n}}, {{"receiver", config::system_account_name}, {"act_name", "reqauth"_n}} } | |||
) |
create_account_with_resources | ( | "alice1111111" | _n, |
"eosio" | _n, | ||
core_sym::from_string("1.0000") | , | ||
false | |||
) |
create_account_with_resources | ( | "bob111111111" | _n, |
"eosio" | _n, | ||
core_sym::from_string("0.4500") | , | ||
false | |||
) |
create_account_with_resources | ( | "carol1111111" | _n, |
"eosio" | _n, | ||
core_sym::from_string("1.0000") | , | ||
false | |||
) |
create_accounts | ( | { "apple"_n } | ) |
create_accounts | ( | { "eosio.token"_n, "eosio.rex"_n } | ) |
create_accounts | ( | {"wrongcon"_n} | ) |
create_currency | ( | "eosio.token" | _n, |
config::system_account_name | , | ||
core_sym::from_string("10000000000.0000") | |||
) |
eosio | ( | "action_name" | , |
"reqauth" | |||
) |
eosio_assert_message_is | ( | "transaction authorization failed" | ) |
FC_LOG_AND_RETHROW | ( | ) |
issue | ( | config::system_account_name | , |
core_sym::from_string("1000000000.0000") | |||
) |
produce_blocks | ( | ) |
produce_blocks | ( | 50 | ) |
push_action | ( | "alice" | _n, |
"approve" | _n, | ||
mvo()("proposer", "alice")("proposal_name", "first")("level", permission_level{ "alice"_n, config::active_name })("proposal_hash", trx_hash) | |||
) |
push_action | ( | "alice" | _n, |
"approve" | _n, | ||
mvo()("proposer", "alice")("proposal_name", "first")("level", permission_level{ "alice"_n, config::active_name }) | |||
) |
push_action | ( | "alice" | _n, |
"cancel" | _n, | ||
mvo()("proposer", "alice")("proposal_name", "first")("canceler", "alice") | |||
) |
push_action | ( | "alice" | _n, |
"propose" | _n, | ||
mvo()("proposer", "alice")("proposal_name", "first")("trx", trx)("requested", perm) | |||
) |
push_action | ( | "alice" | _n, |
"propose" | _n, | ||
mvo()("proposer", "alice")("proposal_name", "first")("trx", trx)("requested", vector< permission_level >{ { "alice"_n, config::active_name }, { "bob"_n, config::active_name } }) | |||
) |
push_action | ( | "alice" | _n, |
"propose" | _n, | ||
mvo()("proposer", "alice")("proposal_name", "first")("trx", trx)("requested", vector< permission_level >{{ "alice"_n, config::active_name }}) | |||
) |
push_action | ( | "alice" | _n, |
"propose" | _n, | ||
mvo()("proposer", "alice")("proposal_name", "first")("trx", trx1)("requested", vector< permission_level >{{ "alice"_n, config::active_name }}) | |||
) |
push_action | ( | "alice" | _n, |
"propose" | _n, | ||
mvo()("proposer", "alice")("proposal_name", "first")("trx", trx2)("requested", vector< permission_level >{ { "alice"_n, config::active_name }, { "alice"_n, config::owner_name } }) | |||
) |
push_action | ( | "alice" | _n, |
"unapprove" | _n, | ||
mvo()("proposer", "alice")("proposal_name", "first")("level", permission_level{ "alice"_n, config::active_name }) | |||
) |
push_action | ( | "apple" | _n, |
"approve" | _n, | ||
mvo()("proposer", "alice")("proposal_name", "first")("level", permission_level{ "apple"_n, config::active_name }) | |||
) |
push_action | ( | "bob" | _n, |
"approve" | _n, | ||
mvo()("proposer", "alice")("proposal_name", "first")("level", permission_level{ "bob"_n, config::active_name }) | |||
) |
push_action | ( | "carol" | _n, |
"approve" | _n, | ||
mvo()("proposer", "alice")("proposal_name", "first")("level", permission_level{ "carol"_n, config::active_name }) | |||
) |
set_abi | ( | "eosio.msig" | _n, |
contracts::msig_abi().data() | |||
) |
set_abi | ( | "eosio.msig" | _n, |
contracts::util::msig_abi_old().data() | |||
) |
set_abi | ( | "eosio.token" | _n, |
contracts::token_abi().data() | |||
) |
set_abi | ( | "sendinline" | _n, |
system_contracts::testing::test_contracts::sendinline_abi().data() | |||
) |
set_abi | ( | "wrongcon" | _n, |
system_contracts::testing::test_contracts::sendinline_abi().data() | |||
) |
set_abi | ( | config::system_account_name | , |
contracts::system_abi().data() | |||
) |
set_code | ( | "eosio.msig" | _n, |
contracts::msig_wasm() | |||
) |
set_code | ( | "eosio.token" | _n, |
contracts::token_wasm() | |||
) |
set_code | ( | "sendinline" | _n, |
system_contracts::testing::test_contracts::sendinline_wasm() | |||
) |
set_code | ( | "wrongcon" | _n, |
system_contracts::testing::test_contracts::sendinline_wasm() | |||
) |
set_code | ( | config::system_account_name | , |
contracts::system_wasm() | |||
) |
set_producers | ( | {"alice"_n,"bob"_n,"carol"_n, "apple"_n} | ) |
set_producers | ( | {"alice"_n,"bob"_n,"carol"_n} | ) |
trx | ( | "requested" | , |
vector< permission_level >{ { "alice"_n, config::active_name } } | |||
) |
vector< permission_level > action_perm = {{"eosio"_n, config::active_name}} |
alice |
action approve_act |
contract |
eosio_assert_message_exception |
params max_inline_action_size = 512 * 1024 |
auto not_trx_hash = fc::sha256::hash( trx_hash ) |
vector< permission_level > perm = { { "alice"_n, config::active_name }, { "bob"_n, config::active_name } } |
permission_level |
fc::variant pretty_trx |
proposer |
transaction_trace_ptr trace |
transaction trx = reqauth( "alice"_n, {permission_level{"alice"_n, config::active_name}}, abi_serializer_max_time ) |
auto trx1_hash = fc::sha256::hash( trx1 ) |
auto trx2 |
auto trx_hash = fc::sha256::hash( trx ) |
auto wasm = contracts::util::exchange_wasm() |