22#include <xrpl/basics/strHex.h>
34 using namespace test::jtx;
43 auto makeJtxWithMemo = [&env, &alice]() {
45 memo const exampleMemo{
"tic",
"tac",
"toe"};
46 exampleMemo(env, example);
51 env(makeJtxWithMemo());
56 JTx memoSize = makeJtxWithMemo();
57 memoSize.
jv[sfMemos.jsonName][0u][sfMemo.jsonName]
60 rpc(
"invalidTransaction",
61 "fails local checks: The memo exceeds the maximum allowed "
65 memoSize.
jv[sfMemos.jsonName][0u][sfMemo.jsonName]
72 auto& jv = memoNonMemo.
jv;
73 auto& ma = jv[sfMemos.jsonName];
74 auto& mi = ma[ma.size()];
75 auto& m = mi[sfCreatedNode.jsonName];
76 m[sfMemoData.jsonName] =
"3030303030";
79 rpc(
"invalidTransaction",
80 "fails local checks: A memo array may contain only Memo "
85 JTx memoExtra = makeJtxWithMemo();
87 .
jv[sfMemos.jsonName][0u][sfMemo.jsonName][sfFlags.jsonName] =
90 rpc(
"invalidTransaction",
91 "fails local checks: A memo may contain only MemoType, "
92 "MemoData or MemoFormat fields."));
96 JTx memoBadChar = makeJtxWithMemo();
97 memoBadChar.
jv[sfMemos.jsonName][0u][sfMemo.jsonName]
98 [sfMemoType.jsonName] =
101 rpc(
"invalidTransaction",
102 "fails local checks: The MemoType and MemoFormat fields "
103 "may only contain characters that are allowed in URLs "
109 JTx memoLegitChar = makeJtxWithMemo();
110 memoLegitChar.
jv[sfMemos.jsonName][0u][sfMemo.jsonName]
111 [sfMemoData.jsonName] =
117 JTx memoBadChar = makeJtxWithMemo();
118 memoBadChar.
jv[sfMemos.jsonName][0u][sfMemo.jsonName]
119 [sfMemoFormat.jsonName] =
122 rpc(
"invalidTransaction",
123 "fails local checks: The MemoType and MemoFormat fields "
124 "may only contain characters that are allowed in URLs "
138BEAST_DEFINE_TESTSUITE(Memo, ripple_data,
ripple);
testcase_t testcase
Memberspace for declaring test cases.
void run() override
Runs the suite.
Immutable cryptographic account descriptor.
A transaction testing environment.
bool close(NetClock::time_point closeTime, std::optional< std::chrono::milliseconds > consensusDelay=std::nullopt)
Close and advance the ledger.
void fund(bool setDefaultRipple, STAmount const &amount, Account const &account)
Set the expected result code for a JTx The test will fail if the code doesn't match.
XRP_t const XRP
Converts to XRP Issue or STAmount.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
std::string strHex(FwdIt begin, FwdIt end)
Execution context for applying a JSON transaction.