30 env.fund(XRP(10000), alice);
35 auto makeJtxWithMemo = [&env, &alice]() {
36 JTx example = noop(alice);
37 Memo
const exampleMemo{
"tic",
"tac",
"toe"};
38 exampleMemo(env, example);
43 env(makeJtxWithMemo());
48 JTx memoSize = makeJtxWithMemo();
49 memoSize.jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfMemoData.jsonName] =
52 Rpc(
"invalidTransaction",
53 "fails local checks: The memo exceeds the maximum allowed "
57 memoSize.jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfMemoData.jsonName] =
63 JTx memoNonMemo = noop(alice);
64 auto& jv = memoNonMemo.jv;
65 auto& ma = jv[sfMemos.jsonName];
66 auto& mi = ma[ma.size()];
67 auto& m = mi[sfCreatedNode.jsonName];
68 m[sfMemoData.jsonName] =
"3030303030";
71 Rpc(
"invalidTransaction",
72 "fails local checks: A memo array may contain only Memo "
77 JTx memoExtra = makeJtxWithMemo();
78 memoExtra.jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfFlags.jsonName] = 13;
80 Rpc(
"invalidTransaction",
81 "fails local checks: A memo may contain only MemoType, "
82 "MemoData or MemoFormat fields."));
86 JTx memoBadChar = makeJtxWithMemo();
87 memoBadChar.jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfMemoType.jsonName] =
90 Rpc(
"invalidTransaction",
91 "fails local checks: The MemoType and MemoFormat fields "
92 "may only contain characters that are allowed in URLs "
98 JTx memoLegitChar = makeJtxWithMemo();
99 memoLegitChar.jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfMemoData.jsonName] =
105 JTx memoBadChar = makeJtxWithMemo();
106 memoBadChar.jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfMemoFormat.jsonName] =
109 Rpc(
"invalidTransaction",
110 "fails local checks: The MemoType and MemoFormat fields "
111 "may only contain characters that are allowed in URLs "