37 using namespace test::jtx;
39 cfg->FEES.reference_fee = 10;
46 env.client().invoke(
"transaction_entry", {})[jss::result];
47 BEAST_EXPECT(result[jss::error] ==
"fieldNotFoundTransaction");
48 BEAST_EXPECT(result[jss::status] ==
"error");
53 params[jss::ledger] = 20;
55 env.client().invoke(
"transaction_entry", params)[jss::result];
56 BEAST_EXPECT(result[jss::error] ==
"lgrNotFound");
57 BEAST_EXPECT(result[jss::status] ==
"error");
62 params[jss::ledger] =
"current";
63 params[jss::tx_hash] =
"DEADBEEF";
65 env.client().invoke(
"transaction_entry", params)[jss::result];
66 BEAST_EXPECT(result[jss::error] ==
"notYetImplemented");
67 BEAST_EXPECT(result[jss::status] ==
"error");
72 params[jss::ledger] =
"closed";
73 params[jss::tx_hash] =
"DEADBEEF";
75 env.client().invoke(
"transaction_entry", params)[jss::result];
76 BEAST_EXPECT(!result[jss::ledger_hash].asString().empty());
77 BEAST_EXPECT(result[jss::error] ==
"malformedRequest");
78 BEAST_EXPECT(result[jss::status] ==
"error");
82 "E2FE8D4AF3FCC3944DDF6CD8CDDC5E3F0AD50863EF8919AFEF10CB6408CD4D05"};
87 Json::Value const result{env.rpc(
"transaction_entry")};
88 BEAST_EXPECT(result[jss::ledger_hash].asString().empty());
89 BEAST_EXPECT(result[jss::error] ==
"badSyntax");
90 BEAST_EXPECT(result[jss::status] ==
"error");
95 Json::Value const result{env.rpc(
"transaction_entry", txHash)};
96 BEAST_EXPECT(result[jss::error] ==
"badSyntax");
97 BEAST_EXPECT(result[jss::status] ==
"error");
103 env.rpc(
"transaction_entry", txHash.substr(1),
"closed")};
104 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
105 BEAST_EXPECT(result[jss::status] ==
"error");
111 env.rpc(
"transaction_entry", txHash +
"A",
"closed")};
112 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
113 BEAST_EXPECT(result[jss::status] ==
"error");
119 env.rpc(
"transaction_entry", txHash,
"closer")};
120 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
121 BEAST_EXPECT(result[jss::status] ==
"error");
126 Json::Value const result{env.rpc(
"transaction_entry", txHash,
"0")};
127 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
128 BEAST_EXPECT(result[jss::status] ==
"error");
134 env.rpc(
"transaction_entry", txHash,
"closed",
"extra")};
135 BEAST_EXPECT(result[jss::error] ==
"badSyntax");
136 BEAST_EXPECT(result[jss::status] ==
"error");
142 env.rpc(
"transaction_entry", txHash,
"closed")};
144 !result[jss::result][jss::ledger_hash].asString().empty());
146 result[jss::result][jss::error] ==
"transactionNotFound");
147 BEAST_EXPECT(result[jss::result][jss::status] ==
"error");
155 using namespace test::jtx;
157 cfg->FEES.reference_fee = 10;
161 auto check_tx = [
this, &env, apiVersion](
168 Json::Value const resIndex{[&env, index, &txhash, apiVersion]() {
170 params[jss::ledger_index] = index;
171 params[jss::tx_hash] = txhash;
172 params[jss::api_version] = apiVersion;
173 return env.client().invoke(
174 "transaction_entry", params)[jss::result];
177 if (!BEAST_EXPECT(resIndex.isMember(jss::tx_json)))
180 BEAST_EXPECT(resIndex[jss::validated] ==
true);
181 BEAST_EXPECT(resIndex[jss::ledger_index] == index);
182 BEAST_EXPECT(resIndex[jss::ledger_hash] == expected_ledger_hash);
185 BEAST_EXPECT(resIndex[jss::hash] == txhash);
186 BEAST_EXPECT(!resIndex[jss::tx_json].isMember(jss::hash));
187 BEAST_EXPECT(!resIndex[jss::tx_json].isMember(jss::Amount));
189 if (BEAST_EXPECT(!close_time_iso.
empty()))
191 resIndex[jss::close_time_iso] == close_time_iso);
195 BEAST_EXPECT(resIndex[jss::tx_json][jss::hash] == txhash);
196 BEAST_EXPECT(!resIndex.isMember(jss::hash));
197 BEAST_EXPECT(!resIndex.isMember(jss::close_time_iso));
200 if (!expected_json.empty())
205 Throw<std::runtime_error>(
206 "Internal JSONRPC_test error. Bad test JSON.");
208 for (
auto memberIt = expected.
begin();
209 memberIt != expected.
end();
212 auto const name = memberIt.memberName();
213 if (BEAST_EXPECT(resIndex[jss::tx_json].isMember(name)))
215 auto const received = resIndex[jss::tx_json][name];
217 received == *memberIt,
218 txhash +
" contains \n\"" + name +
"\": "
230 params[jss::ledger_hash] = resIndex[jss::ledger_hash];
231 params[jss::tx_hash] = txhash;
232 params[jss::api_version] = apiVersion;
234 "transaction_entry", params)[jss::result];
235 BEAST_EXPECT(resHash == resIndex);
244 BEAST_EXPECT(clIndex[
"result"] == resIndex);
251 resIndex[jss::ledger_hash].asString())};
252 BEAST_EXPECT(clHash[
"result"] == resIndex);
258 env.fund(XRP(10000), A1);
259 auto fund_1_tx =
to_string(env.tx()->getTransactionID());
262 "F4E9DF90D829A9E8B423FF68C34413E240D8D8BB0EFD080DF08114ED398E2506");
264 env.fund(XRP(10000), A2);
265 auto fund_2_tx =
to_string(env.tx()->getTransactionID());
268 "6853CD8226A05068C951CB1F54889FF4E40C5B440DC1C5BA38F114C4E0B1E705");
278 "Account" : "r4nmQNH4Fhjfh6cHDbvVSsBv7KySbj4cBf",
282 "SigningPubKey" : "0324CAAFA2212D2AEAB9D42D481535614AED486293E1FB1380FF070C3DD7FB4264",
283 "TransactionType" : "AccountSet",
284 "TxnSignature" : "3044022007B35E3B99460534FF6BC3A66FBBA03591C355CC38E38588968E87CCD01BE229022071A443026DE45041B55ABB1CC76812A87EA701E475BBB7E165513B4B242D3474",
286 "ADB727BCC74B29421BB01B847740B179B8A0ED3248D76A89ED2E39B02C427784",
287 "2000-01-01T00:00:10Z");
292 "Account" : "rGpeQzUWFu4fMhJHZ1Via5aqFC3A5twZUD",
296 "SigningPubKey" : "03CFF28E067A2CCE6CC5A598C0B845CBD3F30A7863BE9C0DD55F4960EFABCCF4D0",
297 "TransactionType" : "AccountSet",
298 "TxnSignature" : "3045022100C8857FC0759A2AC0D2F320684691A66EAD252EAED9EF88C79791BC58BFCC9D860220421722286487DD0ED6BBA626CE6FCBDD14289F7F4726870C3465A4054C2702D7",
300 "ADB727BCC74B29421BB01B847740B179B8A0ED3248D76A89ED2E39B02C427784",
301 "2000-01-01T00:00:10Z");
303 env.trust(A2[
"USD"](1000), A1);
307 auto trust_tx =
to_string(env.tx()->getTransactionID());
310 "C992D97D88FF444A1AB0C06B27557EC54B7F7DA28254778E60238BEA88E0C101");
312 env(pay(A2, A1, A2[
"USD"](5)));
313 auto pay_tx =
to_string(env.tx()->getTransactionID());
317 "988046D484ACE9F5F6A8C792D89C6EA2DB307B5DDA9864AEBA88E6782ABD0865");
323 "Account" : "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
325 "Destination" : "r4nmQNH4Fhjfh6cHDbvVSsBv7KySbj4cBf",
327 "Flags" : 2147483648,
329 "SigningPubKey" : "0330E7FC9D56BB25D6893BA3F317AE5BCF33B3291BD63DB32654A313222F7FD020",
330 "TransactionType" : "Payment",