352 testcase(
"unsteppedThenSteppedWithNFTs");
361 auto const usD1 = gw1[
"USD"];
362 auto const usD2 = gw2[
"USD"];
364 env.
fund(
XRP(1000), gw1, gw2, bob);
371 params[jss::account] = bob.
human();
372 auto resp = env.
rpc(
"json",
"account_objects",
to_string(params));
373 BEAST_EXPECT(!resp.isMember(jss::marker));
374 BEAST_EXPECT(resp[jss::result][jss::account_objects].size() == 0);
377 params[jss::limit] = 1;
378 resp = env.
rpc(
"json",
"account_objects",
to_string(params));
379 BEAST_EXPECT(!resp.isMember(jss::marker));
380 BEAST_EXPECT(resp[jss::result][jss::account_objects].size() == 0);
392 params[jss::account] = bob.
human();
393 auto resp = env.
rpc(
"json",
"account_objects",
to_string(params));
394 BEAST_EXPECT(!resp.isMember(jss::marker));
396 unpaged = resp[jss::result][jss::account_objects];
397 BEAST_EXPECT(unpaged.
size() == 1);
402 params[jss::account] = bob.
human();
403 params[jss::type] = jss::nft_page;
404 auto resp = env.
rpc(
"json",
"account_objects",
to_string(params));
405 BEAST_EXPECT(!resp.isMember(jss::marker));
406 json::Value& aobjs = resp[jss::result][jss::account_objects];
407 BEAST_EXPECT(aobjs.
size() == 1);
408 BEAST_EXPECT(aobjs[0u][sfLedgerEntryType.jsonName] == jss::NFTokenPage);
409 BEAST_EXPECT(aobjs[0u][sfNFTokens.jsonName].
size() == 1);
414 params[jss::account] = bob.
human();
415 params[jss::limit] = 1;
418 json::Value& aobjs = resp[jss::result][jss::account_objects];
419 BEAST_EXPECT(aobjs.
size() == 1);
420 auto& aobj = aobjs[0U];
421 BEAST_EXPECT(!resp[jss::result].isMember(jss::limit));
422 BEAST_EXPECT(!resp[jss::result].isMember(jss::marker));
424 BEAST_EXPECT(aobj == unpaged[0u]);
428 env.
trust(usD1(1000), bob);
429 env.
trust(usD2(1000), bob);
431 env(
pay(gw1, bob, usD1(1000)));
432 env(
pay(gw2, bob, usD2(1000)));
441 params[jss::account] = bob.
human();
442 auto resp = env.
rpc(
"json",
"account_objects",
to_string(params));
443 BEAST_EXPECT(!resp.isMember(jss::marker));
445 unpaged = resp[jss::result][jss::account_objects];
446 BEAST_EXPECT(unpaged.
size() == 5);
451 params[jss::account] = bob.
human();
452 params[jss::type] = jss::nft_page;
453 auto resp = env.
rpc(
"json",
"account_objects",
to_string(params));
454 BEAST_EXPECT(!resp.isMember(jss::marker));
455 json::Value& aobjs = resp[jss::result][jss::account_objects];
456 BEAST_EXPECT(aobjs.
size() == 1);
457 BEAST_EXPECT(aobjs[0u][sfLedgerEntryType.jsonName] == jss::NFTokenPage);
458 BEAST_EXPECT(aobjs[0u][sfNFTokens.jsonName].
size() == 1);
463 params[jss::account] = bob.
human();
464 params[jss::limit] = 1;
465 for (
int i = 0; i < 5; ++i)
468 json::Value& aobjs = resp[jss::result][jss::account_objects];
469 BEAST_EXPECT(aobjs.
size() == 1);
470 auto& aobj = aobjs[0U];
473 BEAST_EXPECT(resp[jss::result][jss::limit] == 1);
474 BEAST_EXPECT(resp[jss::result].isMember(jss::marker));
478 BEAST_EXPECT(!resp[jss::result].isMember(jss::limit));
479 BEAST_EXPECT(!resp[jss::result].isMember(jss::marker));
482 BEAST_EXPECT(aobj == unpaged[i]);
484 params[jss::marker] = resp[jss::result][jss::marker];
489 for (
int i = 0; i < 32; ++i)
497 params[jss::account] = bob.
human();
498 auto resp = env.
rpc(
"json",
"account_objects",
to_string(params));
499 BEAST_EXPECT(!resp.isMember(jss::marker));
501 unpaged = resp[jss::result][jss::account_objects];
502 BEAST_EXPECT(unpaged.
size() == 6);
507 params[jss::account] = bob.
human();
508 params[jss::type] = jss::nft_page;
509 auto resp = env.
rpc(
"json",
"account_objects",
to_string(params));
510 BEAST_EXPECT(!resp.isMember(jss::marker));
511 json::Value const& aobjs = resp[jss::result][jss::account_objects];
512 BEAST_EXPECT(aobjs.
size() == 2);
517 params[jss::account] = bob.
human();
518 params[jss::limit] = 1;
519 for (
int i = 0; i < 6; ++i)
522 json::Value& aobjs = resp[jss::result][jss::account_objects];
523 BEAST_EXPECT(aobjs.
size() == 1);
524 auto& aobj = aobjs[0U];
527 BEAST_EXPECT(resp[jss::result][jss::limit] == 1);
528 BEAST_EXPECT(resp[jss::result].isMember(jss::marker));
532 BEAST_EXPECT(!resp[jss::result].isMember(jss::limit));
533 BEAST_EXPECT(!resp[jss::result].isMember(jss::marker));
536 BEAST_EXPECT(aobj == unpaged[i]);
538 params[jss::marker] = resp[jss::result][jss::marker];
554 auto const usd = gw[
"USD"];
556 auto const features =
558 Env env(*
this, features);
561 auto acctObjs = [&env](
569 params[jss::type] = *type;
571 params[jss::limit] = *limit;
573 params[jss::marker] = *marker;
574 params[jss::ledger_index] =
"validated";
575 return env.
rpc(
"json",
"account_objects",
to_string(params));
579 auto acctObjsIsSize = [](
json::Value const& resp,
unsigned size) {
580 return resp[jss::result][jss::account_objects].
isArray() &&
581 (resp[jss::result][jss::account_objects].
size() == size);
585 auto acctObjsTypeIsInvalid = [](
json::Value const& resp) {
586 return resp[jss::result].
isMember(jss::error) &&
587 resp[jss::result][jss::error_message] ==
"Invalid field \'type\'.";
590 env.
fund(
XRP(10000), gw, alice);
595 BEAST_EXPECT(acctObjsIsSize(acctObjs(gw, jss::account), 0));
596 BEAST_EXPECT(acctObjsIsSize(acctObjs(gw, jss::check), 0));
597 BEAST_EXPECT(acctObjsIsSize(acctObjs(gw, jss::deposit_preauth), 0));
598 BEAST_EXPECT(acctObjsIsSize(acctObjs(gw, jss::escrow), 0));
599 BEAST_EXPECT(acctObjsIsSize(acctObjs(gw, jss::nft_page), 0));
600 BEAST_EXPECT(acctObjsIsSize(acctObjs(gw, jss::offer), 0));
601 BEAST_EXPECT(acctObjsIsSize(acctObjs(gw, jss::payment_channel), 0));
602 BEAST_EXPECT(acctObjsIsSize(acctObjs(gw, jss::signer_list), 0));
603 BEAST_EXPECT(acctObjsIsSize(acctObjs(gw, jss::state), 0));
604 BEAST_EXPECT(acctObjsIsSize(acctObjs(gw, jss::ticket), 0));
605 BEAST_EXPECT(acctObjsIsSize(acctObjs(gw, jss::amm), 0));
606 BEAST_EXPECT(acctObjsIsSize(acctObjs(gw, jss::did), 0));
607 BEAST_EXPECT(acctObjsIsSize(acctObjs(gw, jss::permissioned_domain), 0));
610 BEAST_EXPECT(acctObjsTypeIsInvalid(acctObjs(gw, jss::amendments)));
611 BEAST_EXPECT(acctObjsTypeIsInvalid(acctObjs(gw, jss::directory)));
612 BEAST_EXPECT(acctObjsTypeIsInvalid(acctObjs(gw, jss::fee)));
613 BEAST_EXPECT(acctObjsTypeIsInvalid(acctObjs(gw, jss::hashes)));
614 BEAST_EXPECT(acctObjsTypeIsInvalid(acctObjs(gw, jss::NegativeUNL)));
622 json::Value const resp = acctObjs(gw, jss::nft_page);
623 BEAST_EXPECT(acctObjsIsSize(resp, 1));
625 auto const& nftPage = resp[jss::result][jss::account_objects][0u];
626 BEAST_EXPECT(nftPage[sfNFTokens.jsonName].size() == 1);
628 nftPage[sfNFTokens.jsonName][0u][sfNFToken.jsonName][sfNFTokenID.jsonName] ==
633 env.
trust(usd(1000), alice);
635 env(
pay(gw, alice, usd(5)));
640 BEAST_EXPECT(acctObjsIsSize(resp, 1));
642 auto const& state = resp[jss::result][jss::account_objects][0u];
643 BEAST_EXPECT(state[sfBalance.jsonName][jss::value].asInt() == -5);
644 BEAST_EXPECT(state[sfHighLimit.jsonName][jss::value].asUInt() == 1000);
652 BEAST_EXPECT(acctObjsIsSize(resp, 1));
654 auto const&
check = resp[jss::result][jss::account_objects][0u];
655 BEAST_EXPECT(
check[sfAccount.jsonName] == gw.
human());
656 BEAST_EXPECT(
check[sfDestination.jsonName] == alice.
human());
657 BEAST_EXPECT(
check[sfSendMax.jsonName][jss::value].asUInt() == 10);
664 json::Value const resp = acctObjs(gw, jss::deposit_preauth);
665 BEAST_EXPECT(acctObjsIsSize(resp, 1));
667 auto const& preauth = resp[jss::result][jss::account_objects][0u];
668 BEAST_EXPECT(preauth[sfAccount.jsonName] == gw.
human());
669 BEAST_EXPECT(preauth[sfAuthorize.jsonName] == alice.
human());
674 jvEscrow[jss::TransactionType] = jss::EscrowCreate;
675 jvEscrow[jss::Account] = gw.
human();
676 jvEscrow[jss::Destination] = gw.
human();
684 json::Value const resp = acctObjs(gw, jss::escrow);
685 BEAST_EXPECT(acctObjsIsSize(resp, 1));
687 auto const&
escrow = resp[jss::result][jss::account_objects][0u];
688 BEAST_EXPECT(
escrow[sfAccount.jsonName] == gw.
human());
689 BEAST_EXPECT(
escrow[sfDestination.jsonName] == gw.
human());
690 BEAST_EXPECT(
escrow[sfAmount.jsonName].asUInt() == 100'000'000);
695 Account const issuer(
"issuer");
699 env(
pdomain::setTx(gw, {{.issuer = issuer, .credType = credentialType1}}));
703 json::Value const resp = acctObjs(gw, jss::permissioned_domain);
704 BEAST_EXPECT(acctObjsIsSize(resp, 1));
706 auto const& permissionedDomain = resp[jss::result][jss::account_objects][0u];
708 permissionedDomain.isMember(jss::Owner) &&
709 (permissionedDomain[jss::Owner] == gw.
human()));
710 bool const check1 = BEAST_EXPECT(
711 permissionedDomain.isMember(jss::AcceptedCredentials) &&
712 permissionedDomain[jss::AcceptedCredentials].isArray() &&
713 (permissionedDomain[jss::AcceptedCredentials].size() == 1) &&
714 (permissionedDomain[jss::AcceptedCredentials][0u].isMember(jss::Credential)));
718 auto const& credential =
719 permissionedDomain[jss::AcceptedCredentials][0u][jss::Credential];
721 credential.isMember(sfIssuer.jsonName) &&
722 (credential[sfIssuer.jsonName] == issuer.
human()));
724 credential.isMember(sfCredentialType.jsonName) &&
725 (credential[sfCredentialType.jsonName] ==
strHex(credentialType1)));
735 auto scEnvAcctObjs = [&](
Account const& acct,
char const* type) {
737 params[jss::account] = acct.
human();
738 params[jss::type] = type;
739 params[jss::ledger_index] =
"validated";
740 return scEnv.
rpc(
"json",
"account_objects",
to_string(params));
745 BEAST_EXPECT(acctObjsIsSize(resp, 1));
746 auto const& acctBridge = resp[jss::result][jss::account_objects][0u];
748 BEAST_EXPECT(acctBridge[sfLedgerEntryType.getJsonName()] ==
"Bridge");
749 BEAST_EXPECT(acctBridge[sfXChainClaimID.getJsonName()].asUInt() == 0);
750 BEAST_EXPECT(acctBridge[sfXChainAccountClaimCount.getJsonName()].asUInt() == 0);
751 BEAST_EXPECT(acctBridge[sfXChainAccountCreateCount.getJsonName()].asUInt() == 0);
752 BEAST_EXPECT(acctBridge[sfMinAccountCreateAmount.getJsonName()].asUInt() == 20000000);
753 BEAST_EXPECT(acctBridge[sfSignatureReward.getJsonName()].asUInt() == 1000000);
754 BEAST_EXPECT(acctBridge[sfXChainBridge.getJsonName()] == x.
jvb);
768 auto scEnvAcctObjs = [&](
Account const& acct,
char const* type) {
770 params[jss::account] = acct.
human();
771 params[jss::type] = type;
772 params[jss::ledger_index] =
"validated";
773 return scEnv.
rpc(
"json",
"account_objects",
to_string(params));
779 BEAST_EXPECT(acctObjsIsSize(resp, 1));
781 auto const& xchainSeq = resp[jss::result][jss::account_objects][0u];
782 BEAST_EXPECT(xchainSeq[sfAccount.jsonName] == x.
scAlice.
human());
783 BEAST_EXPECT(xchainSeq[sfXChainClaimID.getJsonName()].asUInt() == 1);
787 json::Value const resp = scEnvAcctObjs(x.
scBob, jss::xchain_owned_claim_id);
788 BEAST_EXPECT(acctObjsIsSize(resp, 1));
790 auto const& xchainSeq = resp[jss::result][jss::account_objects][0u];
791 BEAST_EXPECT(xchainSeq[sfAccount.jsonName] == x.
scBob.
human());
792 BEAST_EXPECT(xchainSeq[sfXChainClaimID.getJsonName()].asUInt() == 2);
799 auto const amt =
XRP(1000);
819 auto scEnvAcctObjs = [&](
Account const& acct,
char const* type) {
821 params[jss::account] = acct.
human();
822 params[jss::type] = type;
823 params[jss::ledger_index] =
"validated";
824 return scEnv.
rpc(
"json",
"account_objects",
to_string(params));
831 BEAST_EXPECT(acctObjsIsSize(resp, 1));
833 auto const& xchainCreateAccountClaimId =
834 resp[jss::result][jss::account_objects][0u];
836 xchainCreateAccountClaimId[sfAccount.jsonName] ==
Account::kMaster.human());
838 xchainCreateAccountClaimId[sfXChainAccountCreateCount.getJsonName()].asUInt() ==
849 BEAST_EXPECT(acctObjsIsSize(resp, 1));
851 auto const&
offer = resp[jss::result][jss::account_objects][0u];
852 BEAST_EXPECT(
offer[sfAccount.jsonName] == gw.
human());
853 BEAST_EXPECT(
offer[sfTakerGets.jsonName].asUInt() == 14'000'000);
854 BEAST_EXPECT(
offer[sfTakerPays.jsonName][jss::value].asUInt() == 7);
860 jvPayChan[jss::TransactionType] = jss::PaymentChannelCreate;
861 jvPayChan[jss::Account] = gw.
human();
862 jvPayChan[jss::Destination] = alice.
human();
864 jvPayChan[sfSettleDelay.jsonName] = 24 * 60 * 60;
871 json::Value const resp = acctObjs(gw, jss::payment_channel);
872 BEAST_EXPECT(acctObjsIsSize(resp, 1));
874 auto const& payChan = resp[jss::result][jss::account_objects][0u];
875 BEAST_EXPECT(payChan[sfAccount.jsonName] == gw.
human());
876 BEAST_EXPECT(payChan[sfAmount.jsonName].asUInt() == 300'000'000);
877 BEAST_EXPECT(payChan[sfSettleDelay.jsonName].asUInt() == 24 * 60 * 60);
883 jvDID[jss::TransactionType] = jss::DIDSet;
884 jvDID[jss::Account] = gw.
human();
892 BEAST_EXPECT(acctObjsIsSize(resp, 1));
894 auto const&
did = resp[jss::result][jss::account_objects][0u];
895 BEAST_EXPECT(
did[sfAccount.jsonName] == gw.
human());
903 json::Value const resp = acctObjs(gw, jss::signer_list);
904 BEAST_EXPECT(acctObjsIsSize(resp, 1));
906 auto const& signerList = resp[jss::result][jss::account_objects][0u];
907 BEAST_EXPECT(signerList[sfSignerQuorum.jsonName] == 6);
908 auto const& entry = signerList[sfSignerEntries.jsonName][0u][sfSignerEntry.jsonName];
909 BEAST_EXPECT(entry[sfAccount.jsonName] == alice.
human());
910 BEAST_EXPECT(entry[sfSignerWeight.jsonName].
asUInt() == 7);
914 auto const seq = env.
seq(gw);
920 json::Value const resp = acctObjs(gw, jss::ticket);
921 BEAST_EXPECT(acctObjsIsSize(resp, 1));
923 auto const&
ticket = resp[jss::result][jss::account_objects][0u];
924 BEAST_EXPECT(
ticket[sfAccount.jsonName] == gw.
human());
925 BEAST_EXPECT(
ticket[sfLedgerEntryType.jsonName] == jss::Ticket);
926 BEAST_EXPECT(
ticket[sfTicketSequence.jsonName].asUInt() == seq + 1);
932 params[jss::account] = gw.
human();
933 params[jss::deletion_blockers_only] =
true;
934 auto resp = env.
rpc(
"json",
"account_objects",
to_string(params));
940 jss::NFTokenPage.cStr(),
941 jss::RippleState.cStr(),
942 jss::PayChannel.cStr(),
943 jss::PermissionedDomain.cStr()};
951 if (BEAST_EXPECT(acctObjsIsSize(resp, expectedAccountObjects)))
953 auto const& aobjs = resp[jss::result][jss::account_objects];
955 gotLedgerTypes.
reserve(expectedAccountObjects);
958 gotLedgerTypes.
push_back(aobjs[i][
"LedgerEntryType"].asString());
961 BEAST_EXPECT(gotLedgerTypes == expectedLedgerTypes);
968 params[jss::account] = gw.
human();
969 params[jss::deletion_blockers_only] =
true;
970 params[jss::type] = jss::escrow;
971 auto resp = env.
rpc(
"json",
"account_objects",
to_string(params));
973 if (BEAST_EXPECT(acctObjsIsSize(resp, 1u)))
975 auto const& aobjs = resp[jss::result][jss::account_objects];
976 BEAST_EXPECT(aobjs[0u][
"LedgerEntryType"] == jss::Escrow);
982 auto const objs = resp[jss::result][jss::account_objects];
983 for (
auto const& obj : resp[jss::result][jss::account_objects])
984 typesOut.push_back(obj[sfLedgerEntryType.fieldName].asString());
991 if (!acctObjsIsSize(resp, types.
size()))
994 getTypes(resp, typesOut);
995 return types == typesOut;
998 AMM amm(env, gw,
XRP(1'000), usd(1'000));
999 amm.deposit(alice, usd(1));
1002 BEAST_EXPECT(
lines[jss::lines].size() == 3);
1004 BEAST_EXPECT(acctObjsIsSize(acctObjs(
amm.ammAccount(), jss::amm), 1));
1006 auto resp = acctObjs(
amm.ammAccount(), std::nullopt, 2);
1008 getTypes(resp, typesOut);
1011 amm.ammAccount(), std::nullopt, 10, resp[jss::result][jss::marker].
asString());
1012 getTypes(resp, typesOut);
1017 jss::RippleState.cStr(),
1018 jss::RippleState.cStr(),
1019 jss::RippleState.cStr()}));
1021 resp = acctObjs(
amm.ammAccount(), jss::state, 10);
1022 BEAST_EXPECT(expectObjects(
1023 resp, {jss::RippleState.cStr(), jss::RippleState.cStr(), jss::RippleState.cStr()}));
1025 BEAST_EXPECT(acctObjsIsSize(acctObjs(
amm.ammAccount(), jss::offer), 0));
1027 BEAST_EXPECT(acctObjsIsSize(acctObjs(gw, jss::amm), 0));
1031 BEAST_EXPECT(acctObjsTypeIsInvalid(acctObjs(gw, jss::amendments)));
1032 BEAST_EXPECT(acctObjsTypeIsInvalid(acctObjs(gw, jss::directory)));
1033 BEAST_EXPECT(acctObjsTypeIsInvalid(acctObjs(gw, jss::fee)));
1034 BEAST_EXPECT(acctObjsTypeIsInvalid(acctObjs(gw, jss::hashes)));
1035 BEAST_EXPECT(acctObjsTypeIsInvalid(acctObjs(gw, jss::NegativeUNL)));
1039 for (
int d = 1'000'032; d >= 1'000'000; --d)
1046 BEAST_EXPECT(acctObjsIsSize(acctObjs(gw, jss::account), 0));
1194 using namespace jtx;
1200 env.
fund(
XRP(10000), alice, bob, carol);
1202 unsigned const accountObjectSize = 30;
1203 for (
unsigned i = 0; i < accountObjectSize; i++)
1206 for (
unsigned i = 0; i < 10; i++)
1211 unsigned const limit = 11;
1217 params[jss::account] = bob.
human();
1218 params[jss::limit] = limit;
1219 params[jss::ledger_index] =
"validated";
1220 auto resp = env.
rpc(
"json",
"account_objects",
to_string(params));
1221 auto& accountObjects = resp[jss::result][jss::account_objects];
1222 marker = resp[jss::result][jss::marker];
1223 BEAST_EXPECT(!resp[jss::result].isMember(jss::error));
1224 BEAST_EXPECT(accountObjects.size() == limit);
1230 params[jss::account] = bob.
human();
1231 params[jss::limit] = limit;
1232 params[jss::marker] = marker;
1233 params[jss::ledger_index] =
"validated";
1234 auto resp = env.
rpc(
"json",
"account_objects",
to_string(params));
1235 auto& accountObjects = resp[jss::result][jss::account_objects];
1236 marker = resp[jss::result][jss::marker];
1237 BEAST_EXPECT(!resp[jss::result].isMember(jss::error));
1238 BEAST_EXPECT(accountObjects.size() == limit);
1242 auto testInvalidMarker = [&](
std::string& marker) {
1244 params[jss::account] = bob.
human();
1245 params[jss::limit] = limit;
1246 params[jss::ledger_index] = jss::validated;
1247 params[jss::marker] = marker;
1249 return resp[jss::result][jss::error_message] ==
"Invalid field \'marker\'.";
1252 auto const markerStr = marker.
asString();
1253 auto const& idx = markerStr.
find(
',');
1254 auto const dirIndex = markerStr.substr(0, idx);
1255 auto const entryIndex = markerStr.substr(idx + 1);
1260 BEAST_EXPECT(testInvalidMarker(s));
1267 BEAST_EXPECT(testInvalidMarker(s));
1275 BEAST_EXPECT(testInvalidMarker(s));
1283 s = dirIndex +
',' + s;
1284 BEAST_EXPECT(testInvalidMarker(s));
1291 BEAST_EXPECT(testInvalidMarker(s));
1300 params[jss::account] = bob.
human();
1301 params[jss::limit] = limit;
1302 params[jss::marker] = s;
1303 params[jss::ledger_index] =
"validated";
1304 auto resp = env.
rpc(
"json",
"account_objects",
to_string(params));
1305 auto& accountObjects = resp[jss::result][jss::account_objects];
1306 BEAST_EXPECT(!resp[jss::result].isMember(jss::error));
1307 BEAST_EXPECT(accountObjects.size() == limit);
1314 BEAST_EXPECT(testInvalidMarker(s));
1321 BEAST_EXPECT(testInvalidMarker(s));
1328 params[jss::account] = bob.
human();
1329 params[jss::limit] = limit;
1330 params[jss::marker] = marker;
1331 params[jss::ledger_index] =
"validated";
1332 auto resp = env.
rpc(
"json",
"account_objects",
to_string(params));
1333 auto& accountObjects = resp[jss::result][jss::account_objects];
1334 BEAST_EXPECT(!resp[jss::result].isMember(jss::error));
1335 BEAST_EXPECT(accountObjects.size() == accountObjectSize - (limit * 2));
1336 BEAST_EXPECT(!resp[jss::result].isMember(jss::marker));
1343 params[jss::account] = carol.
human();
1344 params[jss::limit] = 10;
1345 params[jss::marker] =
"0," + entryIndex;
1346 params[jss::ledger_index] =
"validated";
1347 auto resp = env.
rpc(
"json",
"account_objects",
to_string(params));
1348 auto& accountObjects = resp[jss::result][jss::account_objects];
1349 BEAST_EXPECT(accountObjects.size() == 0);