21 #include <test/jtx/Env.h>
22 #include <test/jtx/envconfig.h>
23 #include <ripple/protocol/jss.h>
24 #include <boost/container/static_vector.hpp>
34 testcase(
"Invalid request params");
35 using namespace test::jtx;
36 Env env {*
this, envconfig(no_admin)};
40 auto const result = env.client()
41 .invoke(
"tx_history", {})[jss::result];
42 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
43 BEAST_EXPECT(result[jss::status] ==
"error");
49 params[jss::start] = 10001;
50 auto const result = env.client()
51 .invoke(
"tx_history", params)[jss::result];
52 BEAST_EXPECT(result[jss::error] ==
"noPermission");
53 BEAST_EXPECT(result[jss::status] ==
"error");
59 testcase(
"Basic request");
60 using namespace test::jtx;
65 size_t const numAccounts = 20;
66 boost::container::static_vector<Account, numAccounts> accounts;
67 for(
size_t i = 0; i<numAccounts; ++i)
70 auto const& acct=accounts.back();
71 env.fund(XRP(10000), acct);
75 auto const& prev=accounts[i-1];
76 env.trust(acct[
"USD"](1000), prev);
77 env(pay(acct, prev, acct[
"USD"](5)));
79 env(offer(acct, XRP(100), acct[
"USD"](1)));
85 params[jss::start] = 0;
87 env.client().invoke(
"tx_history", params)[jss::result];
88 if(! BEAST_EXPECT(result[jss::txs].isArray() &&
89 result[jss::txs].size() > 0))
93 bool const txFound = [&] {
95 for (
auto tx : result[jss::txs])
97 tx.removeMember(jss::inLedger);
98 tx.removeMember(jss::ledger_index);
104 BEAST_EXPECT(txFound);
107 unsigned int start = 0;
108 unsigned int total = 0;
114 params[jss::start] = start;
116 env.client().invoke(
"tx_history", params)[jss::result];
117 if(! BEAST_EXPECT(result[jss::txs].isArray() &&
118 result[jss::txs].size() > 0))
120 total += result[jss::txs].size();
122 for (
auto const& t : result[jss::txs])
127 BEAST_EXPECT(total == 117);
128 BEAST_EXPECT(typeCounts[jss::AccountSet.c_str()] == 20);
129 BEAST_EXPECT(typeCounts[jss::TrustSet.c_str()] == 19);
130 BEAST_EXPECT(typeCounts[jss::Payment.c_str()] == 58);
131 BEAST_EXPECT(typeCounts[jss::OfferCreate.c_str()] == 20);
136 params[jss::start] = 10000;
137 auto const result = env.client()
138 .invoke(
"tx_history", params)[jss::result];
139 BEAST_EXPECT(result[jss::status] ==
"success");
140 BEAST_EXPECT(result[jss::index] == 10000);