30 auto const alice =
Account{
"alice"};
31 env.fund(XRP(10000), alice);
35 auto const result = env.rpc(
"json",
"owner_info",
"{}")[jss::result];
36 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
37 BEAST_EXPECT(result[jss::error_message] ==
"Missing field 'account'.");
42 params[jss::account] =
"";
43 auto const result = env.rpc(
"json",
"owner_info",
to_string(params))[jss::result];
44 if (BEAST_EXPECT(result.isMember(jss::accepted) && result.isMember(jss::current)))
46 BEAST_EXPECT(result[jss::accepted][jss::error] ==
"actMalformed");
47 BEAST_EXPECT(result[jss::accepted][jss::error_message] ==
"Account malformed.");
48 BEAST_EXPECT(result[jss::current][jss::error] ==
"actMalformed");
49 BEAST_EXPECT(result[jss::current][jss::error_message] ==
"Account malformed.");
57 params[jss::account] =
Account{
"bob"}.human();
58 auto const result = env.rpc(
"json",
"owner_info",
to_string(params))[jss::result];
61 BEAST_EXPECT(result[jss::status] ==
"success");
68 testcase(
"Basic request for owner_info");
73 auto const alice =
Account{
"alice"};
74 auto const gw =
Account{
"gateway"};
75 env.fund(XRP(10000), alice, gw);
77 auto const usd = gw[
"USD"];
78 auto const cny = gw[
"CNY"];
79 env(trust(alice, usd(1000)));
80 env(trust(alice, cny(1000)));
81 env(offer(alice, usd(1), XRP(1000)));
84 env(pay(gw, alice, usd(50)));
85 env(pay(gw, alice, cny(50)));
86 env(offer(alice, cny(2), XRP(1000)));
89 params[jss::account] = alice.human();
90 auto const result = env.rpc(
"json",
"owner_info",
to_string(params))[jss::result];
91 if (!BEAST_EXPECT(result.isMember(jss::accepted) && result.isMember(jss::current)))
97 if (!BEAST_EXPECT(result[jss::accepted].isMember(jss::ripple_lines)))
99 auto lines = result[jss::accepted][jss::ripple_lines];
100 if (!BEAST_EXPECT(lines.isArray() && lines.size() == 2))
104 lines[0u][sfBalance.fieldName] ==
108 lines[0u][sfHighLimit.fieldName] ==
111 lines[0u][sfLowLimit.fieldName] ==
115 lines[1u][sfBalance.fieldName] ==
119 lines[1u][sfHighLimit.fieldName] ==
124 if (!BEAST_EXPECT(result[jss::accepted].isMember(jss::offers)))
126 auto offers = result[jss::accepted][jss::offers];
127 if (!BEAST_EXPECT(offers.isArray() && offers.size() == 1))
130 BEAST_EXPECT(offers[0u][jss::Account] == alice.human());
132 offers[0u][sfTakerGets.fieldName] ==
138 if (!BEAST_EXPECT(result[jss::current].isMember(jss::ripple_lines)))
140 lines = result[jss::current][jss::ripple_lines];
141 if (!BEAST_EXPECT(lines.isArray() && lines.size() == 2))
145 lines[0u][sfBalance.fieldName] ==
146 (STAmount{Issue{toCurrency(
"CNY"), noAccount()}, -50}.value().
getJson(
147 JsonOptions::Values::None)));
149 lines[0u][sfHighLimit.fieldName] ==
150 alice[
"CNY"](1000).value().getJson(JsonOptions::Values::None));
152 lines[0u][sfLowLimit.fieldName] ==
153 gw[
"CNY"](0).value().getJson(JsonOptions::Values::None));
156 lines[1u][sfBalance.fieldName] ==
157 (STAmount{Issue{toCurrency(
"USD"), noAccount()}, -50}.value().
getJson(
158 JsonOptions::Values::None)));
160 lines[1u][sfHighLimit.fieldName] ==
161 alice[
"USD"](1000).value().getJson(JsonOptions::Values::None));
163 lines[1u][sfLowLimit.fieldName] ==
164 gw[
"USD"](0).value().getJson(JsonOptions::Values::None));
166 if (!BEAST_EXPECT(result[jss::current].isMember(jss::offers)))
168 offers = result[jss::current][jss::offers];
170 if (!BEAST_EXPECT(
offers.isArray() &&
offers.size() == 2))
173 BEAST_EXPECT(offers[1u] == result[jss::accepted][jss::offers][0u]);
174 BEAST_EXPECT(offers[0u][jss::Account] == alice.human());
176 offers[0u][sfTakerGets.fieldName] ==
177 XRP(1000).value().
getJson(JsonOptions::Values::None));
179 offers[0u][sfTakerPays.fieldName] == cny(2).value().
getJson(JsonOptions::Values::None));