COOPENOMICS  v1
Кооперативная Экономика
Файл eosio.msig_tests.cpp
#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_levelperm = { { "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_levelaction_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
 

Типы

◆ mvo

using mvo = fc::mutable_variant_object

Функции

◆ alice() [1/2]

alice ( "proposal_name"  ,
"first"   
)

◆ alice() [2/2]

alice ( "proposal_name"  ,
"third"   
)

◆ BOOST_FIXTURE_TEST_CASE()

BOOST_FIXTURE_TEST_CASE ( propose_approve_execute  ,
eosio_msig_tester   
)

◆ BOOST_REQUIRE_EQUAL() [1/2]

BOOST_REQUIRE_EQUAL ( core_sym::from_string("1000000000.0000")  ,
get_balance(config::system_account_name)   
)

◆ BOOST_REQUIRE_EQUAL() [2/2]

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() [1/2]

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() [2/2]

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() [1/3]

check_traces ( trace  ,
{ {{"receiver", "eosio.msig"_n}, {"act_name", "exec"_n}}, {{"receiver", config::system_account_name}, {"act_name", "reqauth"_n}} }   
)

◆ check_traces() [2/3]

check_traces ( trace  ,
{ {{"receiver", "eosio.msig"_n}, {"act_name", "exec"_n}}, {{"receiver", config::system_account_name}, {"act_name", "setcode"_n}} }   
)

◆ check_traces() [3/3]

check_traces ( trace  ,
{ {{"receiver", "sendinline"_n}, {"act_name", "send"_n}}, {{"receiver", config::system_account_name}, {"act_name", "reqauth"_n}} }   
)

◆ create_account_with_resources() [1/3]

create_account_with_resources ( "alice1111111"  _n,
"eosio"  _n,
core_sym::from_string("1.0000")  ,
false   
)

◆ create_account_with_resources() [2/3]

create_account_with_resources ( "bob111111111"  _n,
"eosio"  _n,
core_sym::from_string("0.4500")  ,
false   
)

◆ create_account_with_resources() [3/3]

create_account_with_resources ( "carol1111111"  _n,
"eosio"  _n,
core_sym::from_string("1.0000")  ,
false   
)

◆ create_accounts() [1/3]

create_accounts ( { "apple"_n }  )

◆ create_accounts() [2/3]

create_accounts ( { "eosio.token"_n, "eosio.rex"_n }  )

◆ create_accounts() [3/3]

create_accounts ( {"wrongcon"_n}  )

◆ create_currency()

create_currency ( "eosio.token"  _n,
config::system_account_name  ,
core_sym::from_string("10000000000.0000")   
)

◆ eosio()

eosio ( "action_name"  ,
"reqauth"   
)

◆ eosio_assert_message_is()

eosio_assert_message_is ( "transaction authorization failed"  )

◆ FC_LOG_AND_RETHROW()

FC_LOG_AND_RETHROW ( )

◆ issue()

issue ( config::system_account_name  ,
core_sym::from_string("1000000000.0000")   
)

◆ produce_blocks() [1/2]

produce_blocks ( )

◆ produce_blocks() [2/2]

produce_blocks ( 50  )

◆ push_action() [1/13]

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() [2/13]

push_action ( "alice"  _n,
"approve"  _n,
mvo()("proposer", "alice")("proposal_name", "first")("level", permission_level{ "alice"_n, config::active_name })   
)

◆ push_action() [3/13]

push_action ( "alice"  _n,
"cancel"  _n,
mvo()("proposer", "alice")("proposal_name", "first")("canceler", "alice")   
)

◆ push_action() [4/13]

push_action ( "alice"  _n,
"invalidate"  _n,
mvo()("account", "alice")   
)

◆ push_action() [5/13]

push_action ( "alice"  _n,
"propose"  _n,
mvo()("proposer", "alice")("proposal_name", "first")("trx", trx)("requested", perm)   
)

◆ push_action() [6/13]

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() [7/13]

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() [8/13]

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() [9/13]

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() [10/13]

push_action ( "alice"  _n,
"unapprove"  _n,
mvo()("proposer", "alice")("proposal_name", "first")("level", permission_level{ "alice"_n, config::active_name })   
)

◆ push_action() [11/13]

push_action ( "apple"  _n,
"approve"  _n,
mvo()("proposer", "alice")("proposal_name", "first")("level", permission_level{ "apple"_n, config::active_name })   
)

◆ push_action() [12/13]

push_action ( "bob"  _n,
"approve"  _n,
mvo()("proposer", "alice")("proposal_name", "first")("level", permission_level{ "bob"_n, config::active_name })   
)

◆ push_action() [13/13]

push_action ( "carol"  _n,
"approve"  _n,
mvo()("proposer", "alice")("proposal_name", "first")("level", permission_level{ "carol"_n, config::active_name })   
)

◆ set_abi() [1/6]

set_abi ( "eosio.msig"  _n,
contracts::msig_abi().data()   
)

◆ set_abi() [2/6]

