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(
"Command retired from API v2");
61 using namespace test::jtx;
62 Env env{*
this, envconfig(no_admin)};
65 params[jss::api_version] = 2;
67 env.client().invoke(
"tx_history", params)[jss::result];
68 BEAST_EXPECT(result[jss::error] ==
"unknownCmd");
69 BEAST_EXPECT(result[jss::status] ==
"error");
75 testcase(
"Basic request");
76 using namespace test::jtx;
81 size_t const numAccounts = 20;
82 boost::container::static_vector<Account, numAccounts> accounts;
83 for (
size_t i = 0; i < numAccounts; ++i)
86 auto const& acct = accounts.back();
87 env.fund(XRP(10000), acct);
91 auto const& prev = accounts[i - 1];
92 env.trust(acct[
"USD"](1000), prev);
93 env(pay(acct, prev, acct[
"USD"](5)));
95 env(offer(acct, XRP(100), acct[
"USD"](1)));
101 params[jss::start] = 0;
103 env.client().invoke(
"tx_history", params)[jss::result];
105 result[jss::txs].isArray() && result[jss::txs].size() > 0))
109 bool const txFound = [&] {
111 for (
auto tx : result[jss::txs])
113 tx.removeMember(jss::inLedger);
114 tx.removeMember(jss::ledger_index);
120 BEAST_EXPECT(txFound);
123 unsigned int start = 0;
124 unsigned int total = 0;
130 params[jss::start] = start;
132 env.client().invoke(
"tx_history", params)[jss::result];
134 result[jss::txs].isArray() && result[jss::txs].size() > 0))
136 total += result[jss::txs].size();
138 for (
auto const& t : result[jss::txs])
143 BEAST_EXPECT(total == 117);
144 BEAST_EXPECT(typeCounts[jss::AccountSet.c_str()] == 20);
145 BEAST_EXPECT(typeCounts[jss::TrustSet.c_str()] == 19);
146 BEAST_EXPECT(typeCounts[jss::Payment.c_str()] == 58);
147 BEAST_EXPECT(typeCounts[jss::OfferCreate.c_str()] == 20);
152 params[jss::start] = 10000;
154 env.client().invoke(
"tx_history", params)[jss::result];
155 BEAST_EXPECT(result[jss::status] ==
"success");
156 BEAST_EXPECT(result[jss::index] == 10000);