20 #include <ripple/protocol/jss.h>
22 #include <test/jtx/TestHelpers.h>
44 auto const USD_gw = gw[
"USD"];
46 auto const USD_bob = bob[
"USD"];
48 env.fund(
XRP(10000), gw, bob);
49 env.trust(USD_gw(1000), bob);
54 env(pay(gw, bob, USD_gw(10)));
55 unsigned const offer_count = 12u;
56 for (
auto i = 0u; i < offer_count; i++)
65 env.rpc(
"account_offers", bob.
human())[jss::result][jss::offers];
72 jvParams[jss::account] = bob.
human();
73 jvParams[jss::limit] = 1u;
74 auto const jrr_l = env.rpc(
76 auto const& jro_l = jrr_l[jss::offers];
88 auto const USD_gw = gw[
"USD"];
90 auto const USD_bob = bob[
"USD"];
92 env.fund(
XRP(10000), gw, bob);
93 env.trust(USD_gw(1000), bob);
98 env(pay(gw, bob, USD_gw(10)));
100 env(offer(bob,
XRP(100), USD_bob(1)));
101 env(offer(bob,
XRP(200), USD_gw(2)));
102 env(offer(bob,
XRP(30), USD_gw(6)));
105 auto const jroOuter =
106 env.rpc(
"account_offers", bob.
human())[jss::result][jss::offers];
113 BEAST_EXPECT(jroOuter[0u][jss::quality] ==
"100000000");
114 BEAST_EXPECT(jroOuter[0u][jss::taker_gets][jss::currency] ==
"USD");
116 jroOuter[0u][jss::taker_gets][jss::issuer] == gw.
human());
117 BEAST_EXPECT(jroOuter[0u][jss::taker_gets][jss::value] ==
"2");
118 BEAST_EXPECT(jroOuter[0u][jss::taker_pays] ==
"200000000");
120 BEAST_EXPECT(jroOuter[1u][jss::quality] ==
"100000000");
121 BEAST_EXPECT(jroOuter[1u][jss::taker_gets][jss::currency] ==
"USD");
123 jroOuter[1u][jss::taker_gets][jss::issuer] == bob.
human());
124 BEAST_EXPECT(jroOuter[1u][jss::taker_gets][jss::value] ==
"1");
125 BEAST_EXPECT(jroOuter[1u][jss::taker_pays] ==
"100000000");
127 BEAST_EXPECT(jroOuter[2u][jss::quality] ==
"5000000");
128 BEAST_EXPECT(jroOuter[2u][jss::taker_gets][jss::currency] ==
"USD");
130 jroOuter[2u][jss::taker_gets][jss::issuer] == gw.
human());
131 BEAST_EXPECT(jroOuter[2u][jss::taker_gets][jss::value] ==
"6");
132 BEAST_EXPECT(jroOuter[2u][jss::taker_pays] ==
"30000000");
138 jvParams[jss::account] = bob.
human();
139 jvParams[jss::limit] = 1u;
140 auto const jrr_l_1 = env.rpc(
144 auto const& jro_l_1 = jrr_l_1[jss::offers];
153 : (!jrr_l_1.isMember(jss::marker)));
156 BEAST_EXPECT(jroOuter[0u] == jro_l_1[0u]);
159 jvParams[jss::marker] = jrr_l_1[jss::marker];
160 auto const jrr_l_2 = env.rpc(
164 auto const& jro_l_2 = jrr_l_2[jss::offers];
167 BEAST_EXPECT(jroOuter[1u] == jro_l_2[0u]);
170 jvParams[jss::marker] = jrr_l_2[jss::marker];
171 jvParams[jss::limit] = 10u;
172 auto const jrr_l_3 = env.rpc(
176 auto const& jro_l_3 = jrr_l_3[jss::offers];
177 BEAST_EXPECT(!jrr_l_3.isMember(jss::marker));
179 BEAST_EXPECT(jroOuter[2u] == jro_l_3[0u]);
183 BEAST_EXPECT(jroOuter == jro_l_1);
195 jvParams[jss::account] = bob.
human();
196 jvParams[jss::limit] = 0u;
197 auto const jrr = env.rpc(
201 auto const& jro = jrr[jss::offers];
205 BEAST_EXPECT(jrr.isMember(jss::error_message));
211 BEAST_EXPECT(!jrr.isMember(jss::marker));
222 auto const USD_gw = gw[
"USD"];
224 auto const USD_bob = bob[
"USD"];
227 env.
trust(USD_gw(1000), bob);
231 auto const jrr = env.
rpc(
"account_offers");
232 BEAST_EXPECT(jrr[jss::error] ==
"badSyntax");
233 BEAST_EXPECT(jrr[jss::status] ==
"error");
234 BEAST_EXPECT(jrr[jss::error_message] ==
"Syntax error.");
240 jvParams[jss::account] =
"";
241 auto const jrr = env.
rpc(
245 BEAST_EXPECT(jrr[jss::error] ==
"actMalformed");
246 BEAST_EXPECT(jrr[jss::status] ==
"error");
247 BEAST_EXPECT(jrr[jss::error_message] ==
"Account malformed.");
252 auto const jrr = env.
rpc(
253 "account_offers",
Account(
"bogus").human())[jss::result];
254 BEAST_EXPECT(jrr[jss::error] ==
"actNotFound");
255 BEAST_EXPECT(jrr[jss::status] ==
"error");
256 BEAST_EXPECT(jrr[jss::error_message] ==
"Account not found.");
262 jvParams[jss::account] = bob.
human();
263 jvParams[jss::limit] =
"0";
264 auto const jrr = env.
rpc(
268 BEAST_EXPECT(jrr[jss::error] ==
"invalidParams");
269 BEAST_EXPECT(jrr[jss::status] ==
"error");
271 jrr[jss::error_message] ==
272 "Invalid field 'limit', not unsigned integer.");
278 jvParams[jss::account] = bob.
human();
279 jvParams[jss::marker] =
"NOT_A_MARKER";
280 auto const jrr = env.
rpc(
284 BEAST_EXPECT(jrr[jss::error] ==
"invalidParams");
285 BEAST_EXPECT(jrr[jss::status] ==
"error");
286 BEAST_EXPECT(jrr[jss::error_message] ==
"Invalid parameters.");
292 jvParams[jss::account] = bob.
human();
293 jvParams[jss::marker] = 1;
294 auto const jrr = env.
rpc(
298 BEAST_EXPECT(jrr[jss::error] ==
"invalidParams");
299 BEAST_EXPECT(jrr[jss::status] ==
"error");
301 jrr[jss::error_message] ==
302 "Invalid field 'marker', not string.");
308 jvParams[jss::account] = bob.
human();
309 jvParams[jss::ledger_index] = 10u;
310 auto const jrr = env.
rpc(
314 BEAST_EXPECT(jrr[jss::error] ==
"lgrNotFound");
315 BEAST_EXPECT(jrr[jss::status] ==
"error");
316 BEAST_EXPECT(jrr[jss::error_message] ==
"ledgerNotFound");