21 #include <ripple/protocol/jss.h>
22 #include <ripple/rpc/impl/RPCHelpers.h>
31 testcase (
"right api_version: explicitly specified or filled by parser");
33 using namespace test::jtx;
36 auto isCorrectReply = [](
Json::Value const & re) ->
bool
38 if(re.isMember(jss::error))
40 return re.isMember(jss::version);
43 auto jrr = env.rpc(
"json",
"version",
"{\"api_version\": " +
46 BEAST_EXPECT(isCorrectReply(jrr));
48 jrr = env.rpc(
"version") [jss::result];
49 BEAST_EXPECT(isCorrectReply(jrr));
55 testcase (
"wrong api_version: too low, too high, or wrong format");
57 using namespace test::jtx;
62 if (re.isMember(
"error_what"))
63 if (re[
"error_what"].isString())
64 return re[
"error_what"].asString();
68 auto re = env.rpc(
"json",
"version",
"{\"api_version\": " +
71 BEAST_EXPECT(get_error_what(re).find(jss::invalid_API_version.c_str()));
73 re = env.rpc(
"json",
"version",
"{\"api_version\": " +
76 BEAST_EXPECT(get_error_what(re).find(jss::invalid_API_version.c_str()));
78 re = env.rpc(
"json",
"version",
"{\"api_version\": \"a\"}");
79 BEAST_EXPECT(get_error_what(re).find(jss::invalid_API_version.c_str()));
84 testcase (
"test getAPIVersionNumber function");
86 unsigned int versionIfUnspecified =
112 j_object[jss::api_version] =
"a";
119 testcase (
"batch, all good request");
121 using namespace test::jtx;
124 auto const without_api_verion =
std::string (
"{ ") +
125 "\"jsonrpc\": \"2.0\", "
126 "\"ripplerpc\": \"2.0\", "
128 "\"method\": \"version\", "
131 "\"jsonrpc\": \"2.0\", "
132 "\"ripplerpc\": \"2.0\", "
134 "\"method\": \"version\", "
138 auto re = env.rpc(
"json2",
'[' + without_api_verion +
", " +
139 with_api_verion +
']');
141 if( !BEAST_EXPECT( re.isArray() ))
143 if( !BEAST_EXPECT( re.size() == 2 ))
145 BEAST_EXPECT(re[0u].isMember(jss::result) &&
146 re[0u][jss::result].isMember(jss::version));
147 BEAST_EXPECT(re[1u].isMember(jss::result) &&
148 re[1u][jss::result].isMember(jss::version));
154 testcase (
"batch, with a bad request");
156 using namespace test::jtx;
159 auto const without_api_verion =
std::string (
"{ ") +
160 "\"jsonrpc\": \"2.0\", "
161 "\"ripplerpc\": \"2.0\", "
163 "\"method\": \"version\", "
165 auto const with_wrong_api_verion =
std::string (
"{ ") +
166 "\"jsonrpc\": \"2.0\", "
167 "\"ripplerpc\": \"2.0\", "
169 "\"method\": \"version\", "
171 "\"api_version\": " +
174 auto re = env.rpc(
"json2",
'[' + without_api_verion +
", " +
175 with_wrong_api_verion +
']');
177 if( !BEAST_EXPECT( re.isArray() ))
179 if( !BEAST_EXPECT( re.size() == 2 ))
181 BEAST_EXPECT(re[0u].isMember(jss::result) &&
182 re[0u][jss::result].isMember(jss::version));
183 BEAST_EXPECT(re[1u].isMember(jss::error));