21 #include <ripple/beast/unit_test.h>
22 #include <ripple/protocol/AccountID.h>
23 #include <ripple/protocol/STAmount.h>
24 #include <ripple/protocol/jss.h>
33 testcase(
"Bad input to owner_info");
35 using namespace test::jtx;
38 auto const alice = Account{
"alice"};
39 env.fund(XRP(10000), alice);
44 env.rpc(
"json",
"owner_info",
"{}")[jss::result];
45 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
47 result[jss::error_message] ==
"Missing field 'account'.");
52 params[jss::account] =
"";
54 env.rpc(
"json",
"owner_info",
to_string(params))[jss::result];
56 result.isMember(jss::accepted) &&
57 result.isMember(jss::current)))
60 result[jss::accepted][jss::error] ==
"actMalformed");
62 result[jss::accepted][jss::error_message] ==
63 "Account malformed.");
65 result[jss::current][jss::error] ==
"actMalformed");
67 result[jss::current][jss::error_message] ==
68 "Account malformed.");
76 params[jss::account] = Account{
"bob"}.human();
78 env.rpc(
"json",
"owner_info",
to_string(params))[jss::result];
81 BEAST_EXPECT(result[jss::status] ==
"success");
88 testcase(
"Basic request for owner_info");
90 using namespace test::jtx;
93 auto const alice = Account{
"alice"};
94 auto const gw = Account{
"gateway"};
95 env.fund(XRP(10000), alice, gw);
96 auto const USD = gw[
"USD"];
97 auto const CNY = gw[
"CNY"];
98 env(trust(alice, USD(1000)));
99 env(trust(alice, CNY(1000)));
100 env(offer(alice, USD(1), XRP(1000)));
103 env(pay(gw, alice, USD(50)));
104 env(pay(gw, alice, CNY(50)));
105 env(offer(alice, CNY(2), XRP(1000)));
108 params[jss::account] = alice.human();
110 env.rpc(
"json",
"owner_info",
to_string(params))[jss::result];
112 result.isMember(jss::accepted) &&
113 result.isMember(jss::current)))
119 if (!BEAST_EXPECT(result[jss::accepted].isMember(jss::ripple_lines)))
121 auto lines = result[jss::accepted][jss::ripple_lines];
122 if (!BEAST_EXPECT(lines.isArray() && lines.size() == 2))
127 (
STAmount{Issue{to_currency(
"CNY"), noAccount()}, 0}
139 (
STAmount{Issue{to_currency(
"USD"), noAccount()}, 0}
149 if (!BEAST_EXPECT(result[jss::accepted].isMember(jss::offers)))
151 auto offers = result[jss::accepted][jss::offers];
152 if (!BEAST_EXPECT(offers.isArray() && offers.size() == 1))
155 BEAST_EXPECT(offers[0u][jss::Account] == alice.human());
164 if (!BEAST_EXPECT(result[jss::current].isMember(jss::ripple_lines)))
166 lines = result[jss::current][jss::ripple_lines];
167 if (!BEAST_EXPECT(lines.isArray() && lines.size() == 2))
172 (STAmount{Issue{to_currency(
"CNY"), noAccount()}, -50}
184 (STAmount{Issue{to_currency(
"USD"), noAccount()}, -50}
194 if (!BEAST_EXPECT(result[jss::current].isMember(jss::offers)))
196 offers = result[jss::current][jss::offers];
198 if (!BEAST_EXPECT(
offers.isArray() &&
offers.size() == 2))
201 BEAST_EXPECT(offers[1u] == result[jss::accepted][jss::offers][0u]);
202 BEAST_EXPECT(offers[0u][jss::Account] == alice.human());
220 BEAST_DEFINE_TESTSUITE(OwnerInfo, app,
ripple);