mirror of
https://github.com/XRPLF/clio.git
synced 2025-12-01 00:55:51 +00:00
@@ -97,16 +97,22 @@ public:
|
||||
return MaybeError{};
|
||||
}};
|
||||
|
||||
static auto const malformedRequestHexStringValidator =
|
||||
validation::WithCustomError{validation::Uint256HexStringValidator, Status(ClioError::rpcMALFORMED_REQUEST)};
|
||||
|
||||
static auto const malformedRequestIntValidator =
|
||||
validation::WithCustomError{validation::Type<uint32_t>{}, Status(ClioError::rpcMALFORMED_REQUEST)};
|
||||
|
||||
static auto const rpcSpec = RpcSpec{
|
||||
{JS(binary), validation::Type<bool>{}},
|
||||
{JS(ledger_hash), validation::Uint256HexStringValidator},
|
||||
{JS(ledger_index), validation::LedgerIndexValidator},
|
||||
{JS(index), validation::Uint256HexStringValidator},
|
||||
{JS(index), malformedRequestHexStringValidator},
|
||||
{JS(account_root), validation::AccountBase58Validator},
|
||||
{JS(check), validation::Uint256HexStringValidator},
|
||||
{JS(check), malformedRequestHexStringValidator},
|
||||
{JS(deposit_preauth),
|
||||
validation::Type<std::string, boost::json::object>{},
|
||||
validation::IfType<std::string>{validation::Uint256HexStringValidator},
|
||||
validation::IfType<std::string>{malformedRequestHexStringValidator},
|
||||
validation::IfType<boost::json::object>{
|
||||
validation::Section{
|
||||
{JS(owner),
|
||||
@@ -118,33 +124,33 @@ public:
|
||||
}},
|
||||
{JS(directory),
|
||||
validation::Type<std::string, boost::json::object>{},
|
||||
validation::IfType<std::string>{validation::Uint256HexStringValidator},
|
||||
validation::IfType<std::string>{malformedRequestHexStringValidator},
|
||||
validation::IfType<boost::json::object>{validation::Section{
|
||||
{JS(owner), validation::AccountBase58Validator},
|
||||
{JS(dir_root), validation::Uint256HexStringValidator},
|
||||
{JS(sub_index), validation::Type<uint32_t>{}}}}},
|
||||
{JS(sub_index), malformedRequestIntValidator}}}},
|
||||
{JS(escrow),
|
||||
validation::Type<std::string, boost::json::object>{},
|
||||
validation::IfType<std::string>{validation::Uint256HexStringValidator},
|
||||
validation::IfType<std::string>{malformedRequestHexStringValidator},
|
||||
validation::IfType<boost::json::object>{
|
||||
validation::Section{
|
||||
{JS(owner),
|
||||
validation::Required{},
|
||||
validation::WithCustomError{
|
||||
validation::AccountBase58Validator, Status(ClioError::rpcMALFORMED_OWNER)}},
|
||||
{JS(seq), validation::Required{}, validation::Type<uint32_t>{}},
|
||||
{JS(seq), validation::Required{}, malformedRequestIntValidator},
|
||||
},
|
||||
}},
|
||||
{JS(offer),
|
||||
validation::Type<std::string, boost::json::object>{},
|
||||
validation::IfType<std::string>{validation::Uint256HexStringValidator},
|
||||
validation::IfType<std::string>{malformedRequestHexStringValidator},
|
||||
validation::IfType<boost::json::object>{
|
||||
validation::Section{
|
||||
{JS(account), validation::Required{}, validation::AccountBase58Validator},
|
||||
{JS(seq), validation::Required{}, validation::Type<uint32_t>{}},
|
||||
{JS(seq), validation::Required{}, malformedRequestIntValidator},
|
||||
},
|
||||
}},
|
||||
{JS(payment_channel), validation::Uint256HexStringValidator},
|
||||
{JS(payment_channel), malformedRequestHexStringValidator},
|
||||
{JS(ripple_state),
|
||||
validation::Type<boost::json::object>{},
|
||||
validation::Section{
|
||||
@@ -153,14 +159,14 @@ public:
|
||||
}},
|
||||
{JS(ticket),
|
||||
validation::Type<std::string, boost::json::object>{},
|
||||
validation::IfType<std::string>{validation::Uint256HexStringValidator},
|
||||
validation::IfType<std::string>{malformedRequestHexStringValidator},
|
||||
validation::IfType<boost::json::object>{
|
||||
validation::Section{
|
||||
{JS(account), validation::Required{}, validation::AccountBase58Validator},
|
||||
{JS(ticket_seq), validation::Required{}, validation::Type<uint32_t>{}},
|
||||
{JS(ticket_seq), validation::Required{}, malformedRequestIntValidator},
|
||||
},
|
||||
}},
|
||||
{JS(nft_page), validation::Uint256HexStringValidator},
|
||||
{JS(nft_page), malformedRequestHexStringValidator},
|
||||
};
|
||||
|
||||
return rpcSpec;
|
||||
|
||||
@@ -96,11 +96,14 @@ generateTestValuesForParametersTest()
|
||||
"account_rootNotString"},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"UnknownOption",
|
||||
"InvalidLedgerIndex",
|
||||
R"({
|
||||
"ledger_index": "wrong"
|
||||
})",
|
||||
"unknownOption",
|
||||
"Unknown option."},
|
||||
"invalidParams",
|
||||
"ledgerIndexMalformed"},
|
||||
|
||||
ParamTestCaseBundle{"UnknownOption", R"({})", "unknownOption", "Unknown option."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"InvalidDepositPreauthType",
|
||||
@@ -115,14 +118,13 @@ generateTestValuesForParametersTest()
|
||||
R"({
|
||||
"deposit_preauth": "invalid"
|
||||
})",
|
||||
"invalidParams",
|
||||
"deposit_preauthMalformed"},
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"InvalidDepositPreauthEmtpyJson",
|
||||
R"({
|
||||
"deposit_preauth": {
|
||||
}
|
||||
"deposit_preauth": {}
|
||||
})",
|
||||
"invalidParams",
|
||||
"Required field 'owner' missing"},
|
||||
@@ -175,8 +177,8 @@ generateTestValuesForParametersTest()
|
||||
R"({
|
||||
"ticket": "invalid"
|
||||
})",
|
||||
"invalidParams",
|
||||
"ticketMalformed"},
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"InvalidTicketEmptyJson",
|
||||
@@ -218,8 +220,8 @@ generateTestValuesForParametersTest()
|
||||
}}
|
||||
}})",
|
||||
ACCOUNT),
|
||||
"invalidParams",
|
||||
"Invalid parameters."},
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"InvalidOfferType",
|
||||
@@ -234,8 +236,8 @@ generateTestValuesForParametersTest()
|
||||
R"({
|
||||
"offer": "invalid"
|
||||
})",
|
||||
"invalidParams",
|
||||
"offerMalformed"},
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"InvalidOfferEmptyJson",
|
||||
@@ -277,8 +279,8 @@ generateTestValuesForParametersTest()
|
||||
}}
|
||||
}})",
|
||||
ACCOUNT),
|
||||
"invalidParams",
|
||||
"Invalid parameters."},
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"InvalidEscrowType",
|
||||
@@ -293,8 +295,8 @@ generateTestValuesForParametersTest()
|
||||
R"({
|
||||
"escrow": "invalid"
|
||||
})",
|
||||
"invalidParams",
|
||||
"escrowMalformed"},
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"InvalidEscrowEmptyJson",
|
||||
@@ -336,8 +338,8 @@ generateTestValuesForParametersTest()
|
||||
}}
|
||||
}})",
|
||||
ACCOUNT),
|
||||
"invalidParams",
|
||||
"Invalid parameters."},
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"InvalidRippleStateType",
|
||||
@@ -360,8 +362,7 @@ generateTestValuesForParametersTest()
|
||||
ParamTestCaseBundle{
|
||||
"InvalidRippleStateEmtpyJson",
|
||||
R"({
|
||||
"ripple_state": {
|
||||
}
|
||||
"ripple_state": {}
|
||||
})",
|
||||
"invalidParams",
|
||||
"Required field 'accounts' missing"},
|
||||
@@ -459,8 +460,8 @@ generateTestValuesForParametersTest()
|
||||
R"({
|
||||
"directory": "123"
|
||||
})",
|
||||
"invalidParams",
|
||||
"directoryMalformed"},
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"InvalidDirectoryEmtpyJson",
|
||||
@@ -534,8 +535,9 @@ generateTestValuesForParametersTest()
|
||||
}}
|
||||
}})",
|
||||
INDEX1),
|
||||
"invalidParams",
|
||||
"Invalid parameters."}};
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
};
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
@@ -573,11 +575,11 @@ struct IndexTest : public HandlerBaseTest, public WithParamInterface<std::string
|
||||
};
|
||||
};
|
||||
|
||||
// content of index, payment_channel, check, nft_page fields is ledger index
|
||||
// content of index, payment_channel, nft_page and check fields is ledger index.
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
RPCLedgerEntryGroup3,
|
||||
IndexTest,
|
||||
Values("index", "payment_channel", "check", "nft_page"),
|
||||
Values("index", "nft_page", "payment_channel", "check"),
|
||||
IndexTest::NameGenerator{});
|
||||
|
||||
TEST_P(IndexTest, InvalidIndexUint256)
|
||||
@@ -594,8 +596,8 @@ TEST_P(IndexTest, InvalidIndexUint256)
|
||||
ASSERT_FALSE(output);
|
||||
|
||||
auto const err = RPC::makeError(output.error());
|
||||
EXPECT_EQ(err.at("error").as_string(), "invalidParams");
|
||||
EXPECT_EQ(err.at("error_message").as_string(), index + "Malformed");
|
||||
EXPECT_EQ(err.at("error").as_string(), "malformedRequest");
|
||||
EXPECT_EQ(err.at("error_message").as_string(), "Malformed request.");
|
||||
});
|
||||
}
|
||||
|
||||
@@ -613,8 +615,8 @@ TEST_P(IndexTest, InvalidIndexNotString)
|
||||
ASSERT_FALSE(output);
|
||||
|
||||
auto const err = RPC::makeError(output.error());
|
||||
EXPECT_EQ(err.at("error").as_string(), "invalidParams");
|
||||
EXPECT_EQ(err.at("error_message").as_string(), index + "NotString");
|
||||
EXPECT_EQ(err.at("error").as_string(), "malformedRequest");
|
||||
EXPECT_EQ(err.at("error_message").as_string(), "Malformed request.");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user