Cleanup some Json::Value methods:

* Rename isArray to isArrayOrNull
* Rename isObject to isObjectOrNull
* Introduce isArray and isObject
* Change as many uses of isArrayorNull to isArray as possible
* Change as many uses of isObjectorNull to isObject as possible
* Reject null JSON arrays for subscribe and unsubscribe
This commit is contained in:
Howard Hinnant
2018-02-01 15:23:41 -05:00
committed by Mike Ellery
parent 20defb4844
commit 1a245234f1
24 changed files with 90 additions and 63 deletions

View File

@@ -213,8 +213,7 @@ struct Regression_test : public beast::unit_test::suite
std::vector<boost::asio::const_buffer> buffers;
buffers.emplace_back(buffer(request, 1024));
buffers.emplace_back(buffer(request.data() + 1024, request.length() - 1024));
BEAST_EXPECT(jrReader.parse(jvRequest, buffers) &&
jvRequest && jvRequest.isObject());
BEAST_EXPECT(jrReader.parse(jvRequest, buffers) && jvRequest.isObject());
}
void run() override

View File

@@ -38,9 +38,7 @@ public:
bool parseJSONString (std::string const& json, Json::Value& to)
{
Json::Reader reader;
return reader.parse(json, to) &&
bool (to) &&
to.isObject();
return reader.parse(json, to) && to.isObject();
}
void testParseJSONArrayWithInvalidChildrenObjects ()

View File

@@ -64,7 +64,7 @@ class AmendmentBlocked_test : public beast::unit_test::suite
pf_req[jss::destination_amount] = bob["USD"](20).value ().getJson (0);
jr = wsc->invoke("path_find", pf_req) [jss::result];
BEAST_EXPECT (jr.isMember (jss::alternatives) &&
jr[jss::alternatives].isArray () &&
jr[jss::alternatives].isArray() &&
jr[jss::alternatives].size () == 1);
// submit

View File

@@ -462,11 +462,16 @@ public:
BEAST_EXPECT(jr[jss::error_message] == "You don't have permission for this command.");
}
std::initializer_list<Json::Value> const nonArrays {Json::nullValue,
Json::intValue, Json::uintValue, Json::realValue, "",
Json::booleanValue, Json::objectValue};
for (auto const& f : {jss::accounts_proposed, jss::accounts})
{
for (auto const& nonArray : nonArrays)
{
Json::Value jv;
jv[f] = "";
jv[f] = nonArray;
auto jr = wsc->invoke(method, jv) [jss::result];
BEAST_EXPECT(jr[jss::error] == "invalidParams");
BEAST_EXPECT(jr[jss::error_message] == "Invalid parameters.");
@@ -481,9 +486,10 @@ public:
}
}
for (auto const& nonArray : nonArrays)
{
Json::Value jv;
jv[jss::books] = "";
jv[jss::books] = nonArray;
auto jr = wsc->invoke(method, jv) [jss::result];
BEAST_EXPECT(jr[jss::error] == "invalidParams");
BEAST_EXPECT(jr[jss::error_message] == "Invalid parameters.");
@@ -608,9 +614,10 @@ public:
BEAST_EXPECT(jr[jss::error_message] == "No such market.");
}
for (auto const& nonArray : nonArrays)
{
Json::Value jv;
jv[jss::streams] = "";
jv[jss::streams] = nonArray;
auto jr = wsc->invoke(method, jv) [jss::result];
BEAST_EXPECT(jr[jss::error] == "invalidParams");
BEAST_EXPECT(jr[jss::error_message] == "Invalid parameters.");