From f72ed2f5321bd8b56ffbccf28c88e77a3008ffac Mon Sep 17 00:00:00 2001 From: theoreticalbts Date: Sat, 31 Oct 2015 14:50:11 -0400 Subject: [PATCH] uia_tests.cpp: Implement asset_name_test #409 --- tests/common/database_fixture.cpp | 2 ++ tests/tests/uia_tests.cpp | 47 +++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/tests/common/database_fixture.cpp b/tests/common/database_fixture.cpp index 676c53b5..f7431f40 100644 --- a/tests/common/database_fixture.cpp +++ b/tests/common/database_fixture.cpp @@ -501,7 +501,9 @@ const asset_object& database_fixture::create_user_issued_asset( const string& na creator.common_options.max_supply = GRAPHENE_MAX_SHARE_SUPPLY; creator.common_options.flags = flags; creator.common_options.issuer_permissions = flags; + trx.operations.clear(); trx.operations.push_back(std::move(creator)); + set_expiration( db, trx ); trx.validate(); processed_transaction ptx = db.push_transaction(trx, ~0); trx.operations.clear(); diff --git a/tests/tests/uia_tests.cpp b/tests/tests/uia_tests.cpp index 41cda68f..0a7cf778 100644 --- a/tests/tests/uia_tests.cpp +++ b/tests/tests/uia_tests.cpp @@ -414,5 +414,52 @@ BOOST_AUTO_TEST_CASE( transfer_restricted_test ) } } +BOOST_AUTO_TEST_CASE( asset_name_test ) +{ + try + { + ACTORS( (alice)(bob) ); + + auto has_asset = [&]( std::string symbol ) -> bool + { + const auto& assets_by_symbol = db.get_index_type().indices().get(); + return assets_by_symbol.find( symbol ) != assets_by_symbol.end(); + }; + + // Alice creates asset "ALPHA" + BOOST_CHECK( !has_asset("ALPHA") ); BOOST_CHECK( !has_asset("ALPHA.ONE") ); + create_user_issued_asset( "ALPHA", alice_id(db), 0 ); + BOOST_CHECK( has_asset("ALPHA") ); BOOST_CHECK( !has_asset("ALPHA.ONE") ); + + // Nobody can create another asset named ALPHA + GRAPHENE_REQUIRE_THROW( create_user_issued_asset( "ALPHA", bob_id(db), 0 ), fc::exception ); + BOOST_CHECK( has_asset("ALPHA") ); BOOST_CHECK( !has_asset("ALPHA.ONE") ); + GRAPHENE_REQUIRE_THROW( create_user_issued_asset( "ALPHA", alice_id(db), 0 ), fc::exception ); + BOOST_CHECK( has_asset("ALPHA") ); BOOST_CHECK( !has_asset("ALPHA.ONE") ); + + // Bob can't create ALPHA.ONE + GRAPHENE_REQUIRE_THROW( create_user_issued_asset( "ALPHA.ONE", bob_id(db), 0 ), fc::exception ); + BOOST_CHECK( has_asset("ALPHA") ); BOOST_CHECK( !has_asset("ALPHA.ONE") ); + if( db.head_block_time() <= HARDFORK_409_TIME ) + { + // Alice can't create ALPHA.ONE before hardfork + GRAPHENE_REQUIRE_THROW( create_user_issued_asset( "ALPHA.ONE", alice_id(db), 0 ), fc::exception ); + BOOST_CHECK( has_asset("ALPHA") ); BOOST_CHECK( !has_asset("ALPHA.ONE") ); + generate_blocks( HARDFORK_409_TIME ); + generate_block(); + // Bob can't create ALPHA.ONE after hardfork + GRAPHENE_REQUIRE_THROW( create_user_issued_asset( "ALPHA.ONE", bob_id(db), 0 ), fc::exception ); + BOOST_CHECK( has_asset("ALPHA") ); BOOST_CHECK( !has_asset("ALPHA.ONE") ); + } + // Alice can create it + create_user_issued_asset( "ALPHA.ONE", alice_id(db), 0 ); + BOOST_CHECK( has_asset("ALPHA") ); BOOST_CHECK( has_asset("ALPHA.ONE") ); + } + catch(fc::exception& e) + { + edump((e.to_detail_string())); + throw; + } +} BOOST_AUTO_TEST_SUITE_END()