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",