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] =
std::string(2020,
'0');
40 rpc(
"invalidTransaction",
41 "fails local checks: The memo exceeds the maximum allowed "
45 memoSize.jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfMemoData.jsonName] =
std::string(2018,
'1');
50 JTx memoNonMemo =
noop(alice);
51 auto& jv = memoNonMemo.jv;
52 auto& ma = jv[sfMemos.jsonName];
53 auto& mi = ma[ma.size()];
54 auto& m = mi[sfCreatedNode.jsonName];
55 m[sfMemoData.jsonName] =
"3030303030";
58 rpc(
"invalidTransaction",
59 "fails local checks: A memo array may contain only Memo "
64 JTx memoExtra = makeJtxWithMemo();
65 memoExtra.jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfFlags.jsonName] = 13;
67 rpc(
"invalidTransaction",
68 "fails local checks: A memo may contain only MemoType, "
69 "MemoData or MemoFormat fields."));
73 JTx memoBadChar = makeJtxWithMemo();
74 memoBadChar.jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfMemoType.jsonName] =
77 rpc(
"invalidTransaction",
78 "fails local checks: The MemoType and MemoFormat fields "
79 "may only contain characters that are allowed in URLs "
85 JTx memoLegitChar = makeJtxWithMemo();
86 memoLegitChar.jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfMemoData.jsonName] =
92 JTx memoBadChar = makeJtxWithMemo();
93 memoBadChar.jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfMemoFormat.jsonName] =
96 rpc(
"invalidTransaction",
97 "fails local checks: The MemoType and MemoFormat fields "
98 "may only contain characters that are allowed in URLs "