set_abi ( "eosio.msig"  _n,
contracts::util::msig_abi_old().data()   
)

◆ set_abi() [3/6]

set_abi ( "eosio.token"  _n,
contracts::token_abi().data()   
)

◆ set_abi() [4/6]

set_abi ( "sendinline"  _n,
system_contracts::testing::test_contracts::sendinline_abi().data()   
)

◆ set_abi() [5/6]

set_abi ( "wrongcon"  _n,
system_contracts::testing::test_contracts::sendinline_abi().data()   
)

◆ set_abi() [6/6]

set_abi ( config::system_account_name  ,
contracts::system_abi().data()   
)

◆ set_code() [1/5]

set_code ( "eosio.msig"  _n,
contracts::msig_wasm()   
)

◆ set_code() [2/5]

set_code ( "eosio.token"  _n,
contracts::token_wasm()   
)

◆ set_code() [3/5]

set_code ( "sendinline"  _n,
system_contracts::testing::test_contracts::sendinline_wasm()   
)

◆ set_code() [4/5]

set_code ( "wrongcon"  _n,
system_contracts::testing::test_contracts::sendinline_wasm()   
)

◆ set_code() [5/5]

set_code ( config::system_account_name  ,
contracts::system_wasm()   
)

◆ set_producers() [1/2]

set_producers ( {"alice"_n,"bob"_n,"carol"_n, "apple"_n}  )

◆ set_producers() [2/2]

set_producers ( {"alice"_n,"bob"_n,"carol"_n}  )

◆ trx()

trx ( "requested"  ,
vector< permission_level >{ { "alice"_n, config::active_name } }   
)

Переменные

◆ act

action act = get_action( config::system_account_name, "reqauth"_n, {}, mvo()("from", "alice"))

◆ action_perm

vector< permission_level > action_perm = {{"eosio"_n, config::active_name}}

◆ alice

alice

◆ approve_act

action approve_act
Инициализатор
= get_action("eosio.msig"_n, "approve"_n, {}, mvo()
("proposer", "bob")
("proposal_name", "first")
("level", permission_level{"sendinline"_n, config::active_name})
)
fc::mutable_variant_object mvo
Definition: eosio.msig_tests.cpp:17
permission_level
Definition: eosio.msig_tests.cpp:896

◆ contract

contract

◆ eosio_assert_message_exception

eosio_assert_message_exception

◆ max_inline_action_size

params max_inline_action_size = 512 * 1024

◆ not_trx_hash

auto not_trx_hash = fc::sha256::hash( trx_hash )

◆ perm

vector< permission_level > perm = { { "alice"_n, config::active_name }, { "bob"_n, config::active_name } }

◆ permission_level

permission_level
Инициализатор
{ "alice"_n, config::active_name })
("proposal_hash", not_trx_hash)
),
eosio::chain::crypto_api_exception,
fc_exception_message_is("hash mismatch")
)
auto not_trx_hash
Definition: eosio.msig_tests.cpp:883

◆ pretty_trx

fc::variant pretty_trx
Инициализатор
= fc::mutable_variant_object()
("expiration", "2020-01-01T00:30")
("ref_block_num", 2)
("ref_block_prefix", 3)
("max_net_usage_words", 0)
("max_cpu_usage_ms", 0)
("delay_sec", 0)
("actions", fc::variants({
fc::mutable_variant_object()
("account", name(config::system_account_name))
("name", "setcode")
("authorization", perm)
("data", fc::mutable_variant_object()
("account", "alice")
("vmtype", 0)
("vmversion", 0)
("code", bytes( wasm.begin(), wasm.end() ))
)
})
)
auto wasm
Definition: eosio.msig_tests.cpp:344
vector< permission_level > perm
Definition: eosio.msig_tests.cpp:343

◆ proposer

proposer

◆ trace

transaction_trace_ptr trace
Инициализатор
= push_action( "alice"_n, "exec"_n, mvo()
("proposer", "alice")
("proposal_name", "first")
("executer", "alice")
)
push_action("alice"_n, "propose"_n, mvo()("proposer", "alice")("proposal_name", "first")("trx", trx)("requested", vector< permission_level >{{ "alice"_n, config::active_name }}))

◆ trx

transaction trx = reqauth( "alice"_n, {permission_level{"alice"_n, config::active_name}}, abi_serializer_max_time )

◆ trx1_hash

auto trx1_hash = fc::sha256::hash( trx1 )

◆ trx2

auto trx2
Инициализатор
= reqauth( "alice"_n,
{ permission_level{"alice"_n, config::active_name},
permission_level{"alice"_n, config::owner_name} },
abi_serializer_max_time )

◆ trx_hash

auto trx_hash = fc::sha256::hash( trx )

◆ try

Инициализатор
{
auto trx = reqauth( "alice"_n, {permission_level{"alice"_n, config::active_name}}, abi_serializer_max_time )
transaction trx
Definition: eosio.msig_tests.cpp:367

◆ wasm

auto wasm = contracts::util::exchange_wasm()