18 using namespace test::jtx;
20 cfg->FEES.reference_fee = 10;
27 env.client().invoke(
"transaction_entry", {})[jss::result];
28 BEAST_EXPECT(result[jss::error] ==
"fieldNotFoundTransaction");
29 BEAST_EXPECT(result[jss::status] ==
"error");
34 params[jss::ledger] = 20;
36 env.client().invoke(
"transaction_entry", params)[jss::result];
37 BEAST_EXPECT(result[jss::error] ==
"lgrNotFound");
38 BEAST_EXPECT(result[jss::status] ==
"error");
43 params[jss::ledger] =
"current";
44 params[jss::tx_hash] =
"DEADBEEF";
46 env.client().invoke(
"transaction_entry", params)[jss::result];
47 BEAST_EXPECT(result[jss::error] ==
"notYetImplemented");
48 BEAST_EXPECT(result[jss::status] ==
"error");
53 params[jss::ledger] =
"closed";
54 params[jss::tx_hash] =
"DEADBEEF";
56 env.client().invoke(
"transaction_entry", params)[jss::result];
57 BEAST_EXPECT(!result[jss::ledger_hash].asString().empty());
58 BEAST_EXPECT(result[jss::error] ==
"malformedRequest");
59 BEAST_EXPECT(result[jss::status] ==
"error");
63 "E2FE8D4AF3FCC3944DDF6CD8CDDC5E3F0AD50863EF8919AFEF10CB6408CD4D05"};
68 Json::Value const result{env.rpc(
"transaction_entry")};
69 BEAST_EXPECT(result[jss::ledger_hash].asString().empty());
70 BEAST_EXPECT(result[jss::error] ==
"badSyntax");
71 BEAST_EXPECT(result[jss::status] ==
"error");
76 Json::Value const result{env.rpc(
"transaction_entry", txHash)};
77 BEAST_EXPECT(result[jss::error] ==
"badSyntax");
78 BEAST_EXPECT(result[jss::status] ==
"error");
84 env.rpc(
"transaction_entry", txHash.substr(1),
"closed")};
85 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
86 BEAST_EXPECT(result[jss::status] ==
"error");
92 env.rpc(
"transaction_entry", txHash +
"A",
"closed")};
93 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
94 BEAST_EXPECT(result[jss::status] ==
"error");
100 env.rpc(
"transaction_entry", txHash,
"closer")};
101 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
102 BEAST_EXPECT(result[jss::status] ==
"error");
107 Json::Value const result{env.rpc(
"transaction_entry", txHash,
"0")};
108 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
109 BEAST_EXPECT(result[jss::status] ==
"error");
115 env.rpc(
"transaction_entry", txHash,
"closed",
"extra")};
116 BEAST_EXPECT(result[jss::error] ==
"badSyntax");
117 BEAST_EXPECT(result[jss::status] ==
"error");
123 env.rpc(
"transaction_entry", txHash,
"closed")};
125 !result[jss::result][jss::ledger_hash].asString().empty());
127 result[jss::result][jss::error] ==
"transactionNotFound");
128 BEAST_EXPECT(result[jss::result][jss::status] ==
"error");
136 using namespace test::jtx;
138 cfg->FEES.reference_fee = 10;
142 auto check_tx = [
this, &env, apiVersion](
149 Json::Value const resIndex{[&env, index, &txhash, apiVersion]() {
151 params[jss::ledger_index] = index;
152 params[jss::tx_hash] = txhash;
153 params[jss::api_version] = apiVersion;
154 return env.client().invoke(
155 "transaction_entry", params)[jss::result];
158 if (!BEAST_EXPECT(resIndex.isMember(jss::tx_json)))
161 BEAST_EXPECT(resIndex[jss::validated] ==
true);
162 BEAST_EXPECT(resIndex[jss::ledger_index] == index);
163 BEAST_EXPECT(resIndex[jss::ledger_hash] == expected_ledger_hash);
166 BEAST_EXPECT(resIndex[jss::hash] == txhash);
167 BEAST_EXPECT(!resIndex[jss::tx_json].isMember(jss::hash));
168 BEAST_EXPECT(!resIndex[jss::tx_json].isMember(jss::Amount));
170 if (BEAST_EXPECT(!close_time_iso.
empty()))
172 resIndex[jss::close_time_iso] == close_time_iso);
176 BEAST_EXPECT(resIndex[jss::tx_json][jss::hash] == txhash);
177 BEAST_EXPECT(!resIndex.isMember(jss::hash));
178 BEAST_EXPECT(!resIndex.isMember(jss::close_time_iso));
181 if (!expected_json.empty())
186 Throw<std::runtime_error>(
187 "Internal JSONRPC_test error. Bad test JSON.");
189 for (
auto memberIt = expected.
begin();
190 memberIt != expected.
end();
193 auto const name = memberIt.memberName();
194 if (BEAST_EXPECT(resIndex[jss::tx_json].isMember(name)))
196 auto const received = resIndex[jss::tx_json][name];
198 received == *memberIt,
199 txhash +
" contains \n\"" + name +
"\": "
211 params[jss::ledger_hash] = resIndex[jss::ledger_hash];
212 params[jss::tx_hash] = txhash;
213 params[jss::api_version] = apiVersion;
215 "transaction_entry", params)[jss::result];
216 BEAST_EXPECT(resHash == resIndex);
225 BEAST_EXPECT(clIndex[
"result"] == resIndex);
232 resIndex[jss::ledger_hash].asString())};
233 BEAST_EXPECT(clHash[
"result"] == resIndex);
239 env.fund(XRP(10000), A1);
240 auto fund_1_tx =
to_string(env.tx()->getTransactionID());
243 "F4E9DF90D829A9E8B423FF68C34413E240D8D8BB0EFD080DF08114ED398E2506");
245 env.fund(XRP(10000), A2);
246 auto fund_2_tx =
to_string(env.tx()->getTransactionID());
249 "6853CD8226A05068C951CB1F54889FF4E40C5B440DC1C5BA38F114C4E0B1E705");
259 "Account" : "r4nmQNH4Fhjfh6cHDbvVSsBv7KySbj4cBf",
263 "SigningPubKey" : "0324CAAFA2212D2AEAB9D42D481535614AED486293E1FB1380FF070C3DD7FB4264",
264 "TransactionType" : "AccountSet",
265 "TxnSignature" : "3044022007B35E3B99460534FF6BC3A66FBBA03591C355CC38E38588968E87CCD01BE229022071A443026DE45041B55ABB1CC76812A87EA701E475BBB7E165513B4B242D3474",
267 "ADB727BCC74B29421BB01B847740B179B8A0ED3248D76A89ED2E39B02C427784",
268 "2000-01-01T00:00:10Z");
273 "Account" : "rGpeQzUWFu4fMhJHZ1Via5aqFC3A5twZUD",
277 "SigningPubKey" : "03CFF28E067A2CCE6CC5A598C0B845CBD3F30A7863BE9C0DD55F4960EFABCCF4D0",
278 "TransactionType" : "AccountSet",
279 "TxnSignature" : "3045022100C8857FC0759A2AC0D2F320684691A66EAD252EAED9EF88C79791BC58BFCC9D860220421722286487DD0ED6BBA626CE6FCBDD14289F7F4726870C3465A4054C2702D7",
281 "ADB727BCC74B29421BB01B847740B179B8A0ED3248D76A89ED2E39B02C427784",
282 "2000-01-01T00:00:10Z");
284 env.trust(A2[
"USD"](1000), A1);
288 auto trust_tx =
to_string(env.tx()->getTransactionID());
291 "C992D97D88FF444A1AB0C06B27557EC54B7F7DA28254778E60238BEA88E0C101");
293 env(pay(A2, A1, A2[
"USD"](5)));
294 auto pay_tx =
to_string(env.tx()->getTransactionID());
298 "988046D484ACE9F5F6A8C792D89C6EA2DB307B5DDA9864AEBA88E6782ABD0865");
304 "Account" : "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
306 "Destination" : "r4nmQNH4Fhjfh6cHDbvVSsBv7KySbj4cBf",
308 "Flags" : 2147483648,
310 "SigningPubKey" : "0330E7FC9D56BB25D6893BA3F317AE5BCF33B3291BD63DB32654A313222F7FD020",
311 "TransactionType" : "Payment",