72 env.
fund(
XRP(1000), alice, becky, carol);
92 env(
fset(becky, asfDepositAuth));
104 "deposit_authorized",
112 "deposit_authorized",
124 "deposit_authorized",
130 env.
rpc(
"json",
"deposit_authorized",
depositAuthArgs(carol, becky).toStyledString()),
134 env(
fclear(becky, asfDepositAuth));
138 env.
rpc(
"json",
"deposit_authorized",
depositAuthArgs(carol, becky).toStyledString()),
143 env.
rpc(
"json",
"deposit_authorized",
depositAuthArgs(alice, becky).toStyledString()),
261 BEAST_EXPECT(result[jss::status] ==
authorized ? jss::success : jss::error);
262 if (result.
isMember(jss::deposit_authorized))
263 BEAST_EXPECT(result[jss::deposit_authorized] ==
authorized);
267 result.
isMember(jss::deposit_authorized) &&
268 (result[jss::deposit_authorized] ==
true));
273 BEAST_EXPECT(result[jss::error].asString() == error);
277 BEAST_EXPECT(result[jss::source_account] == src.
human());
278 BEAST_EXPECT(result[jss::destination_account] == dst.
human());
280 for (
unsigned i = 0; i < credentialIDs.size(); ++i)
281 BEAST_EXPECT(result[jss::credentials][i] == credentialIDs[i]);
285 BEAST_EXPECT(result[jss::request].isObject());
287 auto const& request = result[jss::request];
288 BEAST_EXPECT(request[jss::command] == jss::deposit_authorized);
289 BEAST_EXPECT(request[jss::source_account] == src.
human());
290 BEAST_EXPECT(request[jss::destination_account] == dst.
human());
292 for (
unsigned i = 0; i < credentialIDs.size(); ++i)
293 BEAST_EXPECT(request[jss::credentials][i] == credentialIDs[i]);
304 char const credType[] =
"abcde";
312 env.
fund(
XRP(1000), alice, becky, carol, diana);
320 std::string const credIdx = jv[jss::result][jss::index].asString();
323 env(
fset(becky, asfDepositAuth));
331 testcase(
"deposit_authorized with credentials failure: empty array.");
342 "deposit_authorized with credentials failure: not a string "
347 args[jss::credentials].
append(1);
348 args[jss::credentials].
append(3);
356 "deposit_authorized with credentials failure: not a hex string "
361 args[jss::credentials].
append(
"hello world");
365 jv[jss::result], alice, becky,
false, {
"hello world"},
"invalidParams");
370 "deposit_authorized with credentials failure: not a credential "
377 {
"0127AB8B4B29CCDBB61AA51C0799A8A6BB80B86A9899807C11ED576AF8516"
386 {
"0127AB8B4B29CCDBB61AA51C0799A8A6BB80B86A9899807C11ED576AF8516"
393 "deposit_authorized with credentials not authorized: "
394 "credential not accepted");
395 auto const jv = env.
rpc(
397 "deposit_authorized",
400 jv[jss::result], alice, becky,
false, {credIdx},
"badCredentials");
408 testcase(
"deposit_authorized with duplicates in credentials");
409 auto const jv = env.
rpc(
411 "deposit_authorized",
414 jv[jss::result], alice, becky,
false, {credIdx, credIdx},
"badCredentials");
419 "18004829F915654A81B11C4AB8218D96FED67F209B58328A72314FB6EA288BE4",
420 "28004829F915654A81B11C4AB8218D96FED67F209B58328A72314FB6EA288BE4",
421 "38004829F915654A81B11C4AB8218D96FED67F209B58328A72314FB6EA288BE4",
422 "48004829F915654A81B11C4AB8218D96FED67F209B58328A72314FB6EA288BE4",
423 "58004829F915654A81B11C4AB8218D96FED67F209B58328A72314FB6EA288BE4",
424 "68004829F915654A81B11C4AB8218D96FED67F209B58328A72314FB6EA288BE4",
425 "78004829F915654A81B11C4AB8218D96FED67F209B58328A72314FB6EA288BE4",
426 "88004829F915654A81B11C4AB8218D96FED67F209B58328A72314FB6EA288BE4",
427 "98004829F915654A81B11C4AB8218D96FED67F209B58328A72314FB6EA288BE4",
431 testcase(
"deposit_authorized too long credentials");
432 auto const jv = env.
rpc(
434 "deposit_authorized",
435 depositAuthArgs(alice, becky,
"validated", kCredIds).toStyledString());
437 jv[jss::result], alice, becky,
false, kCredIds,
"invalidParams");
441 testcase(
"deposit_authorized with credentials");
442 auto const jv = env.
rpc(
444 "deposit_authorized",
458 std::string const credBecky = jv[jss::result][jss::index].asString();
460 testcase(
"deposit_authorized account without preauth");
463 "deposit_authorized",
476 std::string const credDiana = jv[jss::result][jss::index].asString();
481 "deposit_authorized",
484 jv[jss::result], becky, alice,
false, {credDiana},
"badCredentials");
488 testcase(
"deposit_authorized with expired credentials");
491 char const credType2[] =
"random";
493 env.
current()->header().parentCloseTime.time_since_epoch().count() + 40;
497 jv[sfExpiration.jsonName] = x;
503 std::string const credIdx2 = jv[jss::result][jss::index].asString();
506 env(
fset(becky, asfDepositAuth));
517 "deposit_authorized",
529 "deposit_authorized",
533 jv[jss::result], alice, becky,
false, {credIdx2},
"badCredentials");