mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-01 07:55:49 +00:00
[fold] add test
This commit is contained in:
@@ -894,21 +894,21 @@ Import::preclaim(PreclaimContext const& ctx)
|
||||
// blackhole check
|
||||
do
|
||||
{
|
||||
|
||||
// master key must be disabled to be regarded as blackholed
|
||||
if (sle->getFlags() & lsfDisableMaster == 0)
|
||||
// if master key is not set then it is not blackholed
|
||||
if (!(sle->getFlags() & lsfDisableMaster))
|
||||
break;
|
||||
|
||||
// if a regular key is set then it must be acc 0, 1, or 2 otherwise not blackholed
|
||||
// if a regular key is set then it must be acc 0, 1, or 2 otherwise
|
||||
// not blackholed
|
||||
if (sle->isFieldPresent(sfRegularKey))
|
||||
{
|
||||
AccountID rk = sle->getAccountID(sfRegularKey);
|
||||
|
||||
static const AccountID ACCOUNT_ZERO(0);
|
||||
static const AccountID ACCOUNT_ONE(1);
|
||||
static const AccountID ACCOUNT_TWO(2);
|
||||
|
||||
if (rk != ACCOUNT_ZERO && rk != ACCOUNT_ONE && rk != ACCOUNT_TWO)
|
||||
if (rk != ACCOUNT_ZERO && rk != ACCOUNT_ONE &&
|
||||
rk != ACCOUNT_TWO)
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -918,15 +918,13 @@ Import::preclaim(PreclaimContext const& ctx)
|
||||
break;
|
||||
|
||||
// execution to here means it's blackholed
|
||||
JLOG(ctx.j.warn()) << "Import: during preclaim target account is blackholed "
|
||||
<< ctx.tx[sfAccount]
|
||||
<< ", bailing.";
|
||||
JLOG(ctx.j.warn())
|
||||
<< "Import: during preclaim target account is blackholed "
|
||||
<< ctx.tx[sfAccount] << ", bailing.";
|
||||
return tefIMPORT_BLACKHOLED;
|
||||
}
|
||||
while (0);
|
||||
} while (0);
|
||||
}
|
||||
|
||||
|
||||
if (sle && sle->isFieldPresent(sfImportSequence))
|
||||
{
|
||||
uint32_t sleImportSequence = sle->getFieldU32(sfImportSequence);
|
||||
@@ -1306,8 +1304,8 @@ Import::doApply()
|
||||
view().rules().enabled(featureXahauGenesis)
|
||||
? view().info().parentCloseTime.time_since_epoch().count()
|
||||
: view().rules().enabled(featureDeletableAccounts)
|
||||
? view().seq()
|
||||
: 1};
|
||||
? view().seq()
|
||||
: 1};
|
||||
|
||||
sle = std::make_shared<SLE>(keylet::account(id));
|
||||
sle->setAccountID(sfAccount, id);
|
||||
|
||||
@@ -2672,6 +2672,99 @@ class Import_test : public beast::unit_test::suite
|
||||
env(import::import(alice, tmpXpop), ter(temMALFORMED));
|
||||
}
|
||||
|
||||
// tefIMPORT_BLACKHOLED - AccountZero
|
||||
{
|
||||
test::jtx::Env env{
|
||||
*this, network::makeNetworkVLConfig(21337, keys)};
|
||||
auto const feeDrops = env.current()->fees().base;
|
||||
|
||||
auto const alice = Account("alice");
|
||||
env.fund(XRP(1000), alice);
|
||||
env.close();
|
||||
|
||||
// Set Regular Key
|
||||
Json::Value jv;
|
||||
jv[jss::Account] = alice.human();
|
||||
const AccountID ACCOUNT_ZERO(0);
|
||||
jv["RegularKey"] = to_string(ACCOUNT_ZERO);
|
||||
jv[jss::TransactionType] = jss::SetRegularKey;
|
||||
env(jv, alice);
|
||||
|
||||
// Disable Master Key
|
||||
env(fset(alice, asfDisableMaster), sig(alice));
|
||||
env.close();
|
||||
|
||||
// Import with Master Key
|
||||
Json::Value tmpXpop = import::loadXpop(ImportTCAccountSet::w_seed);
|
||||
env(import::import(alice, tmpXpop),
|
||||
ter(tefIMPORT_BLACKHOLED),
|
||||
fee(feeDrops * 10),
|
||||
sig(alice));
|
||||
env.close();
|
||||
}
|
||||
|
||||
// tefIMPORT_BLACKHOLED - AccountOne
|
||||
{
|
||||
test::jtx::Env env{
|
||||
*this, network::makeNetworkVLConfig(21337, keys)};
|
||||
auto const feeDrops = env.current()->fees().base;
|
||||
|
||||
auto const alice = Account("alice");
|
||||
env.fund(XRP(1000), alice);
|
||||
env.close();
|
||||
|
||||
// Set Regular Key
|
||||
Json::Value jv;
|
||||
jv[jss::Account] = alice.human();
|
||||
const AccountID ACCOUNT_ONE(1);
|
||||
jv["RegularKey"] = to_string(ACCOUNT_ONE);
|
||||
jv[jss::TransactionType] = jss::SetRegularKey;
|
||||
env(jv, alice);
|
||||
|
||||
// Disable Master Key
|
||||
env(fset(alice, asfDisableMaster), sig(alice));
|
||||
env.close();
|
||||
|
||||
// Import with Master Key
|
||||
Json::Value tmpXpop = import::loadXpop(ImportTCAccountSet::w_seed);
|
||||
env(import::import(alice, tmpXpop),
|
||||
ter(tefIMPORT_BLACKHOLED),
|
||||
fee(feeDrops * 10),
|
||||
sig(alice));
|
||||
env.close();
|
||||
}
|
||||
|
||||
// tefIMPORT_BLACKHOLED - AccountOne
|
||||
{
|
||||
test::jtx::Env env{
|
||||
*this, network::makeNetworkVLConfig(21337, keys)};
|
||||
auto const feeDrops = env.current()->fees().base;
|
||||
|
||||
auto const alice = Account("alice");
|
||||
env.fund(XRP(1000), alice);
|
||||
env.close();
|
||||
|
||||
// Set Regular Key
|
||||
Json::Value jv;
|
||||
jv[jss::Account] = alice.human();
|
||||
const AccountID ACCOUNT_TWO(2);
|
||||
jv["RegularKey"] = to_string(ACCOUNT_TWO);
|
||||
jv[jss::TransactionType] = jss::SetRegularKey;
|
||||
env(jv, alice);
|
||||
|
||||
// Disable Master Key
|
||||
env(fset(alice, asfDisableMaster), sig(alice));
|
||||
env.close();
|
||||
|
||||
// Import with Master Key
|
||||
Json::Value tmpXpop = import::loadXpop(ImportTCAccountSet::w_seed);
|
||||
env(import::import(alice, tmpXpop),
|
||||
ter(tefIMPORT_BLACKHOLED),
|
||||
fee(feeDrops * 10),
|
||||
sig(alice));
|
||||
env.close();
|
||||
}
|
||||
|
||||
// tefPAST_IMPORT_SEQ
|
||||
{
|
||||
test::jtx::Env env{
|
||||
|
||||
Reference in New Issue
Block a user