21 #include <test/jtx/Env.h>
22 #include <ripple/protocol/jss.h>
31 testcase(
"Invalid request params");
32 using namespace test::jtx;
37 auto const result = env.client()
38 .invoke(
"transaction_entry", {})[jss::result];
39 BEAST_EXPECT(result[jss::error] ==
"fieldNotFoundTransaction");
40 BEAST_EXPECT(result[jss::status] ==
"error");
45 params[jss::ledger] = 20;
46 auto const result = env.client()
47 .invoke(
"transaction_entry", params)[jss::result];
48 BEAST_EXPECT(result[jss::error] ==
"lgrNotFound");
49 BEAST_EXPECT(result[jss::status] ==
"error");
54 params[jss::ledger] =
"current";
55 params[jss::tx_hash] =
"DEADBEEF";
56 auto const result = env.client()
57 .invoke(
"transaction_entry", params)[jss::result];
58 BEAST_EXPECT(result[jss::error] ==
"notYetImplemented");
59 BEAST_EXPECT(result[jss::status] ==
"error");
64 params[jss::ledger] =
"closed";
65 params[jss::tx_hash] =
"DEADBEEF";
66 auto const result = env.client()
67 .invoke(
"transaction_entry", params)[jss::result];
68 BEAST_EXPECT(! result[jss::ledger_hash].asString().empty());
69 BEAST_EXPECT(result[jss::error] ==
"transactionNotFound");
70 BEAST_EXPECT(result[jss::status] ==
"error");
74 "E2FE8D4AF3FCC3944DDF6CD8CDDC5E3F0AD50863EF8919AFEF10CB6408CD4D05"};
79 Json::Value const result {env.rpc (
"transaction_entry")};
80 BEAST_EXPECT(result[jss::ledger_hash].asString().empty());
81 BEAST_EXPECT(result[jss::error] ==
"badSyntax");
82 BEAST_EXPECT(result[jss::status] ==
"error");
87 Json::Value const result {env.rpc (
"transaction_entry", txHash)};
88 BEAST_EXPECT(result[jss::error] ==
"badSyntax");
89 BEAST_EXPECT(result[jss::status] ==
"error");
95 "transaction_entry", txHash.substr (1),
"closed")};
96 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
97 BEAST_EXPECT(result[jss::status] ==
"error");
103 "transaction_entry", txHash +
"A",
"closed")};
104 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
105 BEAST_EXPECT(result[jss::status] ==
"error");
111 "transaction_entry", txHash,
"closer")};
112 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
113 BEAST_EXPECT(result[jss::status] ==
"error");
119 "transaction_entry", txHash,
"0")};
120 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
121 BEAST_EXPECT(result[jss::status] ==
"error");
127 "transaction_entry", txHash,
"closed",
"extra")};
128 BEAST_EXPECT(result[jss::error] ==
"badSyntax");
129 BEAST_EXPECT(result[jss::status] ==
"error");
135 "transaction_entry", txHash,
"closed")};
137 ! result[jss::result][jss::ledger_hash].asString().empty());
139 result[jss::result][jss::error] ==
"transactionNotFound");
140 BEAST_EXPECT(result[jss::result][jss::status] ==
"error");
146 testcase(
"Basic request");
147 using namespace test::jtx;
150 auto check_tx = [
this, &env]
154 Json::Value const resIndex {[&env, index, &txhash] ()
157 params[jss::ledger_index] = index;
158 params[jss::tx_hash] = txhash;
160 .invoke(
"transaction_entry", params)[jss::result];
163 if(! BEAST_EXPECTS(resIndex.isMember(jss::tx_json), txhash))
166 BEAST_EXPECT(resIndex[jss::tx_json][jss::hash] == txhash);
170 resIndex[jss::tx_json][jss::TransactionType] == type,
172 resIndex[jss::tx_json][jss::TransactionType].asString());
179 params[jss::ledger_hash] = resIndex[jss::ledger_hash];
180 params[jss::tx_hash] = txhash;
182 .invoke(
"transaction_entry", params)[jss::result];
183 BEAST_EXPECT(resHash == resIndex);
190 BEAST_EXPECT (clIndex[
"result"] == resIndex);
196 "transaction_entry", txhash,
197 resIndex[jss::ledger_hash].asString())};
198 BEAST_EXPECT (clHash[
"result"] == resIndex);
205 env.fund(XRP(10000), A1);
207 boost::lexical_cast<std::string>(env.tx()->getTransactionID());
209 env.fund(XRP(10000), A2);
211 boost::lexical_cast<std::string>(env.tx()->getTransactionID());
217 check_tx(env.closed()->seq(), fund_1_tx);
218 check_tx(env.closed()->seq(), fund_2_tx);
220 env.trust(A2[
"USD"](1000), A1);
225 boost::lexical_cast<std::string>(env.tx()->getTransactionID());
227 env(pay(A2, A1, A2[
"USD"](5)));
229 boost::lexical_cast<std::string>(env.tx()->getTransactionID());
232 check_tx(env.closed()->seq(), trust_tx);
233 check_tx(env.closed()->seq(), pay_tx, jss::Payment.c_str());
235 env(offer(A2, XRP(100), A2[
"USD"](1)));
237 boost::lexical_cast<std::string>(env.tx()->getTransactionID());
241 check_tx(env.closed()->seq(), offer_tx, jss::OfferCreate.c_str());