mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
[fold] add test
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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{
|
||||||
|
|||||||
Reference in New Issue
Block a user