20 #include <ripple/protocol/jss.h>
49 auto const USD_gw = gw[
"USD"];
51 auto const USD_bob = bob[
"USD"];
53 env.fund(
XRP(10000), gw, bob);
54 env.trust(USD_gw(1000), bob);
59 env (
pay (gw, bob, USD_gw (10)));
60 unsigned const offer_count = 12u;
61 for (
auto i = 0u; i < offer_count; i++)
69 auto const jro_nl = env.rpc(
"account_offers", bob.
human())[jss::result][jss::offers];
76 jvParams[jss::account] = bob.
human();
77 jvParams[jss::limit] = 1u;
78 auto const jrr_l = env.rpc (
"json",
"account_offers", jvParams.
toStyledString())[jss::result];
79 auto const& jro_l = jrr_l[jss::offers];
89 auto const USD_gw = gw[
"USD"];
91 auto const USD_bob = bob[
"USD"];
93 env.fund(
XRP(10000), gw, bob);
94 env.trust(USD_gw(1000), bob);
99 env (
pay (gw, bob, USD_gw (10)));
101 env(
offer(bob,
XRP(100), USD_bob(1)));
102 env(
offer(bob,
XRP(200), USD_gw(2)));
103 env(
offer(bob,
XRP(30), USD_gw(6)));
106 auto const jroOuter = 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");
115 BEAST_EXPECT(jroOuter[0u][jss::taker_gets][jss::issuer] == gw.
human());
116 BEAST_EXPECT(jroOuter[0u][jss::taker_gets][jss::value] ==
"2");
117 BEAST_EXPECT(jroOuter[0u][jss::taker_pays] ==
"200000000");
119 BEAST_EXPECT(jroOuter[1u][jss::quality] ==
"100000000");
120 BEAST_EXPECT(jroOuter[1u][jss::taker_gets][jss::currency] ==
"USD");
121 BEAST_EXPECT(jroOuter[1u][jss::taker_gets][jss::issuer] == bob.
human());
122 BEAST_EXPECT(jroOuter[1u][jss::taker_gets][jss::value] ==
"1");
123 BEAST_EXPECT(jroOuter[1u][jss::taker_pays] ==
"100000000");
125 BEAST_EXPECT(jroOuter[2u][jss::quality] ==
"5000000");
126 BEAST_EXPECT(jroOuter[2u][jss::taker_gets][jss::currency] ==
"USD");
127 BEAST_EXPECT(jroOuter[2u][jss::taker_gets][jss::issuer] == gw.
human());
128 BEAST_EXPECT(jroOuter[2u][jss::taker_gets][jss::value] ==
"6");
129 BEAST_EXPECT(jroOuter[2u][jss::taker_pays] ==
"30000000");
135 jvParams[jss::account] = bob.
human();
136 jvParams[jss::limit] = 1u;
137 auto const jrr_l_1 = env.rpc (
"json",
"account_offers", jvParams.
toStyledString())[jss::result];
138 auto const& jro_l_1 = jrr_l_1[jss::offers];
145 BEAST_EXPECT(asAdmin ?
checkMarker(jrr_l_1) : (! jrr_l_1.isMember(jss::marker)));
148 BEAST_EXPECT(jroOuter[0u] == jro_l_1[0u]);
151 jvParams[jss::marker] = jrr_l_1[jss::marker];
152 auto const jrr_l_2 = env.rpc (
"json",
"account_offers", jvParams.
toStyledString())[jss::result];
153 auto const& jro_l_2 = jrr_l_2[jss::offers];
156 BEAST_EXPECT(jroOuter[1u] == jro_l_2[0u]);
159 jvParams[jss::marker] = jrr_l_2[jss::marker];
160 auto const jrr_l_3 = env.rpc (
"json",
"account_offers", jvParams.
toStyledString())[jss::result];
161 auto const& jro_l_3 = jrr_l_3[jss::offers];
162 BEAST_EXPECT(! jrr_l_3.isMember(jss::marker));
164 BEAST_EXPECT(jroOuter[2u] == jro_l_3[0u]);
168 BEAST_EXPECT(jroOuter == jro_l_1);
180 jvParams[jss::account] = bob.
human();
181 jvParams[jss::limit] = 0u;
182 auto const jrr = env.rpc (
"json",
"account_offers", jvParams.
toStyledString())[jss::result];
183 auto const& jro = jrr[jss::offers];
185 BEAST_EXPECT(asAdmin ?
checkMarker(jrr) : (! jrr.isMember(jss::marker)));
195 auto const USD_gw = gw[
"USD"];
197 auto const USD_bob = bob[
"USD"];
200 env.
trust(USD_gw(1000), bob);
204 auto const jrr = env.
rpc (
"account_offers");
205 BEAST_EXPECT(jrr[jss::error] ==
"badSyntax");
206 BEAST_EXPECT(jrr[jss::status] ==
"error");
207 BEAST_EXPECT(jrr[jss::error_message] ==
"Syntax error.");
213 jvParams[jss::account] =
"";
214 auto const jrr = env.
rpc (
"json",
"account_offers", jvParams.
toStyledString())[jss::result];
215 BEAST_EXPECT(jrr[jss::error] ==
"badSeed");
216 BEAST_EXPECT(jrr[jss::status] ==
"error");
217 BEAST_EXPECT(jrr[jss::error_message] ==
"Disallowed seed.");
222 auto const jrr = env.
rpc (
"account_offers",
"rNOT_AN_ACCOUNT")[jss::result];
223 BEAST_EXPECT(jrr[jss::error] ==
"actNotFound");
224 BEAST_EXPECT(jrr[jss::status] ==
"error");
225 BEAST_EXPECT(jrr[jss::error_message] ==
"Account not found.");
231 jvParams[jss::account] = bob.
human();
232 jvParams[jss::limit] =
"0";
233 auto const jrr = env.
rpc (
"json",
"account_offers", jvParams.
toStyledString())[jss::result];
234 BEAST_EXPECT(jrr[jss::error] ==
"invalidParams");
235 BEAST_EXPECT(jrr[jss::status] ==
"error");
236 BEAST_EXPECT(jrr[jss::error_message] ==
"Invalid field 'limit', not unsigned integer.");
242 jvParams[jss::account] = bob.
human();
243 jvParams[jss::marker] =
"NOT_A_MARKER";
244 auto const jrr = env.
rpc (
"json",
"account_offers", jvParams.
toStyledString())[jss::result];
245 BEAST_EXPECT(jrr[jss::error] ==
"invalidParams");
246 BEAST_EXPECT(jrr[jss::status] ==
"error");
247 BEAST_EXPECT(jrr[jss::error_message] ==
"Invalid parameters.");
253 jvParams[jss::account] = bob.
human();
254 jvParams[jss::marker] = 1;
255 auto const jrr = env.
rpc (
"json",
"account_offers", jvParams.
toStyledString())[jss::result];
256 BEAST_EXPECT(jrr[jss::error] ==
"invalidParams");
257 BEAST_EXPECT(jrr[jss::status] ==
"error");
258 BEAST_EXPECT(jrr[jss::error_message] ==
"Invalid field 'marker', not string.");
264 jvParams[jss::account] = bob.
human();
265 jvParams[jss::ledger_index] = 10u;
266 auto const jrr = env.
rpc (
"json",
"account_offers", jvParams.
toStyledString())[jss::result];
267 BEAST_EXPECT(jrr[jss::error] ==
"lgrNotFound");
268 BEAST_EXPECT(jrr[jss::status] ==
"error");
269 BEAST_EXPECT(jrr[jss::error_message] ==
"ledgerNotFound");