41 testcase(
"Bad input to noripple_check");
43 using namespace test::jtx;
46 auto const alice = Account{
"alice"};
47 env.fund(XRP(10000), alice);
52 env.rpc(
"json",
"noripple_check",
"{}")[jss::result];
53 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
55 result[jss::error_message] ==
"Missing field 'account'.");
60 params[jss::account] = alice.human();
61 auto const result = env.rpc(
64 boost::lexical_cast<std::string>(params))[jss::result];
65 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
66 BEAST_EXPECT(result[jss::error_message] ==
"Missing field 'role'.");
71 auto testInvalidAccountParam = [&](
auto const& param) {
73 params[jss::account] = param;
74 params[jss::role] =
"user";
76 "json",
"noripple_check",
to_string(params))[jss::result];
77 BEAST_EXPECT(jrr[jss::error] ==
"invalidParams");
79 jrr[jss::error_message] ==
"Invalid field 'account'.");
82 testInvalidAccountParam(1);
83 testInvalidAccountParam(1.1);
84 testInvalidAccountParam(
true);
92 params[jss::account] = alice.human();
93 params[jss::role] =
"not_a_role";
94 auto const result = env.rpc(
97 boost::lexical_cast<std::string>(params))[jss::result];
98 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
99 BEAST_EXPECT(result[jss::error_message] ==
"Invalid field 'role'.");
104 params[jss::account] = alice.human();
105 params[jss::role] =
"user";
106 params[jss::limit] = -1;
107 auto const result = env.rpc(
110 boost::lexical_cast<std::string>(params))[jss::result];
111 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
113 result[jss::error_message] ==
114 "Invalid field 'limit', not unsigned integer.");
119 params[jss::account] = alice.human();
120 params[jss::role] =
"user";
121 params[jss::ledger_hash] = 1;
122 auto const result = env.rpc(
125 boost::lexical_cast<std::string>(params))[jss::result];
126 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
127 BEAST_EXPECT(result[jss::error_message] ==
"ledgerHashNotString");
132 params[jss::account] = Account{
"nobody"}.human();
133 params[jss::role] =
"user";
134 params[jss::ledger] =
"current";
135 auto const result = env.rpc(
138 boost::lexical_cast<std::string>(params))[jss::result];
139 BEAST_EXPECT(result[jss::error] ==
"actNotFound");
140 BEAST_EXPECT(result[jss::error_message] ==
"Account not found.");
147 params[jss::role] =
"user";
148 params[jss::ledger] =
"current";
149 auto const result = env.rpc(
152 boost::lexical_cast<std::string>(params))[jss::result];
153 BEAST_EXPECT(result[jss::error] ==
"actMalformed");
154 BEAST_EXPECT(result[jss::error_message] ==
"Account malformed.");
161 testcase <<
"Request noripple_check for " << (user ?
"user" :
"gateway")
162 <<
" role, expect" << (problems ?
"" :
" no") <<
" problems";
164 using namespace test::jtx;
167 auto const gw = Account{
"gw"};
168 auto const alice = Account{
"alice"};
170 env.fund(XRP(10000), gw, alice);
171 if ((user && problems) || (!user && !problems))
174 env(trust(alice, gw[
"USD"](100)));
184 params[jss::account] = alice.human();
185 params[jss::role] = (user ?
"user" :
"gateway");
186 params[jss::ledger] =
"current";
187 auto result = env.rpc(
190 boost::lexical_cast<std::string>(params))[jss::result];
192 auto const pa = result[
"problems"];
193 if (!BEAST_EXPECT(pa.isArray()))
198 if (!BEAST_EXPECT(pa.size() == 2))
203 BEAST_EXPECT(boost::starts_with(
204 pa[0u].asString(),
"You appear to have set"));
205 BEAST_EXPECT(boost::starts_with(
206 pa[1u].asString(),
"You should probably set"));
210 BEAST_EXPECT(boost::starts_with(
211 pa[0u].asString(),
"You should immediately set"));
213 boost::starts_with(pa[1u].asString(),
"You should clear"));
218 BEAST_EXPECT(pa.size() == 0);
223 params[jss::transactions] =
true;
227 boost::lexical_cast<std::string>(params))[jss::result];
228 if (!BEAST_EXPECT(result[jss::transactions].isArray()))
231 auto const txs = result[jss::transactions];
234 if (!BEAST_EXPECT(txs.size() == (user ? 1 : 2)))
239 BEAST_EXPECT(txs[0u][jss::Account] == alice.human());
240 BEAST_EXPECT(txs[0u][jss::TransactionType] == jss::AccountSet);
244 result[jss::transactions][txs.size() - 1][jss::Account] ==
247 result[jss::transactions][txs.size() - 1]
248 [jss::TransactionType] == jss::TrustSet);
250 result[jss::transactions][txs.size() - 1][jss::LimitAmount] ==
255 BEAST_EXPECT(txs.size() == 0);