mirror of
https://github.com/XRPLF/clio.git
synced 2026-09-27 15:38:04 +00:00
fix: Align error messages and rpc-spec 0.1.17 (#3223)
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
"requires": [
|
||||
"zlib/1.3.2#1cb806da49011867778ffb6ac7190fcb%1782392402.122708",
|
||||
"xxhash/0.8.3#681d36a0a6111fc56e5e45ea182c19cc%1782392402.420688",
|
||||
"xrpl-rpc-spec/0.1.15#cd65b9ba58070dc851d67c88a0224e4f%1789705851.014228",
|
||||
"xrpl-rpc-spec/0.1.17#ddfbc1f89da7797b6506fb9ee9488e17%1790136770.803908",
|
||||
"xrpl/3.4.0#e06b127b3ba92806a43fc7a53fc05fd3%1789577552.219154",
|
||||
"sqlite3/3.53.0#324ada52333108388a9a6108bfa96734%1782392403.185447",
|
||||
"spdlog/1.17.0#bcbaaf7147bda6ad24ffbd1ac3d7142c%1782736610.443882",
|
||||
|
||||
@@ -17,7 +17,7 @@ class ClioConan(ConanFile):
|
||||
"fmt/12.1.0",
|
||||
"libbacktrace/cci.20210118",
|
||||
"spdlog/1.17.0",
|
||||
"xrpl-rpc-spec/0.1.15",
|
||||
"xrpl-rpc-spec/0.1.17",
|
||||
"xrpl/3.4.0",
|
||||
]
|
||||
|
||||
|
||||
@@ -1538,7 +1538,7 @@ parseBook(
|
||||
}
|
||||
|
||||
if (pays == gets)
|
||||
return std::unexpected{Status{RippledError::RpcBadMarket, "badMarket"}};
|
||||
return std::unexpected{Status{RippledError::RpcBadMarket}};
|
||||
|
||||
return xrpl::Book{pays, gets, domainID};
|
||||
}
|
||||
@@ -1677,7 +1677,7 @@ parseBook(boost::json::object const& request)
|
||||
}
|
||||
|
||||
if (payCurrency == getCurrency && payIssuer == getIssuer)
|
||||
return std::unexpected{Status{RippledError::RpcBadMarket, "badMarket"}};
|
||||
return std::unexpected{Status{RippledError::RpcBadMarket}};
|
||||
|
||||
std::optional<xrpl::uint256> domainID;
|
||||
if (request.contains("domain")) {
|
||||
|
||||
@@ -58,14 +58,8 @@ VaultInfoHandler::VaultInfoHandler(std::shared_ptr<BackendInterface> sharedPtrBa
|
||||
VaultInfoHandler::Result
|
||||
VaultInfoHandler::process(VaultInfoHandler::Input const& input, Context const& ctx) const
|
||||
{
|
||||
// vault info input must either have owner and sequence, or vault_id only. Wording and code
|
||||
// match xrpld's VaultInfo.cpp parseVault().
|
||||
if (not validate(input)) {
|
||||
return Error{Status{
|
||||
RippledError::RpcInvalidParams,
|
||||
"Must specify either 'vault_id' or both 'owner' and 'seq'."
|
||||
}};
|
||||
}
|
||||
if (not validate(input))
|
||||
return Error{ClioError::RpcMalformedRequest};
|
||||
|
||||
auto const range = sharedPtrBackend_->fetchLedgerRange();
|
||||
ASSERT(range.has_value(), "VaultInfo's ledger range must be available");
|
||||
|
||||
@@ -706,7 +706,7 @@ TEST_F(RPCHelpersTest, ParseBookBadMarket)
|
||||
auto const book = rpc::parseBook(usd, usd, std::nullopt);
|
||||
ASSERT_FALSE(book.has_value());
|
||||
EXPECT_TRUE(book.error().code == CombinedError{RippledError::RpcBadMarket});
|
||||
EXPECT_EQ(rpc::makeError(book.error()).at("error_message").as_string(), "badMarket");
|
||||
EXPECT_EQ(rpc::makeError(book.error()).at("error_message").as_string(), "No such market.");
|
||||
}
|
||||
|
||||
// Identical MPT assets on both sides.
|
||||
@@ -717,7 +717,7 @@ TEST_F(RPCHelpersTest, ParseBookBadMarket)
|
||||
auto const book = rpc::parseBook(mpt, mpt, std::nullopt);
|
||||
ASSERT_FALSE(book.has_value());
|
||||
EXPECT_TRUE(book.error().code == CombinedError{RippledError::RpcBadMarket});
|
||||
EXPECT_EQ(rpc::makeError(book.error()).at("error_message").as_string(), "badMarket");
|
||||
EXPECT_EQ(rpc::makeError(book.error()).at("error_message").as_string(), "No such market.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -769,7 +769,7 @@ TEST_F(RPCHelpersTest, ParseBookCurrencyOverloadDelegates)
|
||||
);
|
||||
ASSERT_FALSE(book.has_value());
|
||||
EXPECT_TRUE(book.error().code == CombinedError{RippledError::RpcBadMarket});
|
||||
EXPECT_EQ(rpc::makeError(book.error()).at("error_message").as_string(), "badMarket");
|
||||
EXPECT_EQ(rpc::makeError(book.error()).at("error_message").as_string(), "No such market.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@ generateParameterBookOffersTestBundles()
|
||||
}
|
||||
})JSON",
|
||||
.expectedError = "invalidParams",
|
||||
.expectedErrorMessage = "Required field 'currency' missing"
|
||||
.expectedErrorMessage = "Missing field 'taker_pays.currency'."
|
||||
},
|
||||
ParameterTestBundle{
|
||||
.testName = "TakerGetsMissingCurrency",
|
||||
@@ -163,7 +163,7 @@ generateParameterBookOffersTestBundles()
|
||||
}
|
||||
})JSON",
|
||||
.expectedError = "invalidParams",
|
||||
.expectedErrorMessage = "Required field 'currency' missing"
|
||||
.expectedErrorMessage = "Missing field 'taker_gets.currency'."
|
||||
},
|
||||
ParameterTestBundle{
|
||||
.testName = "TakerGetsWrongCurrency",
|
||||
@@ -208,8 +208,8 @@ generateParameterBookOffersTestBundles()
|
||||
"currency": "XRP"
|
||||
}
|
||||
})JSON",
|
||||
.expectedError = "dstAmtMalformed",
|
||||
.expectedErrorMessage = "Destination amount/currency/issuer is malformed."
|
||||
.expectedError = "invalidParams",
|
||||
.expectedErrorMessage = "Invalid field 'taker_gets.currency', not string."
|
||||
},
|
||||
ParameterTestBundle{
|
||||
.testName = "TakerPaysCurrencyNotString",
|
||||
@@ -222,8 +222,8 @@ generateParameterBookOffersTestBundles()
|
||||
"currency": "XRP"
|
||||
}
|
||||
})JSON",
|
||||
.expectedError = "srcCurMalformed",
|
||||
.expectedErrorMessage = "Source currency is malformed."
|
||||
.expectedError = "invalidParams",
|
||||
.expectedErrorMessage = "Invalid field 'taker_pays.currency', not string."
|
||||
},
|
||||
ParameterTestBundle{
|
||||
.testName = "TakerGetsWrongIssuer",
|
||||
@@ -490,7 +490,33 @@ generateParameterBookOffersTestBundles()
|
||||
}
|
||||
})JSON",
|
||||
.expectedError = "badMarket",
|
||||
.expectedErrorMessage = "badMarket"
|
||||
.expectedErrorMessage = "No such market."
|
||||
},
|
||||
ParameterTestBundle{
|
||||
.testName = "TakerGetsMptIdNotString",
|
||||
.testJson = R"JSON({
|
||||
"taker_gets": {
|
||||
"mpt_issuance_id": 123
|
||||
},
|
||||
"taker_pays": {
|
||||
"currency": "XRP"
|
||||
}
|
||||
})JSON",
|
||||
.expectedError = "invalidParams",
|
||||
.expectedErrorMessage = "Invalid field 'taker_gets.mpt_issuance_id', not string."
|
||||
},
|
||||
ParameterTestBundle{
|
||||
.testName = "TakerPaysMptIdNotString",
|
||||
.testJson = R"JSON({
|
||||
"taker_gets": {
|
||||
"currency": "XRP"
|
||||
},
|
||||
"taker_pays": {
|
||||
"mpt_issuance_id": true
|
||||
}
|
||||
})JSON",
|
||||
.expectedError = "invalidParams",
|
||||
.expectedErrorMessage = "Invalid field 'taker_pays.mpt_issuance_id', not string."
|
||||
},
|
||||
ParameterTestBundle{
|
||||
.testName = "TakerGetsMptIdAndCurrency",
|
||||
@@ -585,7 +611,7 @@ generateParameterBookOffersTestBundles()
|
||||
}
|
||||
})JSON",
|
||||
.expectedError = "badMarket",
|
||||
.expectedErrorMessage = "badMarket"
|
||||
.expectedErrorMessage = "No such market."
|
||||
},
|
||||
// The "account one" issuer (rrrrrrrrrrrrrrrrrrrrBZbvji == xrpl::noAccount()) is rejected,
|
||||
// mirroring rippled's parseTakerIssuerJSON "bad issuer account one" check.
|
||||
|
||||
@@ -476,7 +476,7 @@ generateTestValuesForParametersTest()
|
||||
]
|
||||
})JSON",
|
||||
.expectedError = "badMarket",
|
||||
.expectedErrorMessage = "badMarket"
|
||||
.expectedErrorMessage = "No such market."
|
||||
},
|
||||
SubscribeParamTestCaseBundle{
|
||||
.testName = "BooksItemInvalidSnapshot",
|
||||
|
||||
@@ -439,7 +439,7 @@ generateTestValuesForParametersTest()
|
||||
]
|
||||
})JSON",
|
||||
.expectedError = "badMarket",
|
||||
.expectedErrorMessage = "badMarket"
|
||||
.expectedErrorMessage = "No such market."
|
||||
},
|
||||
UnsubscribeParamTestCaseBundle{
|
||||
.testName = "BooksItemInvalidBoth",
|
||||
|
||||
@@ -70,27 +70,27 @@ generateTestValuesForParametersTest()
|
||||
.testJson = R"JSON({
|
||||
"idk": "idk"
|
||||
})JSON",
|
||||
.expectedError = "invalidParams",
|
||||
.expectedErrorCode = RippledError::RpcInvalidParams,
|
||||
.expectedErrorMessage = "Must specify either 'vault_id' or both 'owner' and 'seq'."
|
||||
.expectedError = "malformedRequest",
|
||||
.expectedErrorCode = rpc::ClioError::RpcMalformedRequest,
|
||||
.expectedErrorMessage = "Malformed request."
|
||||
},
|
||||
VaultInfoParamTestCaseBundle{
|
||||
.testName = "MissingOwnerInVault",
|
||||
.testJson = R"JSON({
|
||||
"seq": 4
|
||||
})JSON",
|
||||
.expectedError = "invalidParams",
|
||||
.expectedErrorCode = RippledError::RpcInvalidParams,
|
||||
.expectedErrorMessage = "Must specify either 'vault_id' or both 'owner' and 'seq'."
|
||||
.expectedError = "malformedRequest",
|
||||
.expectedErrorCode = rpc::ClioError::RpcMalformedRequest,
|
||||
.expectedErrorMessage = "Malformed request."
|
||||
},
|
||||
VaultInfoParamTestCaseBundle{
|
||||
.testName = "MissingSeqInVault",
|
||||
.testJson = R"JSON({
|
||||
"owner": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"
|
||||
})JSON",
|
||||
.expectedError = "invalidParams",
|
||||
.expectedErrorCode = RippledError::RpcInvalidParams,
|
||||
.expectedErrorMessage = "Must specify either 'vault_id' or both 'owner' and 'seq'."
|
||||
.expectedError = "malformedRequest",
|
||||
.expectedErrorCode = rpc::ClioError::RpcMalformedRequest,
|
||||
.expectedErrorMessage = "Malformed request."
|
||||
},
|
||||
VaultInfoParamTestCaseBundle{
|
||||
.testName = "SeqNotAnInteger",
|
||||
@@ -150,9 +150,9 @@ generateTestValuesForParametersTest()
|
||||
kVaultId,
|
||||
kAccount
|
||||
),
|
||||
.expectedError = "invalidParams",
|
||||
.expectedErrorCode = RippledError::RpcInvalidParams,
|
||||
.expectedErrorMessage = "Must specify either 'vault_id' or both 'owner' and 'seq'."
|
||||
.expectedError = "malformedRequest",
|
||||
.expectedErrorCode = rpc::ClioError::RpcMalformedRequest,
|
||||
.expectedErrorMessage = "Malformed request."
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user