mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-19 19:25:53 +00:00
@@ -544,6 +544,245 @@ generateTestValuesForParametersTest()
|
||||
),
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"InvalidAMMStringIndex",
|
||||
R"({
|
||||
"amm": "invalid"
|
||||
})",
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"EmptyAMMJson",
|
||||
R"({
|
||||
"amm": {}
|
||||
})",
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"EmptyAMMAssetJson",
|
||||
fmt::format(
|
||||
R"({{
|
||||
"amm":
|
||||
{{
|
||||
"asset":{{}},
|
||||
"asset2":
|
||||
{{
|
||||
"currency" : "USD",
|
||||
"issuer" : "{}"
|
||||
}}
|
||||
}}
|
||||
}})",
|
||||
ACCOUNT
|
||||
),
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"EmptyAMMAsset2Json",
|
||||
fmt::format(
|
||||
R"({{
|
||||
"amm":
|
||||
{{
|
||||
"asset2":{{}},
|
||||
"asset":
|
||||
{{
|
||||
"currency" : "USD",
|
||||
"issuer" : "{}"
|
||||
}}
|
||||
}}
|
||||
}})",
|
||||
ACCOUNT
|
||||
),
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"MissingAMMAsset2Json",
|
||||
fmt::format(
|
||||
R"({{
|
||||
"amm":
|
||||
{{
|
||||
"asset":
|
||||
{{
|
||||
"currency" : "USD",
|
||||
"issuer" : "{}"
|
||||
}}
|
||||
}}
|
||||
}})",
|
||||
ACCOUNT
|
||||
),
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"MissingAMMAssetJson",
|
||||
fmt::format(
|
||||
R"({{
|
||||
"amm":
|
||||
{{
|
||||
"asset2":
|
||||
{{
|
||||
"currency" : "USD",
|
||||
"issuer" : "{}"
|
||||
}}
|
||||
}}
|
||||
}})",
|
||||
ACCOUNT
|
||||
),
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"AMMAssetNotJson",
|
||||
fmt::format(
|
||||
R"({{
|
||||
"amm":
|
||||
{{
|
||||
"asset": "invalid",
|
||||
"asset2":
|
||||
{{
|
||||
"currency" : "USD",
|
||||
"issuer" : "{}"
|
||||
}}
|
||||
}}
|
||||
}})",
|
||||
ACCOUNT
|
||||
),
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"AMMAsset2NotJson",
|
||||
fmt::format(
|
||||
R"({{
|
||||
"amm":
|
||||
{{
|
||||
"asset2": "invalid",
|
||||
"asset":
|
||||
{{
|
||||
"currency" : "USD",
|
||||
"issuer" : "{}"
|
||||
}}
|
||||
}}
|
||||
}})",
|
||||
ACCOUNT
|
||||
),
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"WrongAMMAssetCurrency",
|
||||
fmt::format(
|
||||
R"({{
|
||||
"amm":
|
||||
{{
|
||||
"asset2":
|
||||
{{
|
||||
"currency":"XRP"
|
||||
}},
|
||||
"asset":
|
||||
{{
|
||||
"currency" : "USD2",
|
||||
"issuer" : "{}"
|
||||
}}
|
||||
}}
|
||||
}})",
|
||||
ACCOUNT
|
||||
),
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"WrongAMMAssetIssuer",
|
||||
fmt::format(
|
||||
R"({{
|
||||
"amm":
|
||||
{{
|
||||
"asset2":
|
||||
{{
|
||||
"currency":"XRP"
|
||||
}},
|
||||
"asset":
|
||||
{{
|
||||
"currency" : "USD",
|
||||
"issuer" : "aa{}"
|
||||
}}
|
||||
}}
|
||||
}})",
|
||||
ACCOUNT
|
||||
),
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"MissingAMMAssetIssuerForNonXRP",
|
||||
fmt::format(
|
||||
R"({{
|
||||
"amm":
|
||||
{{
|
||||
"asset2":
|
||||
{{
|
||||
"currency":"JPY"
|
||||
}},
|
||||
"asset":
|
||||
{{
|
||||
"currency" : "USD",
|
||||
"issuer" : "{}"
|
||||
}}
|
||||
}}
|
||||
}})",
|
||||
ACCOUNT
|
||||
),
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"AMMAssetHasIssuerForXRP",
|
||||
fmt::format(
|
||||
R"({{
|
||||
"amm":
|
||||
{{
|
||||
"asset2":
|
||||
{{
|
||||
"currency":"XRP",
|
||||
"issuer":"{}"
|
||||
}},
|
||||
"asset":
|
||||
{{
|
||||
"currency" : "USD",
|
||||
"issuer" : "{}"
|
||||
}}
|
||||
}}
|
||||
}})",
|
||||
ACCOUNT,
|
||||
ACCOUNT
|
||||
),
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
|
||||
ParamTestCaseBundle{
|
||||
"MissingAMMAssetCurrency",
|
||||
fmt::format(
|
||||
R"({{
|
||||
"amm":
|
||||
{{
|
||||
"asset2":
|
||||
{{
|
||||
"currency":"XRP"
|
||||
}},
|
||||
"asset":
|
||||
{{
|
||||
"issuer" : "{}"
|
||||
}}
|
||||
}}
|
||||
}})",
|
||||
ACCOUNT
|
||||
),
|
||||
"malformedRequest",
|
||||
"Malformed request."},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -917,7 +1156,38 @@ generateTestValuesForNormalPathTest()
|
||||
ripple::keylet::offer(account1, 2).key,
|
||||
CreateOfferLedgerObject(
|
||||
ACCOUNT, 100, 200, "USD", "XRP", ACCOUNT2, ripple::toBase58(ripple::xrpAccount()), INDEX1
|
||||
)}};
|
||||
)},
|
||||
NormalPathTestBundle{
|
||||
"AMMViaIndex",
|
||||
fmt::format(
|
||||
R"({{
|
||||
"binary": true,
|
||||
"amm": "{}"
|
||||
}})",
|
||||
INDEX1
|
||||
),
|
||||
ripple::uint256{INDEX1},
|
||||
CreateAMMObject(ACCOUNT, "XRP", ripple::toBase58(ripple::xrpAccount()), "JPY", ACCOUNT2)},
|
||||
NormalPathTestBundle{
|
||||
"AMMViaJson",
|
||||
fmt::format(
|
||||
R"({{
|
||||
"binary": true,
|
||||
"amm": {{
|
||||
"asset": {{
|
||||
"currency": "XRP"
|
||||
}},
|
||||
"asset2": {{
|
||||
"currency": "{}",
|
||||
"issuer": "{}"
|
||||
}}
|
||||
}}
|
||||
}})",
|
||||
"JPY",
|
||||
ACCOUNT2
|
||||
),
|
||||
ripple::keylet::amm(GetIssue("XRP", ripple::toBase58(ripple::xrpAccount())), GetIssue("JPY", ACCOUNT2)).key,
|
||||
CreateAMMObject(ACCOUNT, "XRP", ripple::toBase58(ripple::xrpAccount()), "JPY", ACCOUNT2)}};
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_CASE_P(
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <chrono>
|
||||
|
||||
constexpr static auto INDEX1 = "1B8590C01B0006EDFA9ED60296DD052DC5E90F99659B25014D08E1BC983515BC";
|
||||
constexpr static auto CURRENCY = "03930D02208264E2E40EC1B0C09E4DB96EE197B1";
|
||||
|
||||
ripple::AccountID
|
||||
GetAccountIDWithString(std::string_view id)
|
||||
@@ -749,3 +750,27 @@ CreateAmendmentsObject(std::vector<ripple::uint256> const& enabledAmendments)
|
||||
amendments.setFieldV256(ripple::sfAmendments, list);
|
||||
return amendments;
|
||||
}
|
||||
|
||||
ripple::STObject
|
||||
CreateAMMObject(
|
||||
std::string_view accountId,
|
||||
std::string_view assetCurrency,
|
||||
std::string_view assetIssuer,
|
||||
std::string_view asset2Currency,
|
||||
std::string_view asset2Issuer
|
||||
)
|
||||
{
|
||||
auto amm = ripple::STObject(ripple::sfLedgerEntry);
|
||||
amm.setFieldU16(ripple::sfLedgerEntryType, ripple::ltAMM);
|
||||
amm.setAccountID(ripple::sfAccount, GetAccountIDWithString(accountId));
|
||||
amm.setFieldU16(ripple::sfTradingFee, 5);
|
||||
amm.setFieldU64(ripple::sfOwnerNode, 0);
|
||||
amm.setFieldIssue(ripple::sfAsset, ripple::STIssue{ripple::sfAsset, GetIssue(assetCurrency, assetIssuer)});
|
||||
amm.setFieldIssue(ripple::sfAsset2, ripple::STIssue{ripple::sfAsset2, GetIssue(asset2Currency, asset2Issuer)});
|
||||
ripple::Issue const issue1(
|
||||
ripple::Currency{CURRENCY}, ripple::parseBase58<ripple::AccountID>(std::string(accountId)).value()
|
||||
);
|
||||
amm.setFieldAmount(ripple::sfLPTokenBalance, ripple::STAmount(issue1, 100));
|
||||
amm.setFieldU32(ripple::sfFlags, 0);
|
||||
return amm;
|
||||
}
|
||||
|
||||
@@ -277,3 +277,12 @@ CreateCreateNFTOfferTxWithMetadata(
|
||||
|
||||
[[nodiscard]] ripple::STObject
|
||||
CreateAmendmentsObject(std::vector<ripple::uint256> const& enabledAmendments);
|
||||
|
||||
[[nodiscard]] ripple::STObject
|
||||
CreateAMMObject(
|
||||
std::string_view accountId,
|
||||
std::string_view assetCurrency,
|
||||
std::string_view assetIssuer,
|
||||
std::string_view asset2Currency,
|
||||
std::string_view asset2Issuer
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user