fix: no restriction on type field (#1644)

'type' should not matter if 'full' or 'accounts' is false. Relax the
restriction for 'type'
This commit is contained in:
cyan317
2024-09-11 14:42:25 +01:00
committed by cyan
parent bb0d912f2b
commit f57706be3d
2 changed files with 7 additions and 16 deletions

View File

@@ -1287,7 +1287,11 @@ isAdminCmd(std::string const& method, boost::json::object const& request)
// https://github.com/XRPLF/rippled/issues/5119
auto const isFieldSet = [&jv](auto const field) { return jv.isMember(field) and jv[field].asBool(); };
if (isFieldSet(JS(full)) or isFieldSet(JS(accounts)) or isFieldSet(JS(type)))
// According to doc
// https://xrpl.org/docs/references/http-websocket-apis/public-api-methods/ledger-methods/ledger,
// full/accounts/type are admin only, but type only works when full/accounts are set, so we don't need to check
// type.
if (isFieldSet(JS(full)) or isFieldSet(JS(accounts)))
return true;
}

View File

@@ -560,6 +560,7 @@ generateTestValuesForParametersTest()
{"featureVetoedIsStr", "feature", R"({"vetoed": "String"})", true},
{"ledger", "ledger", R"({})", false},
{"ledgerWithType", "ledger", R"({"type": "fee"})", false},
{"ledgerFullTrue", "ledger", R"({"full": true})", true},
{"ledgerFullFalse", "ledger", R"({"full": false})", false},
{"ledgerFullIsStr", "ledger", R"({"full": "String"})", true},
@@ -574,25 +575,11 @@ generateTestValuesForParametersTest()
{"ledgerFullIsObject", "ledger", R"({"full": {"key": 1}})", true},
{"ledgerFullIsEmptyObject", "ledger", R"({"full": {}})", false},
{"ledgerTypeTrue", "ledger", R"({"type": true})", true},
{"ledgerTypeFalse", "ledger", R"({"type": false})", false},
{"ledgerTypeIsStr", "ledger", R"({"type": "String"})", true},
{"ledgerTypeIsEmptyStr", "ledger", R"({"type": ""})", false},
{"ledgerTypeIsNumber1", "ledger", R"({"type": 1})", true},
{"ledgerTypeIsNumber0", "ledger", R"({"type": 0})", false},
{"ledgerTypeIsNull", "ledger", R"({"type": null})", false},
{"ledgerTypeIsFloat0", "ledger", R"({"type": 0.0})", false},
{"ledgerTypeIsFloat1", "ledger", R"({"type": 0.1})", true},
{"ledgerTypeIsArray", "ledger", R"({"type": [1]})", true},
{"ledgerTypeIsEmptyArray", "ledger", R"({"type": []})", false},
{"ledgerTypeIsObject", "ledger", R"({"type": {"key": 1}})", true},
{"ledgerTypeIsEmptyObject", "ledger", R"({"type": {}})", false},
{"ledgerAccountsTrue", "ledger", R"({"accounts": true})", true},
{"ledgerAccountsFalse", "ledger", R"({"accounts": false})", false},
{"ledgerAccountsIsStr", "ledger", R"({"accounts": "String"})", true},
{"ledgerAccountsIsEmptyStr", "ledger", R"({"accounts": ""})", false},
{"ledgerAccountsIsNumber1", "ledger", R"({"type": 1})", true},
{"ledgerAccountsIsNumber1", "ledger", R"({"accounts": 1})", true},
{"ledgerAccountsIsNumber0", "ledger", R"({"accounts": 0})", false},
{"ledgerAccountsIsNull", "ledger", R"({"accounts": null})", false},
{"ledgerAccountsIsFloat0", "ledger", R"({"accounts": 0.0})", false},