mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
fix: Amendment to add transaction flag checking functionality for Credentials (#5250)
CredentialCreate / CredentialAccept / CredentialDelete transactions will check sfFlags field in preflight() when the amendment is enabled.
This commit is contained in:
@@ -1058,6 +1058,43 @@ struct Credentials_test : public beast::unit_test::suite
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
testFlags(FeatureBitset features)
|
||||
{
|
||||
using namespace test::jtx;
|
||||
|
||||
bool const enabled = features[fixInvalidTxFlags];
|
||||
testcase(
|
||||
std::string("Test flag, fix ") +
|
||||
(enabled ? "enabled" : "disabled"));
|
||||
|
||||
const char credType[] = "abcde";
|
||||
Account const issuer{"issuer"};
|
||||
Account const subject{"subject"};
|
||||
|
||||
{
|
||||
using namespace jtx;
|
||||
Env env{*this, features};
|
||||
|
||||
env.fund(XRP(5000), subject, issuer);
|
||||
env.close();
|
||||
|
||||
{
|
||||
ter const expected(
|
||||
enabled ? TER(temINVALID_FLAG) : TER(tesSUCCESS));
|
||||
env(credentials::create(subject, issuer, credType),
|
||||
txflags(tfTransferable),
|
||||
expected);
|
||||
env(credentials::accept(subject, issuer, credType),
|
||||
txflags(tfSellNFToken),
|
||||
expected);
|
||||
env(credentials::deleteCred(subject, subject, issuer, credType),
|
||||
txflags(tfPassive),
|
||||
expected);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
run() override
|
||||
{
|
||||
@@ -1069,6 +1106,8 @@ struct Credentials_test : public beast::unit_test::suite
|
||||
testAcceptFailed(all);
|
||||
testDeleteFailed(all);
|
||||
testFeatureFailed(all - featureCredentials);
|
||||
testFlags(all - fixInvalidTxFlags);
|
||||
testFlags(all);
|
||||
testRPC();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1672,6 +1672,29 @@ public:
|
||||
BEAST_EXPECT(env.seq(alice) == aliceSeq + 1);
|
||||
}
|
||||
|
||||
void
|
||||
test_signerListSetFlags(FeatureBitset features)
|
||||
{
|
||||
using namespace test::jtx;
|
||||
|
||||
Env env{*this, features};
|
||||
Account const alice{"alice"};
|
||||
|
||||
env.fund(XRP(1000), alice);
|
||||
env.close();
|
||||
|
||||
bool const enabled = features[fixInvalidTxFlags];
|
||||
testcase(
|
||||
std::string("SignerListSet flag, fix ") +
|
||||
(enabled ? "enabled" : "disabled"));
|
||||
|
||||
ter const expected(enabled ? TER(temINVALID_FLAG) : TER(tesSUCCESS));
|
||||
env(signers(alice, 2, {{bogie, 1}, {ghost, 1}}),
|
||||
expected,
|
||||
txflags(tfPassive));
|
||||
env.close();
|
||||
}
|
||||
|
||||
void
|
||||
testAll(FeatureBitset features)
|
||||
{
|
||||
@@ -1708,6 +1731,10 @@ public:
|
||||
testAll(all - featureMultiSignReserve - featureExpandedSignerList);
|
||||
testAll(all - featureExpandedSignerList);
|
||||
testAll(all);
|
||||
|
||||
test_signerListSetFlags(all - fixInvalidTxFlags);
|
||||
test_signerListSetFlags(all);
|
||||
|
||||
test_amendmentTransition();
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user