15 using namespace test::jtx;
16 Account alice{
"alice"};
19 env.fund(XRP(10000), alice);
24 auto makeJtxWithMemo = [&env, &alice]() {
25 JTx example =
noop(alice);
26 memo
const exampleMemo{
"tic",
"tac",
"toe"};
27 exampleMemo(env, example);
32 env(makeJtxWithMemo());
37 JTx memoSize = makeJtxWithMemo();
38 memoSize.jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfMemoData.jsonName] =
41 rpc(
"invalidTransaction",
42 "fails local checks: The memo exceeds the maximum allowed "
46 memoSize.jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfMemoData.jsonName] =
52 JTx memoNonMemo =
noop(alice);
53 auto& jv = memoNonMemo.jv;
54 auto& ma = jv[sfMemos.jsonName];
55 auto& mi = ma[ma.size()];
56 auto& m = mi[sfCreatedNode.jsonName];
57 m[sfMemoData.jsonName] =
"3030303030";
60 rpc(
"invalidTransaction",
61 "fails local checks: A memo array may contain only Memo "
66 JTx memoExtra = makeJtxWithMemo();
67 memoExtra.jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfFlags.jsonName] = 13;
69 rpc(
"invalidTransaction",
70 "fails local checks: A memo may contain only MemoType, "
71 "MemoData or MemoFormat fields."));
75 JTx memoBadChar = makeJtxWithMemo();
76 memoBadChar.jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfMemoType.jsonName] =
79 rpc(
"invalidTransaction",
80 "fails local checks: The MemoType and MemoFormat fields "
81 "may only contain characters that are allowed in URLs "
87 JTx memoLegitChar = makeJtxWithMemo();
88 memoLegitChar.jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfMemoData.jsonName] =
94 JTx memoBadChar = makeJtxWithMemo();
95 memoBadChar.jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfMemoFormat.jsonName] =
98 rpc(
"invalidTransaction",
99 "fails local checks: The MemoType and MemoFormat fields "
100 "may only contain characters that are allowed in URLs "