34 cfg->fees.referenceFee = 10;
40 auto const result = env.client().invoke(
"transaction_entry", {})[jss::result];
41 BEAST_EXPECT(result[jss::error] ==
"fieldNotFoundTransaction");
42 BEAST_EXPECT(result[jss::status] ==
"error");
47 params[jss::ledger] = 20;
48 auto const result = env.client().invoke(
"transaction_entry", params)[jss::result];
49 BEAST_EXPECT(result[jss::error] ==
"lgrNotFound");
50 BEAST_EXPECT(result[jss::status] ==
"error");
55 params[jss::ledger] =
"current";
56 params[jss::tx_hash] =
"DEADBEEF";
57 auto const result = env.client().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().invoke(
"transaction_entry", params)[jss::result];
67 BEAST_EXPECT(!result[jss::ledger_hash].asString().empty());
68 BEAST_EXPECT(result[jss::error] ==
"malformedRequest");
69 BEAST_EXPECT(result[jss::status] ==
"error");
73 "E2FE8D4AF3FCC3944DDF6CD8CDDC5E3F0AD50863EF8919AFEF10CB6408CD4D05"};
78 json::Value const result{env.rpc(
"transaction_entry")};
79 BEAST_EXPECT(result[jss::ledger_hash].asString().empty());
80 BEAST_EXPECT(result[jss::error] ==
"badSyntax");
81 BEAST_EXPECT(result[jss::status] ==
"error");
86 json::Value const result{env.rpc(
"transaction_entry", txHash)};
87 BEAST_EXPECT(result[jss::error] ==
"badSyntax");
88 BEAST_EXPECT(result[jss::status] ==
"error");
93 json::Value const result{env.rpc(
"transaction_entry", txHash.
substr(1),
"closed")};
94 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
95 BEAST_EXPECT(result[jss::status] ==
"error");
100 json::Value const result{env.rpc(
"transaction_entry", txHash +
"A",
"closed")};
101 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
102 BEAST_EXPECT(result[jss::status] ==
"error");
107 json::Value const result{env.rpc(
"transaction_entry", txHash,
"closer")};
108 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
109 BEAST_EXPECT(result[jss::status] ==
"error");
114 json::Value const result{env.rpc(
"transaction_entry", txHash,
"0")};
115 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
116 BEAST_EXPECT(result[jss::status] ==
"error");
121 json::Value const result{env.rpc(
"transaction_entry", txHash,
"closed",
"extra")};
122 BEAST_EXPECT(result[jss::error] ==
"badSyntax");
123 BEAST_EXPECT(result[jss::status] ==
"error");
128 json::Value const result{env.rpc(
"transaction_entry", txHash,
"closed")};
129 BEAST_EXPECT(!result[jss::result][jss::ledger_hash].asString().empty());
130 BEAST_EXPECT(result[jss::result][jss::error] ==
"transactionNotFound");
131 BEAST_EXPECT(result[jss::result][jss::status] ==
"error");
141 cfg->fees.referenceFee = 10;
145 auto checkTx = [
this, &env, apiVersion](
152 json::Value const resIndex{[&env, index, &txhash, apiVersion]() {
154 params[jss::ledger_index] = index;
155 params[jss::tx_hash] = txhash;
156 params[jss::api_version] = apiVersion;
157 return env.client().invoke(
"transaction_entry", params)[jss::result];
160 if (!BEAST_EXPECT(resIndex.
isMember(jss::tx_json)))
163 BEAST_EXPECT(resIndex[jss::validated] ==
true);
164 BEAST_EXPECT(resIndex[jss::ledger_index] == index);
165 BEAST_EXPECT(resIndex[jss::ledger_hash] == expectedLedgerHash);
168 BEAST_EXPECT(resIndex[jss::hash] == txhash);
169 BEAST_EXPECT(!resIndex[jss::tx_json].isMember(jss::hash));
170 BEAST_EXPECT(!resIndex[jss::tx_json].isMember(jss::Amount));
172 if (BEAST_EXPECT(!closeTimeIso.
empty()))
173 BEAST_EXPECT(resIndex[jss::close_time_iso] == closeTimeIso);
177 BEAST_EXPECT(resIndex[jss::tx_json][jss::hash] == txhash);
178 BEAST_EXPECT(!resIndex.
isMember(jss::hash));
179 BEAST_EXPECT(!resIndex.
isMember(jss::close_time_iso));
182 if (!expectedJson.empty())
189 for (
auto memberIt = expected.
begin(); memberIt != expected.
end(); memberIt++)
191 auto const name = memberIt.memberName();
192 if (BEAST_EXPECT(resIndex[jss::tx_json].isMember(name)))
194 auto const received = resIndex[jss::tx_json][name];
196 received == *memberIt,
197 txhash +
" contains \n\"" + name +
"\": "
209 params[jss::ledger_hash] = resIndex[jss::ledger_hash];
210 params[jss::tx_hash] = txhash;
211 params[jss::api_version] = apiVersion;
213 env.client().invoke(
"transaction_entry", params)[jss::result];
214 BEAST_EXPECT(resHash == resIndex);
219 env.rpc(apiVersion,
"transaction_entry", txhash,
std::to_string(index))};
220 BEAST_EXPECT(clIndex[
"result"] == resIndex);
224 apiVersion,
"transaction_entry", txhash, resIndex[jss::ledger_hash].asString())};
225 BEAST_EXPECT(clHash[
"result"] == resIndex);
231 env.fund(XRP(10000), a1);
232 auto fund1Tx =
to_string(env.tx()->getTransactionID());
233 BEAST_EXPECT(fund1Tx ==
"F4E9DF90D829A9E8B423FF68C34413E240D8D8BB0EFD080DF08114ED398E2506");
235 env.fund(XRP(10000), a2);
236 auto fund2Tx =
to_string(env.tx()->getTransactionID());
237 BEAST_EXPECT(fund2Tx ==
"6853CD8226A05068C951CB1F54889FF4E40C5B440DC1C5BA38F114C4E0B1E705");
247 "Account" : "r4nmQNH4Fhjfh6cHDbvVSsBv7KySbj4cBf",
251 "SigningPubKey" : "0324CAAFA2212D2AEAB9D42D481535614AED486293E1FB1380FF070C3DD7FB4264",
252 "TransactionType" : "AccountSet",
253 "TxnSignature" : "3044022007B35E3B99460534FF6BC3A66FBBA03591C355CC38E38588968E87CCD01BE229022071A443026DE45041B55ABB1CC76812A87EA701E475BBB7E165513B4B242D3474",
255 "ADB727BCC74B29421BB01B847740B179B8A0ED3248D76A89ED2E39B02C427784",
256 "2000-01-01T00:00:10Z");
261 "Account" : "rGpeQzUWFu4fMhJHZ1Via5aqFC3A5twZUD",
265 "SigningPubKey" : "03CFF28E067A2CCE6CC5A598C0B845CBD3F30A7863BE9C0DD55F4960EFABCCF4D0",
266 "TransactionType" : "AccountSet",
267 "TxnSignature" : "3045022100C8857FC0759A2AC0D2F320684691A66EAD252EAED9EF88C79791BC58BFCC9D860220421722286487DD0ED6BBA626CE6FCBDD14289F7F4726870C3465A4054C2702D7",
269 "ADB727BCC74B29421BB01B847740B179B8A0ED3248D76A89ED2E39B02C427784",
270 "2000-01-01T00:00:10Z");
272 env.trust(a2[
"USD"](1000), a1);
276 auto trustTx =
to_string(env.tx()->getTransactionID());
277 BEAST_EXPECT(trustTx ==
"C992D97D88FF444A1AB0C06B27557EC54B7F7DA28254778E60238BEA88E0C101");
279 env(pay(a2, a1, a2[
"USD"](5)));
280 auto payTx =
to_string(env.tx()->getTransactionID());
282 BEAST_EXPECT(payTx ==
"988046D484ACE9F5F6A8C792D89C6EA2DB307B5DDA9864AEBA88E6782ABD0865");
288 "Account" : "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
290 "Destination" : "r4nmQNH4Fhjfh6cHDbvVSsBv7KySbj4cBf",
292 "Flags" : 2147483648,