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)))
59 BEAST_EXPECT(result[jss::accepted][jss::error] ==
"badSeed");
61 result[jss::accepted][jss::error_message] ==
63 BEAST_EXPECT(result[jss::current][jss::error] ==
"badSeed");
65 result[jss::current][jss::error_message] ==
74 params[jss::account] = Account{
"bob"}.human();
76 env.rpc(
"json",
"owner_info",
to_string(params))[jss::result];
79 BEAST_EXPECT(result[jss::status] ==
"success");
86 testcase(
"Basic request for owner_info");
88 using namespace test::jtx;
91 auto const alice = Account{
"alice"};
92 auto const gw = Account{
"gateway"};
93 env.fund(XRP(10000), alice, gw);
94 auto const USD = gw[
"USD"];
95 auto const CNY = gw[
"CNY"];
96 env(trust(alice, USD(1000)));
97 env(trust(alice, CNY(1000)));
98 env(offer(alice, USD(1), XRP(1000)));
101 env(pay(gw, alice, USD(50)));
102 env(pay(gw, alice, CNY(50)));
103 env(offer(alice, CNY(2), XRP(1000)));
106 params[jss::account] = alice.human();
108 env.rpc(
"json",
"owner_info",
to_string(params))[jss::result];
110 result.isMember(jss::accepted) &&
111 result.isMember(jss::current)))
117 if (!BEAST_EXPECT(result[jss::accepted].isMember(jss::ripple_lines)))
119 auto lines = result[jss::accepted][jss::ripple_lines];
120 if (!BEAST_EXPECT(lines.isArray() && lines.size() == 2))
125 (
STAmount{Issue{to_currency(
"CNY"), noAccount()}, 0}
137 (
STAmount{Issue{to_currency(
"USD"), noAccount()}, 0}
147 if (!BEAST_EXPECT(result[jss::accepted].isMember(jss::offers)))
149 auto offers = result[jss::accepted][jss::offers];
150 if (!BEAST_EXPECT(offers.isArray() && offers.size() == 1))
153 BEAST_EXPECT(offers[0u][jss::Account] == alice.human());
162 if (!BEAST_EXPECT(result[jss::current].isMember(jss::ripple_lines)))
164 lines = result[jss::current][jss::ripple_lines];
165 if (!BEAST_EXPECT(lines.isArray() && lines.size() == 2))
170 (STAmount{Issue{to_currency(
"CNY"), noAccount()}, -50}
182 (STAmount{Issue{to_currency(
"USD"), noAccount()}, -50}
192 if (!BEAST_EXPECT(result[jss::current].isMember(jss::offers)))
194 offers = result[jss::current][jss::offers];
196 if (!BEAST_EXPECT(
offers.isArray() &&
offers.size() == 2))
199 BEAST_EXPECT(offers[1u] == result[jss::accepted][jss::offers][0u]);
200 BEAST_EXPECT(offers[0u][jss::Account] == alice.human());
218 BEAST_DEFINE_TESTSUITE(OwnerInfo, app,
ripple);