Skip to content
This repository has been archived by the owner on Aug 2, 2022. It is now read-only.

Commit

Permalink
Ref #123: Write tests, fix bugs
Browse files Browse the repository at this point in the history
  • Loading branch information
nathanielhourt committed Aug 8, 2017
1 parent d6f89ca commit d4989d4
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 4 deletions.
2 changes: 2 additions & 0 deletions libraries/native_contract/eos_contract.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,8 @@ void apply_eos_setproxy(apply_context& context) {
void apply_eos_updateauth(apply_context& context) {
auto update = context.msg.as<types::updateauth>();
EOS_ASSERT(!update.permission.empty(), message_validate_exception, "Cannot create authority with empty name");
EOS_ASSERT(update.permission != update.parent, message_validate_exception,
"Cannot set an authority as its own parent");
EOS_ASSERT(validate(update.authority), message_validate_exception,
"Invalid authority: ${auth}", ("auth", update.authority));
if (update.permission == "active")
Expand Down
4 changes: 2 additions & 2 deletions tests/common/macro_support.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ inline std::vector<Name> sort_names( std::vector<Name>&& names ) {
trx.scope = {#account}; \
trx.emplaceMessage(config::EosContractName, \
vector<types::AccountPermission>{{#account,"active"}}, \
"updateauth", types::updateauth{#account, #authname, parentname, auth}); \
"updateauth", types::updateauth{#account, authname, parentname, auth}); \
trx.expiration = chain.head_block_time() + 100; \
trx.set_reference_block(chain.head_block_id()); \
chain.push_transaction(trx, chain_controller::skip_transaction_signatures); \
Expand All @@ -93,7 +93,7 @@ inline std::vector<Name> sort_names( std::vector<Name>&& names ) {
trx.scope = {#account}; \
trx.emplaceMessage(config::EosContractName, \
vector<types::AccountPermission>{{#account,"active"}}, \
"deleteauth", types::deleteauth{#account, #authname}); \
"deleteauth", types::deleteauth{#account, authname}); \
trx.expiration = chain.head_block_time() + 100; \
trx.set_reference_block(chain.head_block_id()); \
chain.push_transaction(trx, chain_controller::skip_transaction_signatures); \
Expand Down
9 changes: 7 additions & 2 deletions tests/common/testing_macros.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@
#define Make_Account(...) BOOST_PP_OVERLOAD(MKACCT, __VA_ARGS__)(__VA_ARGS__)

/**
* @brief Shorthand way to create or update a named authority on an account
* @brief Shorthand way to create or update named authority on an account
*
* @code{.cpp}
* // Add a new authority named "money" to account "alice" as a child of her active authority
Expand All @@ -181,7 +181,12 @@
*/
#define Set_Authority(...) BOOST_PP_OVERLOAD(SETAUTH, __VA_ARGS__)(__VA_ARGS__)
/**
* @brief Shorthand way to delete a named authority from an account
* @brief Shorthand way to delete named authority from an account
*
* @code{.cpp}
* // Delete authority named "money" from account "alice"
* Delete_Authority(chain, alice, "money");
* @endcode
*/
#define Delete_Authority(...) BOOST_PP_OVERLOAD(DELAUTH, __VA_ARGS__)(__VA_ARGS__)

Expand Down
2 changes: 2 additions & 0 deletions tests/tests/native_contract_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -392,6 +392,8 @@ BOOST_FIXTURE_TEST_CASE(auth_tests, testing_fixture) {

Make_Key(k1);
Set_Authority(chain, alice, "spending", "active", Key_Authority(k1_public_key));
BOOST_CHECK_THROW(Set_Authority(chain, alice, "spending", "spending", Key_Authority(k1_public_key)),
message_validate_exception);
Set_Authority(chain, alice, "spending", "owner", Key_Authority(k1_public_key));
Delete_Authority(chain, alice, "spending");
} FC_LOG_AND_RETHROW() }
Expand Down

0 comments on commit d4989d4

Please sign in to comment.