mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-04 11:55:51 +00:00
fix: add trustline locking flag to account_info (#2338)
fixes #2323 --------- Co-authored-by: Ayaz Salikhov <mathbunnyru@users.noreply.github.com>
This commit is contained in:
@@ -88,6 +88,7 @@ AccountInfoHandler::process(AccountInfoHandler::Input const& input, Context cons
|
||||
|
||||
auto const isDisallowIncomingEnabled = isEnabled(Amendments::DisallowIncoming);
|
||||
auto const isClawbackEnabled = isEnabled(Amendments::Clawback);
|
||||
auto const isTokenEscrowEnabled = isEnabled(Amendments::TokenEscrow);
|
||||
|
||||
// Return SignerList(s) if that is requested.
|
||||
if (input.signerLists) {
|
||||
@@ -117,13 +118,20 @@ AccountInfoHandler::process(AccountInfoHandler::Input const& input, Context cons
|
||||
sle,
|
||||
isDisallowIncomingEnabled,
|
||||
isClawbackEnabled,
|
||||
isTokenEscrowEnabled,
|
||||
ctx.apiVersion,
|
||||
signerList
|
||||
);
|
||||
}
|
||||
|
||||
return Output(
|
||||
lgrInfo.seq, ripple::strHex(lgrInfo.hash), sle, isDisallowIncomingEnabled, isClawbackEnabled, ctx.apiVersion
|
||||
lgrInfo.seq,
|
||||
ripple::strHex(lgrInfo.hash),
|
||||
sle,
|
||||
isDisallowIncomingEnabled,
|
||||
isClawbackEnabled,
|
||||
isTokenEscrowEnabled,
|
||||
ctx.apiVersion
|
||||
);
|
||||
}
|
||||
|
||||
@@ -159,9 +167,11 @@ tag_invoke(boost::json::value_from_tag, boost::json::value& jv, AccountInfoHandl
|
||||
lsFlags.insert(lsFlags.end(), disallowIncomingFlags.begin(), disallowIncomingFlags.end());
|
||||
}
|
||||
|
||||
if (output.isClawbackEnabled) {
|
||||
if (output.isClawbackEnabled)
|
||||
lsFlags.emplace_back("allowTrustLineClawback", ripple::lsfAllowTrustLineClawback);
|
||||
}
|
||||
|
||||
if (output.isTokenEscrowEnabled)
|
||||
lsFlags.emplace_back("allowTrustLineLocking", ripple::lsfAllowTrustLineLocking);
|
||||
|
||||
boost::json::object acctFlags;
|
||||
for (auto const& lsf : lsFlags)
|
||||
|
||||
@@ -61,6 +61,7 @@ public:
|
||||
ripple::STLedgerEntry accountData;
|
||||
bool isDisallowIncomingEnabled = false;
|
||||
bool isClawbackEnabled = false;
|
||||
bool isTokenEscrowEnabled = false;
|
||||
uint32_t apiVersion;
|
||||
std::optional<std::vector<ripple::STLedgerEntry>> signerLists;
|
||||
// validated should be sent via framework
|
||||
@@ -74,6 +75,7 @@ public:
|
||||
* @param sle The account data
|
||||
* @param isDisallowIncomingEnabled Whether disallow incoming is enabled
|
||||
* @param isClawbackEnabled Whether clawback is enabled
|
||||
* @param isTokenEscrowEnabled Whether token escrow is enabled
|
||||
* @param version The API version
|
||||
* @param signerLists The signer lists
|
||||
*/
|
||||
@@ -83,6 +85,7 @@ public:
|
||||
ripple::STLedgerEntry sle,
|
||||
bool isDisallowIncomingEnabled,
|
||||
bool isClawbackEnabled,
|
||||
bool isTokenEscrowEnabled,
|
||||
uint32_t version,
|
||||
std::optional<std::vector<ripple::STLedgerEntry>> signerLists = std::nullopt
|
||||
)
|
||||
@@ -91,6 +94,7 @@ public:
|
||||
, accountData(std::move(sle))
|
||||
, isDisallowIncomingEnabled(isDisallowIncomingEnabled)
|
||||
, isClawbackEnabled(isClawbackEnabled)
|
||||
, isTokenEscrowEnabled(isTokenEscrowEnabled)
|
||||
, apiVersion(version)
|
||||
, signerLists(std::move(signerLists))
|
||||
{
|
||||
|
||||
@@ -329,6 +329,7 @@ TEST_F(RPCAccountInfoHandlerTest, SignerListsInvalid)
|
||||
.WillByDefault(Return(createLegacyFeeSettingBlob(1, 2, 3, 4, 0)));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::DisallowIncoming, _)).WillOnce(Return(false));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::Clawback, _)).WillOnce(Return(false));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::TokenEscrow, _)).WillOnce(Return(false));
|
||||
EXPECT_CALL(*backend_, doFetchLedgerObject).Times(2);
|
||||
|
||||
static auto const kINPUT = json::parse(
|
||||
@@ -434,6 +435,7 @@ TEST_F(RPCAccountInfoHandlerTest, SignerListsTrueV2)
|
||||
.WillByDefault(Return(createSignerLists({{kACCOUNT1, 1}, {kACCOUNT2, 1}}).getSerializer().peekData()));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::DisallowIncoming, _)).WillOnce(Return(false));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::Clawback, _)).WillOnce(Return(false));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::TokenEscrow, _)).WillOnce(Return(false));
|
||||
EXPECT_CALL(*backend_, doFetchLedgerObject).Times(2);
|
||||
|
||||
static auto const kINPUT = json::parse(
|
||||
@@ -537,6 +539,7 @@ TEST_F(RPCAccountInfoHandlerTest, SignerListsTrueV1)
|
||||
.WillByDefault(Return(createSignerLists({{kACCOUNT1, 1}, {kACCOUNT2, 1}}).getSerializer().peekData()));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::DisallowIncoming, _)).WillOnce(Return(false));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::Clawback, _)).WillOnce(Return(false));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::TokenEscrow, _)).WillOnce(Return(false));
|
||||
EXPECT_CALL(*backend_, doFetchLedgerObject).Times(2);
|
||||
|
||||
static auto const kINPUT = json::parse(
|
||||
@@ -613,6 +616,7 @@ TEST_F(RPCAccountInfoHandlerTest, Flags)
|
||||
.WillByDefault(Return(accountRoot.getSerializer().peekData()));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::DisallowIncoming, _)).WillOnce(Return(false));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::Clawback, _)).WillOnce(Return(false));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::TokenEscrow, _)).WillOnce(Return(false));
|
||||
EXPECT_CALL(*backend_, doFetchLedgerObject);
|
||||
|
||||
static auto const kINPUT = json::parse(
|
||||
@@ -644,6 +648,7 @@ TEST_F(RPCAccountInfoHandlerTest, IdentAndSignerListsFalse)
|
||||
.WillByDefault(Return(accountRoot.getSerializer().peekData()));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::DisallowIncoming, _)).WillOnce(Return(false));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::Clawback, _)).WillOnce(Return(false));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::TokenEscrow, _)).WillOnce(Return(false));
|
||||
EXPECT_CALL(*backend_, doFetchLedgerObject);
|
||||
|
||||
static auto const kINPUT = json::parse(
|
||||
@@ -724,6 +729,7 @@ TEST_F(RPCAccountInfoHandlerTest, DisallowIncoming)
|
||||
.WillByDefault(Return(accountRoot.getSerializer().peekData()));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::DisallowIncoming, _)).WillOnce(Return(true));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::Clawback, _)).WillOnce(Return(false));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::TokenEscrow, _)).WillOnce(Return(false));
|
||||
EXPECT_CALL(*backend_, doFetchLedgerObject);
|
||||
|
||||
static auto const kINPUT = json::parse(
|
||||
@@ -742,14 +748,14 @@ TEST_F(RPCAccountInfoHandlerTest, DisallowIncoming)
|
||||
});
|
||||
}
|
||||
|
||||
TEST_F(RPCAccountInfoHandlerTest, Clawback)
|
||||
TEST_F(RPCAccountInfoHandlerTest, AmendmentsEnabled)
|
||||
{
|
||||
auto const expectedOutput = fmt::format(
|
||||
R"JSON({{
|
||||
"account_data": {{
|
||||
"Account": "{}",
|
||||
"Balance": "200",
|
||||
"Flags": 2180972544,
|
||||
"Flags": 3254714368,
|
||||
"LedgerEntryType": "AccountRoot",
|
||||
"OwnerCount": 2,
|
||||
"PreviousTxnID": "{}",
|
||||
@@ -768,7 +774,8 @@ TEST_F(RPCAccountInfoHandlerTest, Clawback)
|
||||
"passwordSpent": true,
|
||||
"requireAuthorization": true,
|
||||
"requireDestinationTag": true,
|
||||
"allowTrustLineClawback": true
|
||||
"allowTrustLineClawback": true,
|
||||
"allowTrustLineLocking": true
|
||||
}},
|
||||
"ledger_hash": "{}",
|
||||
"ledger_index": 30,
|
||||
@@ -789,7 +796,7 @@ TEST_F(RPCAccountInfoHandlerTest, Clawback)
|
||||
kACCOUNT,
|
||||
ripple::lsfDefaultRipple | ripple::lsfGlobalFreeze | ripple::lsfRequireDestTag | ripple::lsfRequireAuth |
|
||||
ripple::lsfDepositAuth | ripple::lsfDisableMaster | ripple::lsfDisallowXRP | ripple::lsfNoFreeze |
|
||||
ripple::lsfPasswordSpent | ripple::lsfAllowTrustLineClawback,
|
||||
ripple::lsfPasswordSpent | ripple::lsfAllowTrustLineClawback | ripple::lsfAllowTrustLineLocking,
|
||||
2,
|
||||
200,
|
||||
2,
|
||||
@@ -800,6 +807,7 @@ TEST_F(RPCAccountInfoHandlerTest, Clawback)
|
||||
.WillByDefault(Return(accountRoot.getSerializer().peekData()));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::DisallowIncoming, _)).WillOnce(Return(false));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::Clawback, _)).WillOnce(Return(true));
|
||||
EXPECT_CALL(*mockAmendmentCenterPtr_, isEnabled(_, Amendments::TokenEscrow, _)).WillOnce(Return(true));
|
||||
EXPECT_CALL(*backend_, doFetchLedgerObject);
|
||||
|
||||
static auto const kINPUT = json::parse(
|
||||
|
||||
Reference in New Issue
Block a user