Files
rippled/src/test/rpc/RPCHelpers_test.cpp
2026-05-11 15:39:48 +00:00

79 lines
2.5 KiB
C++

#include <xrpld/rpc/Status.h>
#include <xrpld/rpc/detail/RPCHelpers.h>
#include <xrpl/beast/unit_test/suite.h>
#include <xrpl/json/json_value.h>
#include <xrpl/protocol/ErrorCodes.h>
#include <xrpl/protocol/LedgerFormats.h>
#include <xrpl/protocol/jss.h>
namespace xrpl::test {
class RPCHelpers_test : public beast::unit_test::Suite
{
public:
void
testChooseLedgerEntryType()
{
testcase("ChooseLedgerEntryType");
// Test no type.
json::Value tx = json::ValueType::Object;
auto result = RPC::chooseLedgerEntryType(tx);
BEAST_EXPECT(result.first == RPC::Status::kOK);
BEAST_EXPECT(result.second == 0);
// Test empty type.
tx[jss::type] = "";
result = RPC::chooseLedgerEntryType(tx);
BEAST_EXPECT(result.first == RPC::Status{RpcInvalidParams});
BEAST_EXPECT(result.second == 0);
// Test type using canonical name in mixedcase.
tx[jss::type] = "MPTokenIssuance";
result = RPC::chooseLedgerEntryType(tx);
BEAST_EXPECT(result.first == RPC::Status::kOK);
BEAST_EXPECT(result.second == ltMPTOKEN_ISSUANCE);
// Test type using canonical name in lowercase.
tx[jss::type] = "mptokenissuance";
result = RPC::chooseLedgerEntryType(tx);
BEAST_EXPECT(result.first == RPC::Status::kOK);
BEAST_EXPECT(result.second == ltMPTOKEN_ISSUANCE);
// Test type using RPC name with exact match.
tx[jss::type] = "mpt_issuance";
result = RPC::chooseLedgerEntryType(tx);
BEAST_EXPECT(result.first == RPC::Status::kOK);
BEAST_EXPECT(result.second == ltMPTOKEN_ISSUANCE);
// Test type using RPC name with inexact match.
tx[jss::type] = "MPT_Issuance";
result = RPC::chooseLedgerEntryType(tx);
BEAST_EXPECT(result.first == RPC::Status{RpcInvalidParams});
BEAST_EXPECT(result.second == 0);
// Test invalid type.
tx[jss::type] = 1234;
result = RPC::chooseLedgerEntryType(tx);
BEAST_EXPECT(result.first == RPC::Status{RpcInvalidParams});
BEAST_EXPECT(result.second == 0);
// Test unknown type.
tx[jss::type] = "unknown";
result = RPC::chooseLedgerEntryType(tx);
BEAST_EXPECT(result.first == RPC::Status{RpcInvalidParams});
BEAST_EXPECT(result.second == 0);
}
void
run() override
{
testChooseLedgerEntryType();
}
};
BEAST_DEFINE_TESTSUITE(RPCHelpers, rpc, xrpl);
} // namespace xrpl::test