#include #include #include namespace xrpl { namespace test { class RPCHelpers_test : public beast::unit_test::suite { public: void testChooseLedgerEntryType() { testcase("ChooseLedgerEntryType"); // Test no type. Json::Value tx = Json::objectValue; auto result = RPC::chooseLedgerEntryType(tx); BEAST_EXPECT(result.first == RPC::Status::OK); BEAST_EXPECT(result.second == 0); // Test empty type. tx[jss::type] = ""; result = RPC::chooseLedgerEntryType(tx); BEAST_EXPECT(result.first == RPC::Status{rpcINVALID_PARAMS}); 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::OK); 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::OK); 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::OK); 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{rpcINVALID_PARAMS}); BEAST_EXPECT(result.second == 0); // Test invalid type. tx[jss::type] = 1234; result = RPC::chooseLedgerEntryType(tx); BEAST_EXPECT(result.first == RPC::Status{rpcINVALID_PARAMS}); BEAST_EXPECT(result.second == 0); // Test unknown type. tx[jss::type] = "unknown"; result = RPC::chooseLedgerEntryType(tx); BEAST_EXPECT(result.first == RPC::Status{rpcINVALID_PARAMS}); BEAST_EXPECT(result.second == 0); } void run() override { testChooseLedgerEntryType(); } }; BEAST_DEFINE_TESTSUITE(RPCHelpers, rpc, xrpl); } // namespace test } // namespace xrpl