20 #include <ripple/protocol/jss.h>
21 #include <boost/container/static_vector.hpp>
24 #include <test/jtx/Env.h>
25 #include <test/jtx/envconfig.h>
34 testcase(
"Invalid request params");
35 using namespace test::jtx;
36 Env env{*
this, envconfig(no_admin)};
41 env.client().invoke(
"tx_history", {})[jss::result];
42 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
43 BEAST_EXPECT(result[jss::status] ==
"error");
49 params[jss::start] = 10001;
51 env.client().invoke(
"tx_history", params)[jss::result];
52 BEAST_EXPECT(result[jss::error] ==
"noPermission");
53 BEAST_EXPECT(result[jss::status] ==
"error");
60 testcase(
"Basic request");
61 using namespace test::jtx;
66 size_t const numAccounts = 20;
67 boost::container::static_vector<Account, numAccounts> accounts;
68 for (
size_t i = 0; i < numAccounts; ++i)
71 auto const& acct = accounts.back();
72 env.fund(XRP(10000), acct);
76 auto const& prev = accounts[i - 1];
77 env.trust(acct[
"USD"](1000), prev);
78 env(pay(acct, prev, acct[
"USD"](5)));
80 env(offer(acct, XRP(100), acct[
"USD"](1)));
86 params[jss::start] = 0;
88 env.client().invoke(
"tx_history", params)[jss::result];
90 result[jss::txs].isArray() && result[jss::txs].size() > 0))
94 bool const txFound = [&] {
96 for (
auto tx : result[jss::txs])
98 tx.removeMember(jss::inLedger);
99 tx.removeMember(jss::ledger_index);
105 BEAST_EXPECT(txFound);
108 unsigned int start = 0;
109 unsigned int total = 0;
115 params[jss::start] = start;
117 env.client().invoke(
"tx_history", params)[jss::result];
119 result[jss::txs].isArray() && result[jss::txs].size() > 0))
121 total += result[jss::txs].size();
123 for (
auto const& t : result[jss::txs])
128 BEAST_EXPECT(total == 117);
129 BEAST_EXPECT(typeCounts[jss::AccountSet.c_str()] == 20);
130 BEAST_EXPECT(typeCounts[jss::TrustSet.c_str()] == 19);
131 BEAST_EXPECT(typeCounts[jss::Payment.c_str()] == 58);
132 BEAST_EXPECT(typeCounts[jss::OfferCreate.c_str()] == 20);
137 params[jss::start] = 10000;
139 env.client().invoke(
"tx_history", params)[jss::result];
140 BEAST_EXPECT(result[jss::status] ==
"success");
141 BEAST_EXPECT(result[jss::index] == 10000);