Add test cases for Vault prereq amendments being disabled

This commit is contained in:
Ed Hennis
2025-09-25 15:25:37 -04:00
parent 759d114ab8
commit 6e2965f01a
3 changed files with 56 additions and 15 deletions

View File

@@ -604,12 +604,13 @@ class Vault_test : public beast::unit_test::suite
test(env, issuer, owner, asset, vault);
};
testCase(
[&](Env& env,
Account const& issuer,
Account const& owner,
Asset const& asset,
Vault& vault) {
auto testDisabled = [&](TER resultAfterCreate = temDISABLED) {
return [&, resultAfterCreate](
Env& env,
Account const& issuer,
Account const& owner,
Asset const& asset,
Vault& vault) {
testcase("disabled single asset vault");
auto [tx, keylet] =
@@ -618,7 +619,7 @@ class Vault_test : public beast::unit_test::suite
{
auto tx = vault.set({.owner = owner, .id = keylet.key});
env(tx, ter{temDISABLED});
env(tx, data("test"), ter{resultAfterCreate});
}
{
@@ -626,7 +627,7 @@ class Vault_test : public beast::unit_test::suite
{.depositor = owner,
.id = keylet.key,
.amount = asset(10)});
env(tx, ter{temDISABLED});
env(tx, ter{resultAfterCreate});
}
{
@@ -634,7 +635,7 @@ class Vault_test : public beast::unit_test::suite
{.depositor = owner,
.id = keylet.key,
.amount = asset(10)});
env(tx, ter{temDISABLED});
env(tx, ter{resultAfterCreate});
}
{
@@ -643,15 +644,49 @@ class Vault_test : public beast::unit_test::suite
.id = keylet.key,
.holder = owner,
.amount = asset(10)});
env(tx, ter{temDISABLED});
env(tx, ter{resultAfterCreate});
}
{
auto tx = vault.del({.owner = owner, .id = keylet.key});
env(tx, ter{resultAfterCreate});
}
};
};
testCase(
testDisabled(),
{.features = testable_amendments() - featureSingleAssetVault});
testCase(
testDisabled(tecNO_ENTRY),
{.features = testable_amendments() - featureMPTokensV1});
testCase(
[&](Env& env,
Account const& issuer,
Account const& owner,
Asset const& asset,
Vault& vault) {
testcase("disabled permissioned domains");
auto [tx, keylet] =
vault.create({.owner = owner, .asset = asset});
env(tx);
tx[sfFlags] = tx[sfFlags].asUInt() | tfVaultPrivate;
tx[sfDomainID] = to_string(base_uint<256>(42ul));
env(tx, ter{temDISABLED});
{
auto tx = vault.set({.owner = owner, .id = keylet.key});
env(tx, data("Test"));
tx[sfDomainID] = to_string(base_uint<256>(13ul));
env(tx, ter{temDISABLED});
}
},
{.features = testable_amendments() - featureSingleAssetVault});
{.features = testable_amendments() - featurePermissionedDomains});
testCase([&](Env& env,
Account const& issuer,

View File

@@ -41,8 +41,11 @@ VaultCreate::checkExtraFeatures(PreflightContext const& ctx)
if (!ctx.rules.enabled(featureMPTokensV1))
return false;
return !ctx.tx.isFieldPresent(sfDomainID) ||
ctx.rules.enabled(featurePermissionedDomains);
if (ctx.tx.isFieldPresent(sfDomainID) &&
!ctx.rules.enabled(featurePermissionedDomains))
return false;
return true;
}
std::uint32_t

View File

@@ -33,8 +33,11 @@ namespace ripple {
bool
VaultSet::checkExtraFeatures(PreflightContext const& ctx)
{
return !ctx.tx.isFieldPresent(sfDomainID) ||
ctx.rules.enabled(featurePermissionedDomains);
if (ctx.tx.isFieldPresent(sfDomainID) &&
!ctx.rules.enabled(featurePermissionedDomains))
return false;
return true;
}
NotTEC