82 auto const usdGw = gw[
"USD"];
84 auto const usdBob = bob[
"USD"];
87 env.
trust(usdGw(1000), bob);
92 env(
pay(gw, bob, usdGw(10)));
94 env(
offer(bob,
XRP(100), usdBob(1)));
99 auto const jroOuter = env.
rpc(
"account_offers", bob.
human())[jss::result][jss::offers];
106 BEAST_EXPECT(jroOuter[0u][jss::quality] ==
"100000000");
107 BEAST_EXPECT(jroOuter[0u][jss::taker_gets][jss::currency] ==
"USD");
108 BEAST_EXPECT(jroOuter[0u][jss::taker_gets][jss::issuer] == gw.
human());
109 BEAST_EXPECT(jroOuter[0u][jss::taker_gets][jss::value] ==
"2");
110 BEAST_EXPECT(jroOuter[0u][jss::taker_pays] ==
"200000000");
112 BEAST_EXPECT(jroOuter[1u][jss::quality] ==
"100000000");
113 BEAST_EXPECT(jroOuter[1u][jss::taker_gets][jss::currency] ==
"USD");
114 BEAST_EXPECT(jroOuter[1u][jss::taker_gets][jss::issuer] == bob.
human());
115 BEAST_EXPECT(jroOuter[1u][jss::taker_gets][jss::value] ==
"1");
116 BEAST_EXPECT(jroOuter[1u][jss::taker_pays] ==
"100000000");
118 BEAST_EXPECT(jroOuter[2u][jss::quality] ==
"5000000");
119 BEAST_EXPECT(jroOuter[2u][jss::taker_gets][jss::currency] ==
"USD");
120 BEAST_EXPECT(jroOuter[2u][jss::taker_gets][jss::issuer] == gw.
human());
121 BEAST_EXPECT(jroOuter[2u][jss::taker_gets][jss::value] ==
"6");
122 BEAST_EXPECT(jroOuter[2u][jss::taker_pays] ==
"30000000");
128 jvParams[jss::account] = bob.
human();
129 jvParams[jss::limit] = 1u;
132 auto const& jroL1 = jrrL1[jss::offers];
139 BEAST_EXPECT(asAdmin ?
checkMarker(jrrL1) : (!jrrL1.isMember(jss::marker)));
142 BEAST_EXPECT(jroOuter[0u] == jroL1[0u]);
145 jvParams[jss::marker] = jrrL1[jss::marker];
148 auto const& jroL2 = jrrL2[jss::offers];
151 BEAST_EXPECT(jroOuter[1u] == jroL2[0u]);
154 jvParams[jss::marker] = jrrL2[jss::marker];
155 jvParams[jss::limit] = 10u;
158 auto const& jroL3 = jrrL3[jss::offers];
159 BEAST_EXPECT(!jrrL3.isMember(jss::marker));
161 BEAST_EXPECT(jroOuter[2u] == jroL3[0u]);
165 BEAST_EXPECT(jroOuter == jroL1);
171 jvParams[jss::account] = bob.
human();
172 jvParams[jss::limit] = 0u;
175 BEAST_EXPECT(jrr.isMember(jss::error_message));
187 auto const usdGw = gw[
"USD"];
189 auto const usdBob = bob[
"USD"];
192 env.
trust(usdGw(1000), bob);
196 auto const jrr = env.
rpc(
"account_offers");
197 BEAST_EXPECT(jrr[jss::error] ==
"badSyntax");
198 BEAST_EXPECT(jrr[jss::status] ==
"error");
199 BEAST_EXPECT(jrr[jss::error_message] ==
"Syntax error.");
204 auto testInvalidAccountParam = [&](
auto const& param) {
206 params[jss::account] = param;
207 auto jrr = env.
rpc(
"json",
"account_offers",
to_string(params))[jss::result];
208 BEAST_EXPECT(jrr[jss::error] ==
"invalidParams");
209 BEAST_EXPECT(jrr[jss::error_message] ==
"Invalid field 'account'.");
212 testInvalidAccountParam(1);
213 testInvalidAccountParam(1.1);
214 testInvalidAccountParam(
true);
223 jvParams[jss::account] =
"";
226 BEAST_EXPECT(jrr[jss::error] ==
"actMalformed");
227 BEAST_EXPECT(jrr[jss::status] ==
"error");
228 BEAST_EXPECT(jrr[jss::error_message] ==
"Account malformed.");
233 auto const jrr = env.
rpc(
"account_offers",
Account(
"bogus").human())[jss::result];
234 BEAST_EXPECT(jrr[jss::error] ==
"actNotFound");
235 BEAST_EXPECT(jrr[jss::status] ==
"error");
236 BEAST_EXPECT(jrr[jss::error_message] ==
"Account not found.");
242 jvParams[jss::account] = bob.
human();
243 jvParams[jss::limit] =
"0";
246 BEAST_EXPECT(jrr[jss::error] ==
"invalidParams");
247 BEAST_EXPECT(jrr[jss::status] ==
"error");
248 BEAST_EXPECT(jrr[jss::error_message] ==
"Invalid field 'limit', not unsigned integer.");
254 jvParams[jss::account] = bob.
human();
255 jvParams[jss::marker] =
"NOT_A_MARKER";
258 BEAST_EXPECT(jrr[jss::error] ==
"invalidParams");
259 BEAST_EXPECT(jrr[jss::status] ==
"error");
261 jrr[jss::error_message] ==
"Invalid field 'marker'.", jrr.toStyledString());
267 jvParams[jss::account] = bob.
human();
268 jvParams[jss::marker] = 1;
271 BEAST_EXPECT(jrr[jss::error] ==
"invalidParams");
272 BEAST_EXPECT(jrr[jss::status] ==
"error");
273 BEAST_EXPECT(jrr[jss::error_message] ==
"Invalid field 'marker', not string.");
279 jvParams[jss::account] = bob.
human();
280 jvParams[jss::ledger_index] = 10u;
283 BEAST_EXPECT(jrr[jss::error] ==
"lgrNotFound");
284 BEAST_EXPECT(jrr[jss::status] ==
"error");
285 BEAST_EXPECT(jrr[jss::error_message] ==
"ledgerNotFound");