diff --git a/AccountInfo__test_8cpp_source.html b/AccountInfo__test_8cpp_source.html index 7565d2b340..ca71ee58ea 100644 --- a/AccountInfo__test_8cpp_source.html +++ b/AccountInfo__test_8cpp_source.html @@ -277,417 +277,414 @@ $(function() {
206  testSignerListsApiVersion2()
207  {
208  using namespace jtx;
-
209  Env env{*this, envconfig([](std::unique_ptr<Config> c) {
-
210  c->loadFromString("\n[beta_rpc_api]\n1\n");
-
211  return c;
-
212  })};
-
213  Account const alice{"alice"};
-
214  env.fund(XRP(1000), alice);
+
209  Env env{*this};
+
210  Account const alice{"alice"};
+
211  env.fund(XRP(1000), alice);
+
212 
+
213  auto const withoutSigners = std::string("{ ") +
+
214  "\"api_version\": 2, \"account\": \"" + alice.human() + "\"}";
215 
-
216  auto const withoutSigners = std::string("{ ") +
-
217  "\"api_version\": 2, \"account\": \"" + alice.human() + "\"}";
-
218 
-
219  auto const withSigners = std::string("{ ") +
-
220  "\"api_version\": 2, \"account\": \"" + alice.human() + "\", " +
-
221  "\"signer_lists\": true }";
-
222 
-
223  // Alice has no SignerList yet.
-
224  {
-
225  // account_info without the "signer_lists" argument.
-
226  auto const info = env.rpc("json", "account_info", withoutSigners);
-
227  BEAST_EXPECT(info.isMember(jss::result));
-
228  BEAST_EXPECT(!info[jss::result].isMember(jss::signer_lists));
-
229  }
-
230  {
-
231  // account_info with the "signer_lists" argument.
-
232  auto const info = env.rpc("json", "account_info", withSigners);
-
233  BEAST_EXPECT(info.isMember(jss::result));
-
234  auto const& data = info[jss::result];
-
235  BEAST_EXPECT(data.isMember(jss::signer_lists));
-
236  auto const& signerLists = data[jss::signer_lists];
-
237  BEAST_EXPECT(signerLists.isArray());
-
238  BEAST_EXPECT(signerLists.size() == 0);
-
239  }
+
216  auto const withSigners = std::string("{ ") +
+
217  "\"api_version\": 2, \"account\": \"" + alice.human() + "\", " +
+
218  "\"signer_lists\": true }";
+
219 
+
220  // Alice has no SignerList yet.
+
221  {
+
222  // account_info without the "signer_lists" argument.
+
223  auto const info = env.rpc("json", "account_info", withoutSigners);
+
224  BEAST_EXPECT(info.isMember(jss::result));
+
225  BEAST_EXPECT(!info[jss::result].isMember(jss::signer_lists));
+
226  }
+
227  {
+
228  // account_info with the "signer_lists" argument.
+
229  auto const info = env.rpc("json", "account_info", withSigners);
+
230  BEAST_EXPECT(info.isMember(jss::result));
+
231  auto const& data = info[jss::result];
+
232  BEAST_EXPECT(data.isMember(jss::signer_lists));
+
233  auto const& signerLists = data[jss::signer_lists];
+
234  BEAST_EXPECT(signerLists.isArray());
+
235  BEAST_EXPECT(signerLists.size() == 0);
+
236  }
+
237 
+
238  // Give alice a SignerList.
+
239  Account const bogie{"bogie"};
240 
-
241  // Give alice a SignerList.
-
242  Account const bogie{"bogie"};
-
243 
-
244  Json::Value const smallSigners = signers(alice, 2, {{bogie, 3}});
-
245  env(smallSigners);
-
246  {
-
247  // account_info without the "signer_lists" argument.
-
248  auto const info = env.rpc("json", "account_info", withoutSigners);
-
249  BEAST_EXPECT(info.isMember(jss::result));
-
250  BEAST_EXPECT(!info[jss::result].isMember(jss::signer_lists));
-
251  }
-
252  {
-
253  // account_info with the "signer_lists" argument.
-
254  auto const info = env.rpc("json", "account_info", withSigners);
-
255  BEAST_EXPECT(info.isMember(jss::result));
-
256  auto const& data = info[jss::result];
-
257  BEAST_EXPECT(data.isMember(jss::signer_lists));
-
258  auto const& signerLists = data[jss::signer_lists];
-
259  BEAST_EXPECT(signerLists.isArray());
-
260  BEAST_EXPECT(signerLists.size() == 1);
-
261  auto const& signers = signerLists[0u];
-
262  BEAST_EXPECT(signers.isObject());
-
263  BEAST_EXPECT(signers[sfSignerQuorum.jsonName] == 2);
-
264  auto const& signerEntries = signers[sfSignerEntries.jsonName];
-
265  BEAST_EXPECT(signerEntries.size() == 1);
-
266  auto const& entry0 = signerEntries[0u][sfSignerEntry.jsonName];
-
267  BEAST_EXPECT(entry0[sfSignerWeight.jsonName] == 3);
-
268  }
-
269 
-
270  // Give alice a big signer list
-
271  Account const demon{"demon"};
-
272  Account const ghost{"ghost"};
-
273  Account const haunt{"haunt"};
-
274  Account const jinni{"jinni"};
-
275  Account const phase{"phase"};
-
276  Account const shade{"shade"};
-
277  Account const spook{"spook"};
-
278 
-
279  Json::Value const bigSigners = signers(
-
280  alice,
-
281  4,
-
282  {
-
283  {bogie, 1},
-
284  {demon, 1},
-
285  {ghost, 1},
-
286  {haunt, 1},
-
287  {jinni, 1},
-
288  {phase, 1},
-
289  {shade, 1},
-
290  {spook, 1},
-
291  });
-
292  env(bigSigners);
-
293  {
-
294  // account_info with the "signer_lists" argument.
-
295  auto const info = env.rpc("json", "account_info", withSigners);
-
296  BEAST_EXPECT(info.isMember(jss::result));
-
297  auto const& data = info[jss::result];
-
298  BEAST_EXPECT(data.isMember(jss::signer_lists));
-
299  auto const& signerLists = data[jss::signer_lists];
-
300  BEAST_EXPECT(signerLists.isArray());
-
301  BEAST_EXPECT(signerLists.size() == 1);
-
302  auto const& signers = signerLists[0u];
-
303  BEAST_EXPECT(signers.isObject());
-
304  BEAST_EXPECT(signers[sfSignerQuorum.jsonName] == 4);
-
305  auto const& signerEntries = signers[sfSignerEntries.jsonName];
-
306  BEAST_EXPECT(signerEntries.size() == 8);
-
307  for (unsigned i = 0u; i < 8; ++i)
-
308  {
-
309  auto const& entry = signerEntries[i][sfSignerEntry.jsonName];
-
310  BEAST_EXPECT(entry.size() == 2);
-
311  BEAST_EXPECT(entry.isMember(sfAccount.jsonName));
-
312  BEAST_EXPECT(entry[sfSignerWeight.jsonName] == 1);
-
313  }
-
314  }
-
315  }
-
316 
-
317  // Test the "signer_lists" argument in account_info, version 2 API.
-
318  void
-
319  testSignerListsV2()
-
320  {
-
321  using namespace jtx;
-
322  Env env(*this);
-
323  Account const alice{"alice"};
-
324  env.fund(XRP(1000), alice);
-
325 
-
326  auto const withoutSigners = std::string("{ ") +
-
327  "\"jsonrpc\": \"2.0\", "
-
328  "\"ripplerpc\": \"2.0\", "
-
329  "\"id\": 5, "
-
330  "\"method\": \"account_info\", "
-
331  "\"params\": { "
-
332  "\"account\": \"" +
-
333  alice.human() + "\"}}";
-
334 
-
335  auto const withSigners = std::string("{ ") +
-
336  "\"jsonrpc\": \"2.0\", "
-
337  "\"ripplerpc\": \"2.0\", "
-
338  "\"id\": 6, "
-
339  "\"method\": \"account_info\", "
-
340  "\"params\": { "
-
341  "\"account\": \"" +
-
342  alice.human() + "\", " + "\"signer_lists\": true }}";
-
343  // Alice has no SignerList yet.
-
344  {
-
345  // account_info without the "signer_lists" argument.
-
346  auto const info = env.rpc("json2", withoutSigners);
-
347  BEAST_EXPECT(
-
348  info.isMember(jss::result) &&
-
349  info[jss::result].isMember(jss::account_data));
-
350  BEAST_EXPECT(!info[jss::result][jss::account_data].isMember(
-
351  jss::signer_lists));
-
352  BEAST_EXPECT(
-
353  info.isMember(jss::jsonrpc) && info[jss::jsonrpc] == "2.0");
-
354  BEAST_EXPECT(
-
355  info.isMember(jss::ripplerpc) && info[jss::ripplerpc] == "2.0");
-
356  BEAST_EXPECT(info.isMember(jss::id) && info[jss::id] == 5);
-
357  }
-
358  {
-
359  // account_info with the "signer_lists" argument.
-
360  auto const info = env.rpc("json2", withSigners);
-
361  BEAST_EXPECT(
-
362  info.isMember(jss::result) &&
-
363  info[jss::result].isMember(jss::account_data));
-
364  auto const& data = info[jss::result][jss::account_data];
-
365  BEAST_EXPECT(data.isMember(jss::signer_lists));
-
366  auto const& signerLists = data[jss::signer_lists];
-
367  BEAST_EXPECT(signerLists.isArray());
-
368  BEAST_EXPECT(signerLists.size() == 0);
-
369  BEAST_EXPECT(
-
370  info.isMember(jss::jsonrpc) && info[jss::jsonrpc] == "2.0");
-
371  BEAST_EXPECT(
-
372  info.isMember(jss::ripplerpc) && info[jss::ripplerpc] == "2.0");
-
373  BEAST_EXPECT(info.isMember(jss::id) && info[jss::id] == 6);
-
374  }
-
375  {
-
376  // Do both of the above as a batch job
-
377  auto const info = env.rpc(
-
378  "json2", '[' + withoutSigners + ", " + withSigners + ']');
-
379  BEAST_EXPECT(
-
380  info[0u].isMember(jss::result) &&
-
381  info[0u][jss::result].isMember(jss::account_data));
-
382  BEAST_EXPECT(!info[0u][jss::result][jss::account_data].isMember(
-
383  jss::signer_lists));
+
241  Json::Value const smallSigners = signers(alice, 2, {{bogie, 3}});
+
242  env(smallSigners);
+
243  {
+
244  // account_info without the "signer_lists" argument.
+
245  auto const info = env.rpc("json", "account_info", withoutSigners);
+
246  BEAST_EXPECT(info.isMember(jss::result));
+
247  BEAST_EXPECT(!info[jss::result].isMember(jss::signer_lists));
+
248  }
+
249  {
+
250  // account_info with the "signer_lists" argument.
+
251  auto const info = env.rpc("json", "account_info", withSigners);
+
252  BEAST_EXPECT(info.isMember(jss::result));
+
253  auto const& data = info[jss::result];
+
254  BEAST_EXPECT(data.isMember(jss::signer_lists));
+
255  auto const& signerLists = data[jss::signer_lists];
+
256  BEAST_EXPECT(signerLists.isArray());
+
257  BEAST_EXPECT(signerLists.size() == 1);
+
258  auto const& signers = signerLists[0u];
+
259  BEAST_EXPECT(signers.isObject());
+
260  BEAST_EXPECT(signers[sfSignerQuorum.jsonName] == 2);
+
261  auto const& signerEntries = signers[sfSignerEntries.jsonName];
+
262  BEAST_EXPECT(signerEntries.size() == 1);
+
263  auto const& entry0 = signerEntries[0u][sfSignerEntry.jsonName];
+
264  BEAST_EXPECT(entry0[sfSignerWeight.jsonName] == 3);
+
265  }
+
266 
+
267  // Give alice a big signer list
+
268  Account const demon{"demon"};
+
269  Account const ghost{"ghost"};
+
270  Account const haunt{"haunt"};
+
271  Account const jinni{"jinni"};
+
272  Account const phase{"phase"};
+
273  Account const shade{"shade"};
+
274  Account const spook{"spook"};
+
275 
+
276  Json::Value const bigSigners = signers(
+
277  alice,
+
278  4,
+
279  {
+
280  {bogie, 1},
+
281  {demon, 1},
+
282  {ghost, 1},
+
283  {haunt, 1},
+
284  {jinni, 1},
+
285  {phase, 1},
+
286  {shade, 1},
+
287  {spook, 1},
+
288  });
+
289  env(bigSigners);
+
290  {
+
291  // account_info with the "signer_lists" argument.
+
292  auto const info = env.rpc("json", "account_info", withSigners);
+
293  BEAST_EXPECT(info.isMember(jss::result));
+
294  auto const& data = info[jss::result];
+
295  BEAST_EXPECT(data.isMember(jss::signer_lists));
+
296  auto const& signerLists = data[jss::signer_lists];
+
297  BEAST_EXPECT(signerLists.isArray());
+
298  BEAST_EXPECT(signerLists.size() == 1);
+
299  auto const& signers = signerLists[0u];
+
300  BEAST_EXPECT(signers.isObject());
+
301  BEAST_EXPECT(signers[sfSignerQuorum.jsonName] == 4);
+
302  auto const& signerEntries = signers[sfSignerEntries.jsonName];
+
303  BEAST_EXPECT(signerEntries.size() == 8);
+
304  for (unsigned i = 0u; i < 8; ++i)
+
305  {
+
306  auto const& entry = signerEntries[i][sfSignerEntry.jsonName];
+
307  BEAST_EXPECT(entry.size() == 2);
+
308  BEAST_EXPECT(entry.isMember(sfAccount.jsonName));
+
309  BEAST_EXPECT(entry[sfSignerWeight.jsonName] == 1);
+
310  }
+
311  }
+
312  }
+
313 
+
314  // Test the "signer_lists" argument in account_info, version 2 API.
+
315  void
+
316  testSignerListsV2()
+
317  {
+
318  using namespace jtx;
+
319  Env env(*this);
+
320  Account const alice{"alice"};
+
321  env.fund(XRP(1000), alice);
+
322 
+
323  auto const withoutSigners = std::string("{ ") +
+
324  "\"jsonrpc\": \"2.0\", "
+
325  "\"ripplerpc\": \"2.0\", "
+
326  "\"id\": 5, "
+
327  "\"method\": \"account_info\", "
+
328  "\"params\": { "
+
329  "\"account\": \"" +
+
330  alice.human() + "\"}}";
+
331 
+
332  auto const withSigners = std::string("{ ") +
+
333  "\"jsonrpc\": \"2.0\", "
+
334  "\"ripplerpc\": \"2.0\", "
+
335  "\"id\": 6, "
+
336  "\"method\": \"account_info\", "
+
337  "\"params\": { "
+
338  "\"account\": \"" +
+
339  alice.human() + "\", " + "\"signer_lists\": true }}";
+
340  // Alice has no SignerList yet.
+
341  {
+
342  // account_info without the "signer_lists" argument.
+
343  auto const info = env.rpc("json2", withoutSigners);
+
344  BEAST_EXPECT(
+
345  info.isMember(jss::result) &&
+
346  info[jss::result].isMember(jss::account_data));
+
347  BEAST_EXPECT(!info[jss::result][jss::account_data].isMember(
+
348  jss::signer_lists));
+
349  BEAST_EXPECT(
+
350  info.isMember(jss::jsonrpc) && info[jss::jsonrpc] == "2.0");
+
351  BEAST_EXPECT(
+
352  info.isMember(jss::ripplerpc) && info[jss::ripplerpc] == "2.0");
+
353  BEAST_EXPECT(info.isMember(jss::id) && info[jss::id] == 5);
+
354  }
+
355  {
+
356  // account_info with the "signer_lists" argument.
+
357  auto const info = env.rpc("json2", withSigners);
+
358  BEAST_EXPECT(
+
359  info.isMember(jss::result) &&
+
360  info[jss::result].isMember(jss::account_data));
+
361  auto const& data = info[jss::result][jss::account_data];
+
362  BEAST_EXPECT(data.isMember(jss::signer_lists));
+
363  auto const& signerLists = data[jss::signer_lists];
+
364  BEAST_EXPECT(signerLists.isArray());
+
365  BEAST_EXPECT(signerLists.size() == 0);
+
366  BEAST_EXPECT(
+
367  info.isMember(jss::jsonrpc) && info[jss::jsonrpc] == "2.0");
+
368  BEAST_EXPECT(
+
369  info.isMember(jss::ripplerpc) && info[jss::ripplerpc] == "2.0");
+
370  BEAST_EXPECT(info.isMember(jss::id) && info[jss::id] == 6);
+
371  }
+
372  {
+
373  // Do both of the above as a batch job
+
374  auto const info = env.rpc(
+
375  "json2", '[' + withoutSigners + ", " + withSigners + ']');
+
376  BEAST_EXPECT(
+
377  info[0u].isMember(jss::result) &&
+
378  info[0u][jss::result].isMember(jss::account_data));
+
379  BEAST_EXPECT(!info[0u][jss::result][jss::account_data].isMember(
+
380  jss::signer_lists));
+
381  BEAST_EXPECT(
+
382  info[0u].isMember(jss::jsonrpc) &&
+
383  info[0u][jss::jsonrpc] == "2.0");
384  BEAST_EXPECT(
-
385  info[0u].isMember(jss::jsonrpc) &&
-
386  info[0u][jss::jsonrpc] == "2.0");
-
387  BEAST_EXPECT(
-
388  info[0u].isMember(jss::ripplerpc) &&
-
389  info[0u][jss::ripplerpc] == "2.0");
-
390  BEAST_EXPECT(info[0u].isMember(jss::id) && info[0u][jss::id] == 5);
-
391 
-
392  BEAST_EXPECT(
-
393  info[1u].isMember(jss::result) &&
-
394  info[1u][jss::result].isMember(jss::account_data));
-
395  auto const& data = info[1u][jss::result][jss::account_data];
-
396  BEAST_EXPECT(data.isMember(jss::signer_lists));
-
397  auto const& signerLists = data[jss::signer_lists];
-
398  BEAST_EXPECT(signerLists.isArray());
-
399  BEAST_EXPECT(signerLists.size() == 0);
+
385  info[0u].isMember(jss::ripplerpc) &&
+
386  info[0u][jss::ripplerpc] == "2.0");
+
387  BEAST_EXPECT(info[0u].isMember(jss::id) && info[0u][jss::id] == 5);
+
388 
+
389  BEAST_EXPECT(
+
390  info[1u].isMember(jss::result) &&
+
391  info[1u][jss::result].isMember(jss::account_data));
+
392  auto const& data = info[1u][jss::result][jss::account_data];
+
393  BEAST_EXPECT(data.isMember(jss::signer_lists));
+
394  auto const& signerLists = data[jss::signer_lists];
+
395  BEAST_EXPECT(signerLists.isArray());
+
396  BEAST_EXPECT(signerLists.size() == 0);
+
397  BEAST_EXPECT(
+
398  info[1u].isMember(jss::jsonrpc) &&
+
399  info[1u][jss::jsonrpc] == "2.0");
400  BEAST_EXPECT(
-
401  info[1u].isMember(jss::jsonrpc) &&
-
402  info[1u][jss::jsonrpc] == "2.0");
-
403  BEAST_EXPECT(
-
404  info[1u].isMember(jss::ripplerpc) &&
-
405  info[1u][jss::ripplerpc] == "2.0");
-
406  BEAST_EXPECT(info[1u].isMember(jss::id) && info[1u][jss::id] == 6);
-
407  }
+
401  info[1u].isMember(jss::ripplerpc) &&
+
402  info[1u][jss::ripplerpc] == "2.0");
+
403  BEAST_EXPECT(info[1u].isMember(jss::id) && info[1u][jss::id] == 6);
+
404  }
+
405 
+
406  // Give alice a SignerList.
+
407  Account const bogie{"bogie"};
408 
-
409  // Give alice a SignerList.
-
410  Account const bogie{"bogie"};
-
411 
-
412  Json::Value const smallSigners = signers(alice, 2, {{bogie, 3}});
-
413  env(smallSigners);
-
414  {
-
415  // account_info without the "signer_lists" argument.
-
416  auto const info = env.rpc("json2", withoutSigners);
-
417  BEAST_EXPECT(
-
418  info.isMember(jss::result) &&
-
419  info[jss::result].isMember(jss::account_data));
-
420  BEAST_EXPECT(!info[jss::result][jss::account_data].isMember(
-
421  jss::signer_lists));
-
422  BEAST_EXPECT(
-
423  info.isMember(jss::jsonrpc) && info[jss::jsonrpc] == "2.0");
-
424  BEAST_EXPECT(
-
425  info.isMember(jss::ripplerpc) && info[jss::ripplerpc] == "2.0");
-
426  BEAST_EXPECT(info.isMember(jss::id) && info[jss::id] == 5);
-
427  }
-
428  {
-
429  // account_info with the "signer_lists" argument.
-
430  auto const info = env.rpc("json2", withSigners);
-
431  BEAST_EXPECT(
-
432  info.isMember(jss::result) &&
-
433  info[jss::result].isMember(jss::account_data));
-
434  auto const& data = info[jss::result][jss::account_data];
-
435  BEAST_EXPECT(data.isMember(jss::signer_lists));
-
436  auto const& signerLists = data[jss::signer_lists];
-
437  BEAST_EXPECT(signerLists.isArray());
-
438  BEAST_EXPECT(signerLists.size() == 1);
-
439  auto const& signers = signerLists[0u];
-
440  BEAST_EXPECT(signers.isObject());
-
441  BEAST_EXPECT(signers[sfSignerQuorum.jsonName] == 2);
-
442  auto const& signerEntries = signers[sfSignerEntries.jsonName];
-
443  BEAST_EXPECT(signerEntries.size() == 1);
-
444  auto const& entry0 = signerEntries[0u][sfSignerEntry.jsonName];
-
445  BEAST_EXPECT(entry0[sfSignerWeight.jsonName] == 3);
-
446  BEAST_EXPECT(
-
447  info.isMember(jss::jsonrpc) && info[jss::jsonrpc] == "2.0");
-
448  BEAST_EXPECT(
-
449  info.isMember(jss::ripplerpc) && info[jss::ripplerpc] == "2.0");
-
450  BEAST_EXPECT(info.isMember(jss::id) && info[jss::id] == 6);
-
451  }
-
452 
-
453  // Give alice a big signer list
-
454  Account const demon{"demon"};
-
455  Account const ghost{"ghost"};
-
456  Account const haunt{"haunt"};
-
457  Account const jinni{"jinni"};
-
458  Account const phase{"phase"};
-
459  Account const shade{"shade"};
-
460  Account const spook{"spook"};
-
461 
-
462  Json::Value const bigSigners = signers(
-
463  alice,
-
464  4,
-
465  {
-
466  {bogie, 1},
-
467  {demon, 1},
-
468  {ghost, 1},
-
469  {haunt, 1},
-
470  {jinni, 1},
-
471  {phase, 1},
-
472  {shade, 1},
-
473  {spook, 1},
-
474  });
-
475  env(bigSigners);
-
476  {
-
477  // account_info with the "signer_lists" argument.
-
478  auto const info = env.rpc("json2", withSigners);
-
479  BEAST_EXPECT(
-
480  info.isMember(jss::result) &&
-
481  info[jss::result].isMember(jss::account_data));
-
482  auto const& data = info[jss::result][jss::account_data];
-
483  BEAST_EXPECT(data.isMember(jss::signer_lists));
-
484  auto const& signerLists = data[jss::signer_lists];
-
485  BEAST_EXPECT(signerLists.isArray());
-
486  BEAST_EXPECT(signerLists.size() == 1);
-
487  auto const& signers = signerLists[0u];
-
488  BEAST_EXPECT(signers.isObject());
-
489  BEAST_EXPECT(signers[sfSignerQuorum.jsonName] == 4);
-
490  auto const& signerEntries = signers[sfSignerEntries.jsonName];
-
491  BEAST_EXPECT(signerEntries.size() == 8);
-
492  for (unsigned i = 0u; i < 8; ++i)
-
493  {
-
494  auto const& entry = signerEntries[i][sfSignerEntry.jsonName];
-
495  BEAST_EXPECT(entry.size() == 2);
-
496  BEAST_EXPECT(entry.isMember(sfAccount.jsonName));
-
497  BEAST_EXPECT(entry[sfSignerWeight.jsonName] == 1);
-
498  }
-
499  BEAST_EXPECT(
-
500  info.isMember(jss::jsonrpc) && info[jss::jsonrpc] == "2.0");
-
501  BEAST_EXPECT(
-
502  info.isMember(jss::ripplerpc) && info[jss::ripplerpc] == "2.0");
-
503  BEAST_EXPECT(info.isMember(jss::id) && info[jss::id] == 6);
-
504  }
-
505  }
-
506 
-
507  void
-
508  testAccountFlags(FeatureBitset const& features)
-
509  {
-
510  using namespace jtx;
-
511 
-
512  Env env(*this, features);
-
513  Account const alice{"alice"};
-
514  env.fund(XRP(1000), alice);
-
515 
-
516  auto getAccountFlag = [&env, &alice](std::string_view fName) {
-
517  auto const info = env.rpc(
-
518  "json",
-
519  "account_info",
-
520  R"({"account" : ")" + alice.human() + R"("})");
-
521 
-
522  std::optional<bool> res;
-
523  if (info[jss::result][jss::status] == "success" &&
-
524  info[jss::result][jss::account_flags].isMember(fName.data()))
-
525  res.emplace(info[jss::result][jss::account_flags][fName.data()]
-
526  .asBool());
+
409  Json::Value const smallSigners = signers(alice, 2, {{bogie, 3}});
+
410  env(smallSigners);
+
411  {
+
412  // account_info without the "signer_lists" argument.
+
413  auto const info = env.rpc("json2", withoutSigners);
+
414  BEAST_EXPECT(
+
415  info.isMember(jss::result) &&
+
416  info[jss::result].isMember(jss::account_data));
+
417  BEAST_EXPECT(!info[jss::result][jss::account_data].isMember(
+
418  jss::signer_lists));
+
419  BEAST_EXPECT(
+
420  info.isMember(jss::jsonrpc) && info[jss::jsonrpc] == "2.0");
+
421  BEAST_EXPECT(
+
422  info.isMember(jss::ripplerpc) && info[jss::ripplerpc] == "2.0");
+
423  BEAST_EXPECT(info.isMember(jss::id) && info[jss::id] == 5);
+
424  }
+
425  {
+
426  // account_info with the "signer_lists" argument.
+
427  auto const info = env.rpc("json2", withSigners);
+
428  BEAST_EXPECT(
+
429  info.isMember(jss::result) &&
+
430  info[jss::result].isMember(jss::account_data));
+
431  auto const& data = info[jss::result][jss::account_data];
+
432  BEAST_EXPECT(data.isMember(jss::signer_lists));
+
433  auto const& signerLists = data[jss::signer_lists];
+
434  BEAST_EXPECT(signerLists.isArray());
+
435  BEAST_EXPECT(signerLists.size() == 1);
+
436  auto const& signers = signerLists[0u];
+
437  BEAST_EXPECT(signers.isObject());
+
438  BEAST_EXPECT(signers[sfSignerQuorum.jsonName] == 2);
+
439  auto const& signerEntries = signers[sfSignerEntries.jsonName];
+
440  BEAST_EXPECT(signerEntries.size() == 1);
+
441  auto const& entry0 = signerEntries[0u][sfSignerEntry.jsonName];
+
442  BEAST_EXPECT(entry0[sfSignerWeight.jsonName] == 3);
+
443  BEAST_EXPECT(
+
444  info.isMember(jss::jsonrpc) && info[jss::jsonrpc] == "2.0");
+
445  BEAST_EXPECT(
+
446  info.isMember(jss::ripplerpc) && info[jss::ripplerpc] == "2.0");
+
447  BEAST_EXPECT(info.isMember(jss::id) && info[jss::id] == 6);
+
448  }
+
449 
+
450  // Give alice a big signer list
+
451  Account const demon{"demon"};
+
452  Account const ghost{"ghost"};
+
453  Account const haunt{"haunt"};
+
454  Account const jinni{"jinni"};
+
455  Account const phase{"phase"};
+
456  Account const shade{"shade"};
+
457  Account const spook{"spook"};
+
458 
+
459  Json::Value const bigSigners = signers(
+
460  alice,
+
461  4,
+
462  {
+
463  {bogie, 1},
+
464  {demon, 1},
+
465  {ghost, 1},
+
466  {haunt, 1},
+
467  {jinni, 1},
+
468  {phase, 1},
+
469  {shade, 1},
+
470  {spook, 1},
+
471  });
+
472  env(bigSigners);
+
473  {
+
474  // account_info with the "signer_lists" argument.
+
475  auto const info = env.rpc("json2", withSigners);
+
476  BEAST_EXPECT(
+
477  info.isMember(jss::result) &&
+
478  info[jss::result].isMember(jss::account_data));
+
479  auto const& data = info[jss::result][jss::account_data];
+
480  BEAST_EXPECT(data.isMember(jss::signer_lists));
+
481  auto const& signerLists = data[jss::signer_lists];
+
482  BEAST_EXPECT(signerLists.isArray());
+
483  BEAST_EXPECT(signerLists.size() == 1);
+
484  auto const& signers = signerLists[0u];
+
485  BEAST_EXPECT(signers.isObject());
+
486  BEAST_EXPECT(signers[sfSignerQuorum.jsonName] == 4);
+
487  auto const& signerEntries = signers[sfSignerEntries.jsonName];
+
488  BEAST_EXPECT(signerEntries.size() == 8);
+
489  for (unsigned i = 0u; i < 8; ++i)
+
490  {
+
491  auto const& entry = signerEntries[i][sfSignerEntry.jsonName];
+
492  BEAST_EXPECT(entry.size() == 2);
+
493  BEAST_EXPECT(entry.isMember(sfAccount.jsonName));
+
494  BEAST_EXPECT(entry[sfSignerWeight.jsonName] == 1);
+
495  }
+
496  BEAST_EXPECT(
+
497  info.isMember(jss::jsonrpc) && info[jss::jsonrpc] == "2.0");
+
498  BEAST_EXPECT(
+
499  info.isMember(jss::ripplerpc) && info[jss::ripplerpc] == "2.0");
+
500  BEAST_EXPECT(info.isMember(jss::id) && info[jss::id] == 6);
+
501  }
+
502  }
+
503 
+
504  void
+
505  testAccountFlags(FeatureBitset const& features)
+
506  {
+
507  using namespace jtx;
+
508 
+
509  Env env(*this, features);
+
510  Account const alice{"alice"};
+
511  env.fund(XRP(1000), alice);
+
512 
+
513  auto getAccountFlag = [&env, &alice](std::string_view fName) {
+
514  auto const info = env.rpc(
+
515  "json",
+
516  "account_info",
+
517  R"({"account" : ")" + alice.human() + R"("})");
+
518 
+
519  std::optional<bool> res;
+
520  if (info[jss::result][jss::status] == "success" &&
+
521  info[jss::result][jss::account_flags].isMember(fName.data()))
+
522  res.emplace(info[jss::result][jss::account_flags][fName.data()]
+
523  .asBool());
+
524 
+
525  return res;
+
526  };
527 
-
528  return res;
-
529  };
-
530 
-
531  static constexpr std::
-
532  array<std::pair<std::string_view, std::uint32_t>, 7>
-
533  asFlags{
-
534  {{"defaultRipple", asfDefaultRipple},
-
535  {"depositAuth", asfDepositAuth},
-
536  {"disallowIncomingXRP", asfDisallowXRP},
-
537  {"globalFreeze", asfGlobalFreeze},
-
538  {"noFreeze", asfNoFreeze},
-
539  {"requireAuthorization", asfRequireAuth},
-
540  {"requireDestinationTag", asfRequireDest}}};
-
541 
-
542  for (auto& asf : asFlags)
-
543  {
-
544  // Clear a flag and check that account_info returns results
-
545  // as expected
-
546  env(fclear(alice, asf.second));
-
547  env.close();
-
548  auto const f1 = getAccountFlag(asf.first);
-
549  BEAST_EXPECT(f1.has_value());
-
550  BEAST_EXPECT(!f1.value());
-
551 
-
552  // Set a flag and check that account_info returns results
-
553  // as expected
-
554  env(fset(alice, asf.second));
-
555  env.close();
-
556  auto const f2 = getAccountFlag(asf.first);
-
557  BEAST_EXPECT(f2.has_value());
-
558  BEAST_EXPECT(f2.value());
-
559  }
-
560 
-
561  static constexpr std::
-
562  array<std::pair<std::string_view, std::uint32_t>, 4>
-
563  disallowIncomingFlags{
-
564  {{"disallowIncomingCheck", asfDisallowIncomingCheck},
-
565  {"disallowIncomingNFTokenOffer",
-
566  asfDisallowIncomingNFTokenOffer},
-
567  {"disallowIncomingPayChan", asfDisallowIncomingPayChan},
-
568  {"disallowIncomingTrustline",
-
569  asfDisallowIncomingTrustline}}};
-
570 
-
571  if (features[featureDisallowIncoming])
-
572  {
-
573  for (auto& asf : disallowIncomingFlags)
-
574  {
-
575  // Clear a flag and check that account_info returns results
-
576  // as expected
-
577  env(fclear(alice, asf.second));
-
578  env.close();
-
579  auto const f1 = getAccountFlag(asf.first);
-
580  BEAST_EXPECT(f1.has_value());
-
581  BEAST_EXPECT(!f1.value());
-
582 
-
583  // Set a flag and check that account_info returns results
-
584  // as expected
-
585  env(fset(alice, asf.second));
-
586  env.close();
-
587  auto const f2 = getAccountFlag(asf.first);
-
588  BEAST_EXPECT(f2.has_value());
-
589  BEAST_EXPECT(f2.value());
-
590  }
-
591  }
-
592  else
-
593  {
-
594  for (auto& asf : disallowIncomingFlags)
-
595  {
-
596  BEAST_EXPECT(!getAccountFlag(asf.first));
-
597  }
-
598  }
-
599  }
-
600 
-
601  void
-
602  run() override
-
603  {
-
604  testErrors();
-
605  testSignerLists();
-
606  testSignerListsApiVersion2();
-
607  testSignerListsV2();
-
608 
-
609  FeatureBitset const allFeatures{
-
610  ripple::test::jtx::supported_amendments()};
-
611  testAccountFlags(allFeatures);
-
612  testAccountFlags(allFeatures - featureDisallowIncoming);
-
613  }
-
614 };
-
615 
-
616 BEAST_DEFINE_TESTSUITE(AccountInfo, app, ripple);
-
617 
-
618 } // namespace test
-
619 } // namespace ripple
+
528  static constexpr std::
+
529  array<std::pair<std::string_view, std::uint32_t>, 7>
+
530  asFlags{
+
531  {{"defaultRipple", asfDefaultRipple},
+
532  {"depositAuth", asfDepositAuth},
+
533  {"disallowIncomingXRP", asfDisallowXRP},
+
534  {"globalFreeze", asfGlobalFreeze},
+
535  {"noFreeze", asfNoFreeze},
+
536  {"requireAuthorization", asfRequireAuth},
+
537  {"requireDestinationTag", asfRequireDest}}};
+
538 
+
539  for (auto& asf : asFlags)
+
540  {
+
541  // Clear a flag and check that account_info returns results
+
542  // as expected
+
543  env(fclear(alice, asf.second));
+
544  env.close();
+
545  auto const f1 = getAccountFlag(asf.first);
+
546  BEAST_EXPECT(f1.has_value());
+
547  BEAST_EXPECT(!f1.value());
+
548 
+
549  // Set a flag and check that account_info returns results
+
550  // as expected
+
551  env(fset(alice, asf.second));
+
552  env.close();
+
553  auto const f2 = getAccountFlag(asf.first);
+
554  BEAST_EXPECT(f2.has_value());
+
555  BEAST_EXPECT(f2.value());
+
556  }
+
557 
+
558  static constexpr std::
+
559  array<std::pair<std::string_view, std::uint32_t>, 4>
+
560  disallowIncomingFlags{
+
561  {{"disallowIncomingCheck", asfDisallowIncomingCheck},
+
562  {"disallowIncomingNFTokenOffer",
+
563  asfDisallowIncomingNFTokenOffer},
+
564  {"disallowIncomingPayChan", asfDisallowIncomingPayChan},
+
565  {"disallowIncomingTrustline",
+
566  asfDisallowIncomingTrustline}}};
+
567 
+
568  if (features[featureDisallowIncoming])
+
569  {
+
570  for (auto& asf : disallowIncomingFlags)
+
571  {
+
572  // Clear a flag and check that account_info returns results
+
573  // as expected
+
574  env(fclear(alice, asf.second));
+
575  env.close();
+
576  auto const f1 = getAccountFlag(asf.first);
+
577  BEAST_EXPECT(f1.has_value());
+
578  BEAST_EXPECT(!f1.value());
+
579 
+
580  // Set a flag and check that account_info returns results
+
581  // as expected
+
582  env(fset(alice, asf.second));
+
583  env.close();
+
584  auto const f2 = getAccountFlag(asf.first);
+
585  BEAST_EXPECT(f2.has_value());
+
586  BEAST_EXPECT(f2.value());
+
587  }
+
588  }
+
589  else
+
590  {
+
591  for (auto& asf : disallowIncomingFlags)
+
592  {
+
593  BEAST_EXPECT(!getAccountFlag(asf.first));
+
594  }
+
595  }
+
596  }
+
597 
+
598  void
+
599  run() override
+
600  {
+
601  testErrors();
+
602  testSignerLists();
+
603  testSignerListsApiVersion2();
+
604  testSignerListsV2();
+
605 
+
606  FeatureBitset const allFeatures{
+
607  ripple::test::jtx::supported_amendments()};
+
608  testAccountFlags(allFeatures);
+
609  testAccountFlags(allFeatures - featureDisallowIncoming);
+
610  }
+
611 };
+
612 
+
613 BEAST_DEFINE_TESTSUITE(AccountInfo, app, ripple);
+
614 
+
615 } // namespace test
+
616 } // namespace ripple
ripple::sfSignerWeight
const SF_UINT16 sfSignerWeight
ripple::test::jtx::XRP
const XRP_t XRP
Converts to XRP Issue or STAmount.
Definition: amount.cpp:105
@@ -699,7 +696,6 @@ $(function() {
ripple::asfNoFreeze
constexpr std::uint32_t asfNoFreeze
Definition: TxFlags.h:79
std::optional::emplace
T emplace(T... args)
ripple::asfDisallowIncomingPayChan
constexpr std::uint32_t asfDisallowIncomingPayChan
Definition: TxFlags.h:89
-
ripple::test::jtx::envconfig
std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
Definition: envconfig.h:49
ripple::SField::jsonName
const Json::StaticString jsonName
Definition: SField.h:136
ripple::sfSignerQuorum
const SF_UINT32 sfSignerQuorum
ripple::asfDisallowIncomingTrustline
constexpr std::uint32_t asfDisallowIncomingTrustline
Definition: TxFlags.h:90
@@ -721,7 +717,6 @@ $(function() {
std::optional< bool >
ripple::test::jtx::Account
Immutable cryptographic account descriptor.
Definition: Account.h:37
ripple::sfAccount
const SF_ACCOUNT sfAccount
-
std::unique_ptr
STL class.
std::data
T data(T... args)
ripple::test::AccountInfo_test::testErrors
void testErrors()
Definition: AccountInfo_test.cpp:37
ripple::test::jtx::Env
A transaction testing environment.
Definition: Env.h:116
diff --git a/AccountOffers__test_8cpp_source.html b/AccountOffers__test_8cpp_source.html index c7f1ee9462..653c9f1314 100644 --- a/AccountOffers__test_8cpp_source.html +++ b/AccountOffers__test_8cpp_source.html @@ -418,7 +418,7 @@ $(function() {
ripple::test::jtx::envconfig
std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
Definition: envconfig.h:49
ripple::test::jtx::Env::trust
void trust(STAmount const &amount, Account const &account)
Establish trust lines.
Definition: Env.cpp:259
ripple::sfExpiration
const SF_UINT32 sfExpiration
-
ripple::test::jtx::no_admin
std::unique_ptr< Config > no_admin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
Definition: envconfig.cpp:79
+
ripple::test::jtx::no_admin
std::unique_ptr< Config > no_admin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
Definition: envconfig.cpp:82
ripple::test::AccountOffers_test
Definition: AccountOffers_test.cpp:26
ripple::test::AccountOffers_test::testSequential
void testSequential(bool asAdmin)
Definition: AccountOffers_test.cpp:89
ripple::test::AccountOffers_test::checkMarker
static bool checkMarker(Json::Value const &val)
Definition: AccountOffers_test.cpp:38
diff --git a/Book__test_8cpp_source.html b/Book__test_8cpp_source.html index 01f636a826..08bf721b7e 100644 --- a/Book__test_8cpp_source.html +++ b/Book__test_8cpp_source.html @@ -1841,7 +1841,7 @@ $(function() {
ripple::test::BEAST_DEFINE_TESTSUITE_PRIO
BEAST_DEFINE_TESTSUITE_PRIO(AccountDelete, app, ripple, 2)
ripple::base_uint< 256 >
ripple::test::Book_test::testBookOfferErrors
void testBookOfferErrors()
Definition: Book_test.cpp:1310
-
ripple::test::jtx::no_admin
std::unique_ptr< Config > no_admin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
Definition: envconfig.cpp:79
+
ripple::test::jtx::no_admin
std::unique_ptr< Config > no_admin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
Definition: envconfig.cpp:82
Json::Value::append
Value & append(const Value &value)
Append value to array at the end.
Definition: json_value.cpp:882
ripple::QualityDirection::out
@ out
Json::objectValue
@ objectValue
object value (collection of name/value pairs).
Definition: json_value.h:43
diff --git a/LedgerReplay__test_8cpp_source.html b/LedgerReplay__test_8cpp_source.html index 248eac621f..f7c2073218 100644 --- a/LedgerReplay__test_8cpp_source.html +++ b/LedgerReplay__test_8cpp_source.html @@ -1663,7 +1663,7 @@ $(function() {
ripple::ProtocolFeature::LedgerReplay
@ LedgerReplay
ripple::test::TaskStatus::Failed
@ Failed
ripple::keylet::skip
Keylet const & skip() noexcept
The index of the "short" skip list.
Definition: Indexes.cpp:145
-
ripple::test::jtx::port_increment
std::unique_ptr< Config > port_increment(std::unique_ptr< Config >, int)
adjust the default configured server ports by a specified value
Definition: envconfig.cpp:125
+
ripple::test::jtx::port_increment
std::unique_ptr< Config > port_increment(std::unique_ptr< Config >, int)
adjust the default configured server ports by a specified value
Definition: envconfig.cpp:128
ripple::test::TestPeer::cluster
bool cluster() const override
Returns true if this connection is a member of the cluster.
Definition: LedgerReplay_test.cpp:217
ripple::test::LedgerServer::createLedgerHistory
void createLedgerHistory()
create ledger history
Definition: LedgerReplay_test.cpp:531
ripple::test::jtx::Env::journal
const beast::Journal journal
Definition: Env.h:144
diff --git a/RPCOverload__test_8cpp_source.html b/RPCOverload__test_8cpp_source.html index 6adf702b80..637cbf5f18 100644 --- a/RPCOverload__test_8cpp_source.html +++ b/RPCOverload__test_8cpp_source.html @@ -166,7 +166,7 @@ $(function() {
ripple::test::makeJSONRPCClient
std::unique_ptr< AbstractClient > makeJSONRPCClient(Config const &cfg, unsigned rpc_version)
Returns a client using JSON-RPC over HTTP/S.
Definition: JSONRPCClient.cpp:155
ripple::test::jtx::envconfig
std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
Definition: envconfig.h:49
ripple::test::RPCOverload_test::run
void run() override
Definition: RPCOverload_test.cpp:81
-
ripple::test::jtx::no_admin
std::unique_ptr< Config > no_admin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
Definition: envconfig.cpp:79
+
ripple::test::jtx::no_admin
std::unique_ptr< Config > no_admin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
Definition: envconfig.cpp:82
Json::objectValue
@ objectValue
object value (collection of name/value pairs).
Definition: json_value.h:43
ripple::test::RPCOverload_test::testOverload
void testOverload(bool useWS)
Definition: RPCOverload_test.cpp:32
ripple::generateSeed
Seed generateSeed(std::string const &passPhrase)
Generate a seed deterministically.
Definition: Seed.cpp:69
diff --git a/ReportingETL__test_8cpp_source.html b/ReportingETL__test_8cpp_source.html index 8e824a3bb9..3baf2d6175 100644 --- a/ReportingETL__test_8cpp_source.html +++ b/ReportingETL__test_8cpp_source.html @@ -1222,10 +1222,10 @@ $(function() {
std::vector
STL class.
ripple::test::ReportingETL_test::GrpcLedgerClient
Definition: ReportingETL_test.cpp:36
std::vector::size
T size(T... args)
-
ripple::test::jtx::addGrpcConfig
std::unique_ptr< Config > addGrpcConfig(std::unique_ptr< Config >)
add a grpc address and port to config
Definition: envconfig.cpp:140
+
ripple::test::jtx::addGrpcConfig
std::unique_ptr< Config > addGrpcConfig(std::unique_ptr< Config >)
add a grpc address and port to config
Definition: envconfig.cpp:143
ripple::test::ReportingETL_test::GrpcLedgerDataClient
Definition: ReportingETL_test.cpp:478
ripple::test::ReportingETL_test
Definition: ReportingETL_test.cpp:33
-
ripple::test::jtx::addGrpcConfigWithSecureGateway
std::unique_ptr< Config > addGrpcConfigWithSecureGateway(std::unique_ptr< Config >, std::string const &secureGateway)
add a grpc address, port and secure_gateway to config
Definition: envconfig.cpp:149
+
ripple::test::jtx::addGrpcConfigWithSecureGateway
std::unique_ptr< Config > addGrpcConfigWithSecureGateway(std::unique_ptr< Config >, std::string const &secureGateway)
add a grpc address, port and secure_gateway to config
Definition: envconfig.cpp:152
ripple::test::ReportingETL_test::testNeedCurrentOrClosed
void testNeedCurrentOrClosed()
Definition: ReportingETL_test.cpp:772
ripple::test::jtx::envconfig
std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
Definition: envconfig.h:49
ripple::needCurrentOrClosed
bool needCurrentOrClosed(Request &request)
Definition: P2pProxy.h:47
diff --git a/Roles__test_8cpp_source.html b/Roles__test_8cpp_source.html index e6f1afcbf4..941fd33672 100644 --- a/Roles__test_8cpp_source.html +++ b/Roles__test_8cpp_source.html @@ -469,14 +469,14 @@ $(function() {
398 
399 } // namespace ripple
-
ripple::test::jtx::secure_gateway
std::unique_ptr< Config > secure_gateway(std::unique_ptr< Config >)
Definition: envconfig.cpp:87
+
ripple::test::jtx::secure_gateway
std::unique_ptr< Config > secure_gateway(std::unique_ptr< Config >)
Definition: envconfig.cpp:90
std::string
STL class.
ripple::test::Roles_test::isValidIpAddress
bool isValidIpAddress(std::string const &addr)
Definition: Roles_test.cpp:38
ripple::test::Roles_test::run
void run() override
Definition: Roles_test.cpp:388
ripple::test::jtx::Env::app
Application & app()
Definition: Env.h:241
ripple::test::jtx::envconfig
std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
Definition: envconfig.h:49
-
ripple::test::jtx::admin_localnet
std::unique_ptr< Config > admin_localnet(std::unique_ptr< Config >)
Definition: envconfig.cpp:96
-
ripple::test::jtx::no_admin
std::unique_ptr< Config > no_admin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
Definition: envconfig.cpp:79
+
ripple::test::jtx::admin_localnet
std::unique_ptr< Config > admin_localnet(std::unique_ptr< Config >)
Definition: envconfig.cpp:99
+
ripple::test::jtx::no_admin
std::unique_ptr< Config > no_admin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
Definition: envconfig.cpp:82
ripple::test::Roles_test
Definition: Roles_test.cpp:35
ripple::Application::config
virtual Config & config()=0
Json::Value::isMember
bool isMember(const char *key) const
Return true if the object has a member named key.
Definition: json_value.cpp:932
@@ -484,7 +484,7 @@ $(function() {
ripple::test::Roles_test::testInvalidIpAddresses
void testInvalidIpAddresses()
Definition: Roles_test.cpp:299
ripple
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition: RCLCensorshipDetector.h:29
ripple::test::makeWSClient
std::unique_ptr< WSClient > makeWSClient(Config const &cfg, bool v2, unsigned rpc_version, std::unordered_map< std::string, std::string > const &headers)
Returns a client operating through WebSockets/S.
Definition: WSClient.cpp:300
-
ripple::test::jtx::secure_gateway_localnet
std::unique_ptr< Config > secure_gateway_localnet(std::unique_ptr< Config >)
Definition: envconfig.cpp:104
+
ripple::test::jtx::secure_gateway_localnet
std::unique_ptr< Config > secure_gateway_localnet(std::unique_ptr< Config >)
Definition: envconfig.cpp:107
unordered_map
ripple::test::jtx::Env
A transaction testing environment.
Definition: Env.h:116
ripple::test::jtx::Env::rpc
Json::Value rpc(std::unordered_map< std::string, std::string > const &headers, std::string const &cmd, Args &&... args)
Execute an RPC command.
Definition: Env.h:687
diff --git a/ServerStatus__test_8cpp_source.html b/ServerStatus__test_8cpp_source.html index ea070e123a..c919d706ef 100644 --- a/ServerStatus__test_8cpp_source.html +++ b/ServerStatus__test_8cpp_source.html @@ -1329,7 +1329,7 @@ $(function() {
ripple::test::ServerStatus_test::testLimit
void testLimit(boost::asio::yield_context &yield, int limit)
Definition: ServerStatus_test.cpp:591
ripple::test::jtx::Env::closed
std::shared_ptr< ReadView const > closed()
Returns the last closed ledger.
Definition: Env.cpp:115
Json::arrayValue
@ arrayValue
array value (ordered list)
Definition: json_value.h:42
-
ripple::test::jtx::validator
std::unique_ptr< Config > validator(std::unique_ptr< Config >, std::string const &)
adjust configuration with params needed to be a validator
Definition: envconfig.cpp:116
+
ripple::test::jtx::validator
std::unique_ptr< Config > validator(std::unique_ptr< Config >, std::string const &)
adjust configuration with params needed to be a validator
Definition: envconfig.cpp:119
std::vector
STL class.
ripple::base64_encode
std::string base64_encode(std::uint8_t const *data, std::size_t len)
Definition: base64.cpp:236
ripple::test::ServerStatus_test::makeWSUpgrade
auto makeWSUpgrade(std::string const &host, uint16_t port)
Definition: ServerStatus_test.cpp:92
diff --git a/Subscribe__test_8cpp_source.html b/Subscribe__test_8cpp_source.html index 8a80ee747b..90680df028 100644 --- a/Subscribe__test_8cpp_source.html +++ b/Subscribe__test_8cpp_source.html @@ -1244,11 +1244,11 @@ $(function() {
std::pair
ripple::TxSearched::all
@ all
ripple::test::Subscribe_test::testHistoryTxStream
void testHistoryTxStream()
Definition: Subscribe_test.cpp:740
-
ripple::test::jtx::validator
std::unique_ptr< Config > validator(std::unique_ptr< Config >, std::string const &)
adjust configuration with params needed to be a validator
Definition: envconfig.cpp:116
+
ripple::test::jtx::validator
std::unique_ptr< Config > validator(std::unique_ptr< Config >, std::string const &)
adjust configuration with params needed to be a validator
Definition: envconfig.cpp:119
std::vector
STL class.
std::unordered_map::find
T find(T... args)
ripple::toBase58
std::string toBase58(AccountID const &v)
Convert AccountID to base58 checked string.
Definition: AccountID.cpp:104
-
ripple::test::jtx::port_increment
std::unique_ptr< Config > port_increment(std::unique_ptr< Config >, int)
adjust the default configured server ports by a specified value
Definition: envconfig.cpp:125
+
ripple::test::jtx::port_increment
std::unique_ptr< Config > port_increment(std::unique_ptr< Config >, int)
adjust the default configured server ports by a specified value
Definition: envconfig.cpp:128
std::unordered_map::emplace
T emplace(T... args)
ripple::test::jtx::Account::human
std::string const & human() const
Returns the human readable public key.
Definition: Account.h:113
Json::realValue
@ realValue
double value
Definition: json_value.h:39
@@ -1262,7 +1262,7 @@ $(function() {
ripple::vfFullyCanonicalSig
constexpr std::uint32_t vfFullyCanonicalSig
Definition: STValidation.h:42
Json::uintValue
@ uintValue
unsigned integer value
Definition: json_value.h:38
ripple::test::Subscribe_test
Definition: Subscribe_test.cpp:32
-
ripple::test::jtx::no_admin
std::unique_ptr< Config > no_admin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
Definition: envconfig.cpp:79
+
ripple::test::jtx::no_admin
std::unique_ptr< Config > no_admin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
Definition: envconfig.cpp:82
ripple::Application::getLoadManager
virtual LoadManager & getLoadManager()=0
Json::objectValue
@ objectValue
object value (collection of name/value pairs).
Definition: json_value.h:43
ripple::LoadManager::stop
void stop()
Definition: LoadManager.cpp:82
diff --git a/ValidatorInfo__test_8cpp_source.html b/ValidatorInfo__test_8cpp_source.html index 8f10645f65..d8f58bd88c 100644 --- a/ValidatorInfo__test_8cpp_source.html +++ b/ValidatorInfo__test_8cpp_source.html @@ -199,7 +199,7 @@ $(function() {
ripple::HashPrefix::manifest
@ manifest
Manifest.
vector
ripple::test::jtx::envconfig
std::unique_ptr< Config > envconfig()
creates and initializes a default configuration for jtx::Env
Definition: envconfig.h:49
-
ripple::test::jtx::no_admin
std::unique_ptr< Config > no_admin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
Definition: envconfig.cpp:79
+
ripple::test::jtx::no_admin
std::unique_ptr< Config > no_admin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
Definition: envconfig.cpp:82
ripple::test::ValidatorInfo_test::testPrivileges
void testPrivileges()
Definition: ValidatorInfo_test.cpp:49
ripple::test::ValidatorInfo_test::run
void run() override
Definition: ValidatorInfo_test.cpp:113
ripple
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition: RCLCensorshipDetector.h:29
diff --git a/ValidatorRPC__test_8cpp_source.html b/ValidatorRPC__test_8cpp_source.html index ac949c8a2f..c1ca83a4eb 100644 --- a/ValidatorRPC__test_8cpp_source.html +++ b/ValidatorRPC__test_8cpp_source.html @@ -684,7 +684,7 @@ $(function() {
std::unordered_set::clear
T clear(T... args)
ripple::KeyType::ed25519
@ ed25519
ripple::test::getEnvLocalhostAddr
const char * getEnvLocalhostAddr()
Definition: envconfig.h:31
-
ripple::test::jtx::no_admin
std::unique_ptr< Config > no_admin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
Definition: envconfig.cpp:79
+
ripple::test::jtx::no_admin
std::unique_ptr< Config > no_admin(std::unique_ptr< Config >)
adjust config so no admin ports are enabled
Definition: envconfig.cpp:82
ripple::test::ValidatorRPC_test::testPrivileges
void testPrivileges()
Definition: ValidatorRPC_test.cpp:43
ripple::PublicKey
A public key.
Definition: PublicKey.h:59
ripple::test::TrustedPublisherServer::Validator
Definition: TrustedPublisherServer.h:112
diff --git a/Version__test_8cpp_source.html b/Version__test_8cpp_source.html index 0a688af43c..647e3a36e1 100644 --- a/Version__test_8cpp_source.html +++ b/Version__test_8cpp_source.html @@ -147,243 +147,254 @@ $(function() {
76  std::to_string(RPC::apiMinimumSupportedVersion - 1) + "}");
77  BEAST_EXPECT(badVersion(re));
78 
-
79  re = env.rpc(
-
80  "json",
-
81  "version",
-
82  "{\"api_version\": " +
-
83  std::to_string(RPC::apiMaximumSupportedVersion + 1) + "}");
-
84  BEAST_EXPECT(badVersion(re));
-
85 
-
86  re = env.rpc("json", "version", "{\"api_version\": \"a\"}");
-
87  BEAST_EXPECT(badVersion(re));
-
88  }
-
89 
-
90  void
-
91  testGetAPIVersionNumber()
-
92  {
-
93  testcase("test getAPIVersionNumber function");
+
79  BEAST_EXPECT(env.app().config().BETA_RPC_API);
+
80  re = env.rpc(
+
81  "json",
+
82  "version",
+
83  "{\"api_version\": " +
+
84  std::to_string(
+
85  std::max(
+
86  RPC::apiMaximumSupportedVersion, RPC::apiBetaVersion) +
+
87  1) +
+
88  "}");
+
89  BEAST_EXPECT(badVersion(re));
+
90 
+
91  re = env.rpc("json", "version", "{\"api_version\": \"a\"}");
+
92  BEAST_EXPECT(badVersion(re));
+
93  }
94 
-
95  unsigned int versionIfUnspecified =
-
96  RPC::apiVersionIfUnspecified < RPC::apiMinimumSupportedVersion
-
97  ? RPC::apiInvalidVersion
-
98  : RPC::apiVersionIfUnspecified;
+
95  void
+
96  testGetAPIVersionNumber()
+
97  {
+
98  testcase("test getAPIVersionNumber function");
99 
-
100  Json::Value j_array = Json::Value(Json::arrayValue);
-
101  Json::Value j_null = Json::Value(Json::nullValue);
-
102  BEAST_EXPECT(
-
103  RPC::getAPIVersionNumber(j_array, false) == versionIfUnspecified);
-
104  BEAST_EXPECT(
-
105  RPC::getAPIVersionNumber(j_null, false) == versionIfUnspecified);
-
106 
-
107  Json::Value j_object = Json::Value(Json::objectValue);
-
108  BEAST_EXPECT(
-
109  RPC::getAPIVersionNumber(j_object, false) == versionIfUnspecified);
-
110  j_object[jss::api_version] = RPC::apiVersionIfUnspecified;
-
111  BEAST_EXPECT(
-
112  RPC::getAPIVersionNumber(j_object, false) == versionIfUnspecified);
-
113 
-
114  j_object[jss::api_version] = RPC::apiMinimumSupportedVersion;
-
115  BEAST_EXPECT(
-
116  RPC::getAPIVersionNumber(j_object, false) ==
-
117  RPC::apiMinimumSupportedVersion);
-
118  j_object[jss::api_version] = RPC::apiMaximumSupportedVersion;
-
119  BEAST_EXPECT(
-
120  RPC::getAPIVersionNumber(j_object, false) ==
-
121  RPC::apiMaximumSupportedVersion);
-
122 
-
123  j_object[jss::api_version] = RPC::apiMinimumSupportedVersion - 1;
+
100  unsigned int versionIfUnspecified =
+
101  RPC::apiVersionIfUnspecified < RPC::apiMinimumSupportedVersion
+
102  ? RPC::apiInvalidVersion
+
103  : RPC::apiVersionIfUnspecified;
+
104 
+
105  Json::Value j_array = Json::Value(Json::arrayValue);
+
106  Json::Value j_null = Json::Value(Json::nullValue);
+
107  BEAST_EXPECT(
+
108  RPC::getAPIVersionNumber(j_array, false) == versionIfUnspecified);
+
109  BEAST_EXPECT(
+
110  RPC::getAPIVersionNumber(j_null, false) == versionIfUnspecified);
+
111 
+
112  Json::Value j_object = Json::Value(Json::objectValue);
+
113  BEAST_EXPECT(
+
114  RPC::getAPIVersionNumber(j_object, false) == versionIfUnspecified);
+
115  j_object[jss::api_version] = RPC::apiVersionIfUnspecified;
+
116  BEAST_EXPECT(
+
117  RPC::getAPIVersionNumber(j_object, false) == versionIfUnspecified);
+
118 
+
119  j_object[jss::api_version] = RPC::apiMinimumSupportedVersion;
+
120  BEAST_EXPECT(
+
121  RPC::getAPIVersionNumber(j_object, false) ==
+
122  RPC::apiMinimumSupportedVersion);
+
123  j_object[jss::api_version] = RPC::apiMaximumSupportedVersion;
124  BEAST_EXPECT(
125  RPC::getAPIVersionNumber(j_object, false) ==
-
126  RPC::apiInvalidVersion);
-
127  j_object[jss::api_version] = RPC::apiMaximumSupportedVersion + 1;
-
128  BEAST_EXPECT(
-
129  RPC::getAPIVersionNumber(j_object, false) ==
-
130  RPC::apiInvalidVersion);
-
131  j_object[jss::api_version] = RPC::apiBetaVersion;
-
132  BEAST_EXPECT(
-
133  RPC::getAPIVersionNumber(j_object, true) == RPC::apiBetaVersion);
-
134  j_object[jss::api_version] = RPC::apiBetaVersion + 1;
-
135  BEAST_EXPECT(
-
136  RPC::getAPIVersionNumber(j_object, true) == RPC::apiInvalidVersion);
-
137 
-
138  j_object[jss::api_version] = RPC::apiInvalidVersion;
-
139  BEAST_EXPECT(
-
140  RPC::getAPIVersionNumber(j_object, false) ==
-
141  RPC::apiInvalidVersion);
-
142  j_object[jss::api_version] = "a";
-
143  BEAST_EXPECT(
-
144  RPC::getAPIVersionNumber(j_object, false) ==
-
145  RPC::apiInvalidVersion);
-
146  }
-
147 
-
148  void
-
149  testBatch()
-
150  {
-
151  testcase("batch, all good request");
+
126  RPC::apiMaximumSupportedVersion);
+
127 
+
128  j_object[jss::api_version] = RPC::apiMinimumSupportedVersion - 1;
+
129  BEAST_EXPECT(
+
130  RPC::getAPIVersionNumber(j_object, false) ==
+
131  RPC::apiInvalidVersion);
+
132  j_object[jss::api_version] = RPC::apiMaximumSupportedVersion + 1;
+
133  BEAST_EXPECT(
+
134  RPC::getAPIVersionNumber(j_object, false) ==
+
135  RPC::apiInvalidVersion);
+
136  j_object[jss::api_version] = RPC::apiBetaVersion;
+
137  BEAST_EXPECT(
+
138  RPC::getAPIVersionNumber(j_object, true) == RPC::apiBetaVersion);
+
139  j_object[jss::api_version] = RPC::apiBetaVersion + 1;
+
140  BEAST_EXPECT(
+
141  RPC::getAPIVersionNumber(j_object, true) == RPC::apiInvalidVersion);
+
142 
+
143  j_object[jss::api_version] = RPC::apiInvalidVersion;
+
144  BEAST_EXPECT(
+
145  RPC::getAPIVersionNumber(j_object, false) ==
+
146  RPC::apiInvalidVersion);
+
147  j_object[jss::api_version] = "a";
+
148  BEAST_EXPECT(
+
149  RPC::getAPIVersionNumber(j_object, false) ==
+
150  RPC::apiInvalidVersion);
+
151  }
152 
-
153  using namespace test::jtx;
-
154  Env env{*this};
-
155 
-
156  auto const without_api_verion = std::string("{ ") +
-
157  "\"jsonrpc\": \"2.0\", "
-
158  "\"ripplerpc\": \"2.0\", "
-
159  "\"id\": 5, "
-
160  "\"method\": \"version\", "
-
161  "\"params\": {}}";
-
162  auto const with_api_verion = std::string("{ ") +
-
163  "\"jsonrpc\": \"2.0\", "
-
164  "\"ripplerpc\": \"2.0\", "
-
165  "\"id\": 6, "
-
166  "\"method\": \"version\", "
-
167  "\"params\": { "
-
168  "\"api_version\": " +
-
169  std::to_string(RPC::apiMaximumSupportedVersion) + "}}";
-
170  auto re = env.rpc(
-
171  "json2", '[' + without_api_verion + ", " + with_api_verion + ']');
-
172 
-
173  if (!BEAST_EXPECT(re.isArray()))
-
174  return;
-
175  if (!BEAST_EXPECT(re.size() == 2))
-
176  return;
-
177  BEAST_EXPECT(
-
178  re[0u].isMember(jss::result) &&
-
179  re[0u][jss::result].isMember(jss::version));
-
180  BEAST_EXPECT(
-
181  re[1u].isMember(jss::result) &&
-
182  re[1u][jss::result].isMember(jss::version));
-
183  }
-
184 
-
185  void
-
186  testBatchFail()
-
187  {
-
188  testcase("batch, with a bad request");
+
153  void
+
154  testBatch()
+
155  {
+
156  testcase("batch, all good request");
+
157 
+
158  using namespace test::jtx;
+
159  Env env{*this};
+
160 
+
161  auto const without_api_verion = std::string("{ ") +
+
162  "\"jsonrpc\": \"2.0\", "
+
163  "\"ripplerpc\": \"2.0\", "
+
164  "\"id\": 5, "
+
165  "\"method\": \"version\", "
+
166  "\"params\": {}}";
+
167  auto const with_api_verion = std::string("{ ") +
+
168  "\"jsonrpc\": \"2.0\", "
+
169  "\"ripplerpc\": \"2.0\", "
+
170  "\"id\": 6, "
+
171  "\"method\": \"version\", "
+
172  "\"params\": { "
+
173  "\"api_version\": " +
+
174  std::to_string(RPC::apiMaximumSupportedVersion) + "}}";
+
175  auto re = env.rpc(
+
176  "json2", '[' + without_api_verion + ", " + with_api_verion + ']');
+
177 
+
178  if (!BEAST_EXPECT(re.isArray()))
+
179  return;
+
180  if (!BEAST_EXPECT(re.size() == 2))
+
181  return;
+
182  BEAST_EXPECT(
+
183  re[0u].isMember(jss::result) &&
+
184  re[0u][jss::result].isMember(jss::version));
+
185  BEAST_EXPECT(
+
186  re[1u].isMember(jss::result) &&
+
187  re[1u][jss::result].isMember(jss::version));
+
188  }
189 
-
190  using namespace test::jtx;
-
191  Env env{*this};
-
192 
-
193  auto const without_api_verion = std::string("{ ") +
-
194  "\"jsonrpc\": \"2.0\", "
-
195  "\"ripplerpc\": \"2.0\", "
-
196  "\"id\": 5, "
-
197  "\"method\": \"version\", "
-
198  "\"params\": {}}";
-
199  auto const with_wrong_api_verion = std::string("{ ") +
+
190  void
+
191  testBatchFail()
+
192  {
+
193  testcase("batch, with a bad request");
+
194 
+
195  using namespace test::jtx;
+
196  Env env{*this};
+
197 
+
198  BEAST_EXPECT(env.app().config().BETA_RPC_API);
+
199  auto const without_api_verion = std::string("{ ") +
200  "\"jsonrpc\": \"2.0\", "
201  "\"ripplerpc\": \"2.0\", "
-
202  "\"id\": 6, "
+
202  "\"id\": 5, "
203  "\"method\": \"version\", "
-
204  "\"params\": { "
-
205  "\"api_version\": " +
-
206  std::to_string(RPC::apiMaximumSupportedVersion + 1) + "}}";
-
207  auto re = env.rpc(
-
208  "json2",
-
209  '[' + without_api_verion + ", " + with_wrong_api_verion + ']');
-
210 
-
211  if (!BEAST_EXPECT(re.isArray()))
-
212  return;
-
213  if (!BEAST_EXPECT(re.size() == 2))
-
214  return;
-
215  BEAST_EXPECT(
-
216  re[0u].isMember(jss::result) &&
-
217  re[0u][jss::result].isMember(jss::version));
-
218  BEAST_EXPECT(re[1u].isMember(jss::error));
-
219  }
+
204  "\"params\": {}}";
+
205  auto const with_wrong_api_verion =
+
206  std::string("{ ") +
+
207  "\"jsonrpc\": \"2.0\", "
+
208  "\"ripplerpc\": \"2.0\", "
+
209  "\"id\": 6, "
+
210  "\"method\": \"version\", "
+
211  "\"params\": { "
+
212  "\"api_version\": " +
+
213  std::to_string(
+
214  std::max(RPC::apiMaximumSupportedVersion, RPC::apiBetaVersion) +
+
215  1) +
+
216  "}}";
+
217  auto re = env.rpc(
+
218  "json2",
+
219  '[' + without_api_verion + ", " + with_wrong_api_verion + ']');
220 
-
221  void
-
222  testConfig()
-
223  {
-
224  testcase("config test");
-
225  {
-
226  Config c;
-
227  BEAST_EXPECT(c.BETA_RPC_API == false);
-
228  }
-
229 
-
230  {
-
231  Config c;
-
232  c.loadFromString("\n[beta_rpc_api]\n1\n");
-
233  BEAST_EXPECT(c.BETA_RPC_API == true);
-
234  }
-
235 
-
236  {
-
237  Config c;
-
238  c.loadFromString("\n[beta_rpc_api]\n0\n");
-
239  BEAST_EXPECT(c.BETA_RPC_API == false);
-
240  }
-
241  }
-
242 
-
243  void
-
244  testVersionRPCV2()
-
245  {
-
246  testcase("test version RPC with api_version >= 2");
-
247 
-
248  using namespace test::jtx;
-
249  Env env{*this, envconfig([](std::unique_ptr<Config> c) {
-
250  c->loadFromString("\n[beta_rpc_api]\n1\n");
-
251  return c;
-
252  })};
-
253  if (!BEAST_EXPECT(env.app().config().BETA_RPC_API == true))
-
254  return;
-
255 
-
256  auto jrr = env.rpc(
-
257  "json",
-
258  "version",
-
259  "{\"api_version\": " + std::to_string(RPC::apiBetaVersion) +
-
260  "}")[jss::result];
-
261 
-
262  if (!BEAST_EXPECT(jrr.isMember(jss::version)))
-
263  return;
-
264  if (!BEAST_EXPECT(jrr[jss::version].isMember(jss::first)) &&
-
265  jrr[jss::version].isMember(jss::last))
-
266  return;
-
267  BEAST_EXPECT(
-
268  jrr[jss::version][jss::first] == RPC::apiMinimumSupportedVersion);
-
269  BEAST_EXPECT(jrr[jss::version][jss::last] == RPC::apiBetaVersion);
-
270  }
+
221  if (!BEAST_EXPECT(re.isArray()))
+
222  return;
+
223  if (!BEAST_EXPECT(re.size() == 2))
+
224  return;
+
225  BEAST_EXPECT(
+
226  re[0u].isMember(jss::result) &&
+
227  re[0u][jss::result].isMember(jss::version));
+
228  BEAST_EXPECT(re[1u].isMember(jss::error));
+
229  }
+
230 
+
231  void
+
232  testConfig()
+
233  {
+
234  testcase("config test");
+
235  {
+
236  Config c;
+
237  BEAST_EXPECT(c.BETA_RPC_API == false);
+
238  }
+
239 
+
240  {
+
241  Config c;
+
242  c.loadFromString("\n[beta_rpc_api]\n1\n");
+
243  BEAST_EXPECT(c.BETA_RPC_API == true);
+
244  }
+
245 
+
246  {
+
247  Config c;
+
248  c.loadFromString("\n[beta_rpc_api]\n0\n");
+
249  BEAST_EXPECT(c.BETA_RPC_API == false);
+
250  }
+
251  }
+
252 
+
253  void
+
254  testVersionRPCV2()
+
255  {
+
256  testcase("test version RPC with api_version >= 2");
+
257 
+
258  using namespace test::jtx;
+
259  Env env{*this, envconfig([](std::unique_ptr<Config> c) {
+
260  c->loadFromString("\n[beta_rpc_api]\n1\n");
+
261  return c;
+
262  })};
+
263  if (!BEAST_EXPECT(env.app().config().BETA_RPC_API == true))
+
264  return;
+
265 
+
266  auto jrr = env.rpc(
+
267  "json",
+
268  "version",
+
269  "{\"api_version\": " + std::to_string(RPC::apiBetaVersion) +
+
270  "}")[jss::result];
271 
-
272 public:
-
273  void
-
274  run() override
-
275  {
-
276  testCorrectVersionNumber();
-
277  testWrongVersionNumber();
-
278  testGetAPIVersionNumber();
-
279  testBatch();
-
280  testBatchFail();
-
281  testConfig();
-
282  testVersionRPCV2();
-
283  }
-
284 };
-
285 
-
286 BEAST_DEFINE_TESTSUITE(Version, rpc, ripple);
-
287 
-
288 } // namespace ripple
+
272  if (!BEAST_EXPECT(jrr.isMember(jss::version)))
+
273  return;
+
274  if (!BEAST_EXPECT(jrr[jss::version].isMember(jss::first)) &&
+
275  jrr[jss::version].isMember(jss::last))
+
276  return;
+
277  BEAST_EXPECT(
+
278  jrr[jss::version][jss::first] == RPC::apiMinimumSupportedVersion);
+
279  BEAST_EXPECT(jrr[jss::version][jss::last] == RPC::apiBetaVersion);
+
280  }
+
281 
+
282 public:
+
283  void
+
284  run() override
+
285  {
+
286  testCorrectVersionNumber();
+
287  testWrongVersionNumber();
+
288  testGetAPIVersionNumber();
+
289  testBatch();
+
290  testBatchFail();
+
291  testConfig();
+
292  testVersionRPCV2();
+
293  }
+
294 };
+
295 
+
296 BEAST_DEFINE_TESTSUITE(Version, rpc, ripple);
+
297 
+
298 } // namespace ripple
ripple::RPC::apiInvalidVersion
constexpr unsigned int apiInvalidVersion
API version numbers used in later API versions.
Definition: RPCHelpers.h:241
ripple::RPC::apiVersionIfUnspecified
constexpr unsigned int apiVersionIfUnspecified
Definition: RPCHelpers.h:242
-
ripple::Version_test::testBatch
void testBatch()
Definition: Version_test.cpp:149
+
ripple::Version_test::testBatch
void testBatch()
Definition: Version_test.cpp:154
std::string
STL class.
ripple::BEAST_DEFINE_TESTSUITE
BEAST_DEFINE_TESTSUITE(AccountTxPaging, app, ripple)
Json::arrayValue
@ arrayValue
array value (ordered list)
Definition: json_value.h:42
ripple::RPC::getAPIVersionNumber
unsigned int getAPIVersionNumber(Json::Value const &jv, bool betaEnabled)
Retrieve the api version number from the json value.
Definition: RPCHelpers.cpp:1033
-
ripple::Version_test::testBatchFail
void testBatchFail()
Definition: Version_test.cpp:186
+
ripple::Version_test::testBatchFail
void testBatchFail()
Definition: Version_test.cpp:191
ripple::RPC::apiBetaVersion
constexpr unsigned int apiBetaVersion
Definition: RPCHelpers.h:245
ripple::Config::loadFromString
void loadFromString(std::string const &fileContents)
Load the config from the contents of the string.
Definition: Config.cpp:452
Json::objectValue
@ objectValue
object value (collection of name/value pairs).
Definition: json_value.h:43
ripple::Config
Definition: Config.h:89
-
ripple::Version_test::testConfig
void testConfig()
Definition: Version_test.cpp:222
+
ripple::Version_test::testConfig
void testConfig()
Definition: Version_test.cpp:232
ripple::Version_test::testCorrectVersionNumber
void testCorrectVersionNumber()
Definition: Version_test.cpp:29
std::to_string
T to_string(T... args)
ripple::Config::BETA_RPC_API
bool BETA_RPC_API
Definition: Config.h:293
ripple::Version_test
Definition: Version_test.cpp:26
-
ripple::Version_test::run
void run() override
Definition: Version_test.cpp:274
+
ripple::Version_test::run
void run() override
Definition: Version_test.cpp:284
ripple::RPC::apiMinimumSupportedVersion
constexpr unsigned int apiMinimumSupportedVersion
Definition: RPCHelpers.h:243
ripple
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition: RCLCensorshipDetector.h:29
-
ripple::Version_test::testGetAPIVersionNumber
void testGetAPIVersionNumber()
Definition: Version_test.cpp:91
+
ripple::Version_test::testGetAPIVersionNumber
void testGetAPIVersionNumber()
Definition: Version_test.cpp:96
Json::nullValue
@ nullValue
'null' value
Definition: json_value.h:36
ripple::RPC::apiMaximumSupportedVersion
constexpr unsigned int apiMaximumSupportedVersion
Definition: RPCHelpers.h:244
ripple::Version_test::testWrongVersionNumber
void testWrongVersionNumber()
Definition: Version_test.cpp:55
+
std::max
T max(T... args)
std::unique_ptr
STL class.
-
ripple::Version_test::testVersionRPCV2
void testVersionRPCV2()
Definition: Version_test.cpp:244
+
ripple::Version_test::testVersionRPCV2
void testVersionRPCV2()
Definition: Version_test.cpp:254
Json::Value
Represents a JSON value.
Definition: json_value.h:145