Add check in preclaim and extra tests

This commit is contained in:
Bronek Kozicki
2025-04-24 13:26:20 +01:00
parent 7eadb88d0d
commit 5cd3b1fb59
2 changed files with 15 additions and 2 deletions

View File

@@ -412,6 +412,9 @@ class MPToken_test : public beast::unit_test::suite
// bob creates a mptoken
mptAlice.authorize({.account = bob, .holderCount = 1});
mptAlice.authorize(
{.account = bob, .holderCount = 1, .err = tecDUPLICATE});
// bob deletes his mptoken
mptAlice.authorize(
{.account = bob, .holderCount = 0, .flags = tfMPTUnauthorize});
@@ -2303,15 +2306,21 @@ public:
// MPTokenIssuanceCreate
testCreateValidation(all);
testCreateValidation(all | featureSingleAssetVault);
testCreateEnabled(all);
testCreateEnabled(all | featureSingleAssetVault);
// MPTokenIssuanceDestroy
testDestroyValidation(all);
testDestroyValidation(all | featureSingleAssetVault);
testDestroyEnabled(all);
testDestroyEnabled(all | featureSingleAssetVault);
// MPTokenAuthorize
testAuthorizeValidation(all);
testAuthorizeValidation(all | featureSingleAssetVault);
testAuthorizeEnabled(all);
testAuthorizeEnabled(all | featureSingleAssetVault);
// MPTokenIssuanceSet
testSetValidation(all);

View File

@@ -83,6 +83,10 @@ MPTokenAuthorize::preclaim(PreclaimContext const& ctx)
return tecHAS_OBLIGATIONS;
}
if (ctx.view.rules().enabled(featureSingleAssetVault) &&
sleMpt->isFlag(lsfMPTLocked))
return tecNO_PERMISSION;
return tesSUCCESS;
}
@@ -165,7 +169,7 @@ MPTokenAuthorize::authorize(
if ((*sleMpt)[sfMPTAmount] != 0)
return tecHAS_OBLIGATIONS;
if (view.rules().enabled(featureSingleAssetVault) &&
(sleMpt->getFlags() & lsfMPTLocked))
sleMpt->isFlag(lsfMPTLocked))
return tecNO_PERMISSION;
if (!view.dirRemove(
@@ -199,7 +203,7 @@ MPTokenAuthorize::authorize(
return tecINSUFFICIENT_RESERVE;
if (sleMpt)
return tecDUPLICATE;
return tecDUPLICATE; // Also returned in preclaim
sleMpt = std::make_shared<SLE>(mptokenKey);
if (auto ter = dirLink(view, args.accountID, sleMpt))