mirror of
https://github.com/XRPLF/rippled.git
synced 2026-08-19 05:10:55 +00:00
Fix VaultDeposit::preclaim checks
This commit is contained in:
@@ -1037,6 +1037,7 @@ class Vault_test : public beast::unit_test::suite
|
||||
Account issuer{"issuer"};
|
||||
Account owner{"owner"};
|
||||
Account depositor{"depositor"};
|
||||
Account charlie{"charlie"};
|
||||
Account pdOwner{"pdOwner"};
|
||||
Account credIssuer1{"credIssuer1"};
|
||||
Account credIssuer2{"credIssuer2"};
|
||||
@@ -1047,6 +1048,7 @@ class Vault_test : public beast::unit_test::suite
|
||||
issuer,
|
||||
owner,
|
||||
depositor,
|
||||
charlie,
|
||||
pdOwner,
|
||||
credIssuer1,
|
||||
credIssuer2);
|
||||
@@ -1055,7 +1057,13 @@ class Vault_test : public beast::unit_test::suite
|
||||
env.close();
|
||||
env.require(flags(issuer, asfAllowTrustLineClawback));
|
||||
|
||||
PrettyAsset asset{xrpIssue(), 1'000'000};
|
||||
PrettyAsset asset = issuer["IOU"];
|
||||
env.trust(asset(1000), owner);
|
||||
env(pay(issuer, owner, asset(500)));
|
||||
env.trust(asset(1000), depositor);
|
||||
env(pay(issuer, depositor, asset(500)));
|
||||
env.close();
|
||||
|
||||
auto [tx, keylet] = vault.create(
|
||||
{.owner = owner, .asset = asset, .flags = tfVaultPrivate});
|
||||
env(tx);
|
||||
@@ -1142,6 +1150,8 @@ class Vault_test : public beast::unit_test::suite
|
||||
testcase("private vault depositor now authorized");
|
||||
env(credentials::create(depositor, credIssuer1, credType));
|
||||
env(credentials::accept(depositor, credIssuer1, credType));
|
||||
env(credentials::create(charlie, credIssuer1, credType));
|
||||
env(credentials::accept(charlie, credIssuer1, credType));
|
||||
env.close();
|
||||
auto credSle = env.le(credKeylet);
|
||||
BEAST_EXPECT(credSle != nullptr);
|
||||
@@ -1152,6 +1162,11 @@ class Vault_test : public beast::unit_test::suite
|
||||
.amount = asset(50)});
|
||||
env(tx);
|
||||
env.close();
|
||||
|
||||
tx = vault.deposit(
|
||||
{.depositor = charlie, .id = keylet.key, .amount = asset(50)});
|
||||
env(tx, ter{tecINSUFFICIENT_FUNDS});
|
||||
env.close();
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
@@ -86,12 +86,12 @@ VaultDeposit::preclaim(PreclaimContext const& ctx)
|
||||
// would allow authorization granted by the issuer explicitly, but Vault
|
||||
// does not have an MPT issuer (instead it uses pseudo-account, which is
|
||||
// blackholed and cannot create any transactions).
|
||||
auto const err = requireAuth(ctx.view, share, account);
|
||||
|
||||
// As per requireAuth spec, we suppress tecEXPIRED error here, so we can
|
||||
// delete any expired credentials inside doApply.
|
||||
if (err != tecEXPIRED)
|
||||
return err;
|
||||
//
|
||||
// As per requireAuth documentation, we suppress tecEXPIRED error here,
|
||||
// so we can delete any expired credentials inside doApply.
|
||||
if (auto const ter = requireAuth(ctx.view, share, account);
|
||||
!isTesSuccess(ter) && ter != tecEXPIRED)
|
||||
return ter;
|
||||
}
|
||||
|
||||
if (assets.holds<MPTIssue>())
|
||||
|
||||
Reference in New Issue
Block a user