17        using namespace test::jtx;
 
   20        auto const alice = Account{
"alice"};
 
   21        env.fund(XRP(10000), alice);
 
   26                env.rpc(
"json", 
"owner_info", 
"{}")[jss::result];
 
   27            BEAST_EXPECT(result[jss::error] == 
"invalidParams");
 
   29                result[jss::error_message] == 
"Missing field 'account'.");
 
   34            params[jss::account] = 
"";
 
   36                env.rpc(
"json", 
"owner_info", 
to_string(params))[jss::result];
 
   38                    result.isMember(jss::accepted) &&
 
   39                    result.isMember(jss::current)))
 
   42                    result[jss::accepted][jss::error] == 
"actMalformed");
 
   44                    result[jss::accepted][jss::error_message] ==
 
   45                    "Account malformed.");
 
   47                    result[jss::current][jss::error] == 
"actMalformed");
 
   49                    result[jss::current][jss::error_message] ==
 
   50                    "Account malformed.");
 
   58            params[jss::account] = Account{
"bob"}.human();
 
   60                env.rpc(
"json", 
"owner_info", 
to_string(params))[jss::result];
 
   63            BEAST_EXPECT(result[jss::status] == 
"success");
 
 
   70        testcase(
"Basic request for owner_info");
 
   72        using namespace test::jtx;
 
   75        auto const alice = Account{
"alice"};
 
   76        auto const gw = Account{
"gateway"};
 
   77        env.fund(XRP(10000), alice, gw);
 
   79        auto const USD = gw[
"USD"];
 
   80        auto const CNY = gw[
"CNY"];
 
   81        env(trust(alice, USD(1000)));
 
   82        env(trust(alice, CNY(1000)));
 
   83        env(offer(alice, USD(1), XRP(1000)));
 
   86        env(pay(gw, alice, USD(50)));
 
   87        env(pay(gw, alice, CNY(50)));
 
   88        env(offer(alice, CNY(2), XRP(1000)));
 
   91        params[jss::account] = alice.human();
 
   93            env.rpc(
"json", 
"owner_info", 
to_string(params))[jss::result];
 
   95                result.isMember(jss::accepted) &&
 
   96                result.isMember(jss::current)))
 
  102        if (!BEAST_EXPECT(result[jss::accepted].isMember(jss::ripple_lines)))
 
  104        auto lines = result[jss::accepted][jss::ripple_lines];
 
  105        if (!BEAST_EXPECT(lines.isArray() && lines.size() == 2))
 
  109            lines[0u][sfBalance.fieldName] ==
 
  110            (
STAmount{Issue{to_currency(
"CNY"), noAccount()}, 0}
 
  114            lines[0u][sfHighLimit.fieldName] ==
 
  117            lines[0u][sfLowLimit.fieldName] ==
 
  121            lines[1u][sfBalance.fieldName] ==
 
  122            (
STAmount{Issue{to_currency(
"USD"), noAccount()}, 0}
 
  126            lines[1u][sfHighLimit.fieldName] ==
 
  129            lines[1u][sfLowLimit.fieldName] ==
 
  132        if (!BEAST_EXPECT(result[jss::accepted].isMember(jss::offers)))
 
  134        auto offers = result[jss::accepted][jss::offers];
 
  135        if (!BEAST_EXPECT(offers.isArray() && offers.size() == 1))
 
  138        BEAST_EXPECT(offers[0u][jss::Account] == alice.human());
 
  140            offers[0u][sfTakerGets.fieldName] ==
 
  143            offers[0u][sfTakerPays.fieldName] ==
 
  147        if (!BEAST_EXPECT(result[jss::current].isMember(jss::ripple_lines)))
 
  149        lines = result[jss::current][jss::ripple_lines];
 
  150        if (!BEAST_EXPECT(lines.isArray() && lines.size() == 2))
 
  154            lines[0u][sfBalance.fieldName] ==
 
  155            (STAmount{Issue{to_currency(
"CNY"), noAccount()}, -50}
 
  159            lines[0u][sfHighLimit.fieldName] ==
 
  160            alice[
"CNY"](1000).value().getJson(JsonOptions::none));
 
  162            lines[0u][sfLowLimit.fieldName] ==
 
  163            gw[
"CNY"](0).value().getJson(JsonOptions::none));
 
  166            lines[1u][sfBalance.fieldName] ==
 
  167            (STAmount{Issue{to_currency(
"USD"), noAccount()}, -50}
 
  171            lines[1u][sfHighLimit.fieldName] ==
 
  172            alice[
"USD"](1000).value().getJson(JsonOptions::none));
 
  174            lines[1u][sfLowLimit.fieldName] ==
 
  175            gw[
"USD"](0).value().getJson(JsonOptions::none));
 
  177        if (!BEAST_EXPECT(result[jss::current].isMember(jss::offers)))
 
  179        offers = result[jss::current][jss::offers];
 
  181        if (!BEAST_EXPECT(
offers.isArray() && 
offers.size() == 2))
 
  184        BEAST_EXPECT(offers[1u] == result[jss::accepted][jss::offers][0u]);
 
  185        BEAST_EXPECT(offers[0u][jss::Account] == alice.human());
 
  187            offers[0u][sfTakerGets.fieldName] ==
 
  188            XRP(1000).value().
getJson(JsonOptions::none));
 
  190            offers[0u][sfTakerPays.fieldName] ==
 
  191            CNY(2).value().
getJson(JsonOptions::none));