[fold] add test

This commit is contained in:
Denis Angell
2024-11-28 09:51:09 +01:00
parent f636f8158e
commit 0033b3ae4c
2 changed files with 105 additions and 14 deletions

View File

@@ -894,21 +894,21 @@ Import::preclaim(PreclaimContext const& ctx)
// blackhole check // blackhole check
do do
{ {
// if master key is not set then it is not blackholed
// master key must be disabled to be regarded as blackholed if (!(sle->getFlags() & lsfDisableMaster))
if (sle->getFlags() & lsfDisableMaster == 0)
break; 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)) if (sle->isFieldPresent(sfRegularKey))
{ {
AccountID rk = sle->getAccountID(sfRegularKey); AccountID rk = sle->getAccountID(sfRegularKey);
static const AccountID ACCOUNT_ZERO(0); static const AccountID ACCOUNT_ZERO(0);
static const AccountID ACCOUNT_ONE(1); static const AccountID ACCOUNT_ONE(1);
static const AccountID ACCOUNT_TWO(2); 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; break;
} }
@@ -918,15 +918,13 @@ Import::preclaim(PreclaimContext const& ctx)
break; break;
// execution to here means it's blackholed // execution to here means it's blackholed
JLOG(ctx.j.warn()) << "Import: during preclaim target account is blackholed " JLOG(ctx.j.warn())
<< ctx.tx[sfAccount] << "Import: during preclaim target account is blackholed "
<< ", bailing."; << ctx.tx[sfAccount] << ", bailing.";
return tefIMPORT_BLACKHOLED; return tefIMPORT_BLACKHOLED;
} } while (0);
while (0);
} }
if (sle && sle->isFieldPresent(sfImportSequence)) if (sle && sle->isFieldPresent(sfImportSequence))
{ {
uint32_t sleImportSequence = sle->getFieldU32(sfImportSequence); uint32_t sleImportSequence = sle->getFieldU32(sfImportSequence);
@@ -1306,8 +1304,8 @@ Import::doApply()
view().rules().enabled(featureXahauGenesis) view().rules().enabled(featureXahauGenesis)
? view().info().parentCloseTime.time_since_epoch().count() ? view().info().parentCloseTime.time_since_epoch().count()
: view().rules().enabled(featureDeletableAccounts) : view().rules().enabled(featureDeletableAccounts)
? view().seq() ? view().seq()
: 1}; : 1};
sle = std::make_shared<SLE>(keylet::account(id)); sle = std::make_shared<SLE>(keylet::account(id));
sle->setAccountID(sfAccount, id); sle->setAccountID(sfAccount, id);

View File

@@ -2672,6 +2672,99 @@ class Import_test : public beast::unit_test::suite
env(import::import(alice, tmpXpop), ter(temMALFORMED)); 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 // tefPAST_IMPORT_SEQ
{ {
test::jtx::Env env{ test::jtx::Env env{