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(
62 "json",
"noripple_check",
to_string(params))[jss::result];
63 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
64 BEAST_EXPECT(result[jss::error_message] ==
"Missing field 'role'.");
69 auto testInvalidAccountParam = [&](
auto const& param) {
71 params[jss::account] = param;
72 params[jss::role] =
"user";
74 "json",
"noripple_check",
to_string(params))[jss::result];
75 BEAST_EXPECT(jrr[jss::error] ==
"invalidParams");
77 jrr[jss::error_message] ==
"Invalid field 'account'.");
80 testInvalidAccountParam(1);
81 testInvalidAccountParam(1.1);
82 testInvalidAccountParam(
true);
90 params[jss::account] = alice.human();
91 params[jss::role] =
"not_a_role";
92 auto const result = env.rpc(
93 "json",
"noripple_check",
to_string(params))[jss::result];
94 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
95 BEAST_EXPECT(result[jss::error_message] ==
"Invalid field 'role'.");
100 params[jss::account] = alice.human();
101 params[jss::role] =
"user";
102 params[jss::limit] = -1;
103 auto const result = env.rpc(
104 "json",
"noripple_check",
to_string(params))[jss::result];
105 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
107 result[jss::error_message] ==
108 "Invalid field 'limit', not unsigned integer.");
113 params[jss::account] = alice.human();
114 params[jss::role] =
"user";
115 params[jss::ledger_hash] = 1;
116 auto const result = env.rpc(
117 "json",
"noripple_check",
to_string(params))[jss::result];
118 BEAST_EXPECT(result[jss::error] ==
"invalidParams");
119 BEAST_EXPECT(result[jss::error_message] ==
"ledgerHashNotString");
124 params[jss::account] = Account{
"nobody"}.human();
125 params[jss::role] =
"user";
126 params[jss::ledger] =
"current";
127 auto const result = env.rpc(
128 "json",
"noripple_check",
to_string(params))[jss::result];
129 BEAST_EXPECT(result[jss::error] ==
"actNotFound");
130 BEAST_EXPECT(result[jss::error_message] ==
"Account not found.");
137 params[jss::role] =
"user";
138 params[jss::ledger] =
"current";
139 auto const result = env.rpc(
140 "json",
"noripple_check",
to_string(params))[jss::result];
141 BEAST_EXPECT(result[jss::error] ==
"actMalformed");
142 BEAST_EXPECT(result[jss::error_message] ==
"Account malformed.");
149 testcase <<
"Request noripple_check for " << (user ?
"user" :
"gateway")
150 <<
" role, expect" << (problems ?
"" :
" no") <<
" problems";
152 using namespace test::jtx;
155 auto const gw = Account{
"gw"};
156 auto const alice = Account{
"alice"};
158 env.fund(XRP(10000), gw, alice);
159 if ((user && problems) || (!user && !problems))
162 env(trust(alice, gw[
"USD"](100)));
172 params[jss::account] = alice.human();
173 params[jss::role] = (user ?
"user" :
"gateway");
174 params[jss::ledger] =
"current";
176 env.rpc(
"json",
"noripple_check",
to_string(params))[jss::result];
178 auto const pa = result[
"problems"];
179 if (!BEAST_EXPECT(pa.isArray()))
184 if (!BEAST_EXPECT(pa.size() == 2))
189 BEAST_EXPECT(boost::starts_with(
190 pa[0u].asString(),
"You appear to have set"));
191 BEAST_EXPECT(boost::starts_with(
192 pa[1u].asString(),
"You should probably set"));
196 BEAST_EXPECT(boost::starts_with(
197 pa[0u].asString(),
"You should immediately set"));
199 boost::starts_with(pa[1u].asString(),
"You should clear"));
204 BEAST_EXPECT(pa.size() == 0);
209 params[jss::transactions] =
true;
211 env.rpc(
"json",
"noripple_check",
to_string(params))[jss::result];
212 if (!BEAST_EXPECT(result[jss::transactions].isArray()))
215 auto const txs = result[jss::transactions];
218 if (!BEAST_EXPECT(txs.size() == (user ? 1 : 2)))
223 BEAST_EXPECT(txs[0u][jss::Account] == alice.human());
224 BEAST_EXPECT(txs[0u][jss::TransactionType] == jss::AccountSet);
228 result[jss::transactions][txs.size() - 1][jss::Account] ==
231 result[jss::transactions][txs.size() - 1]
232 [jss::TransactionType] == jss::TrustSet);
234 result[jss::transactions][txs.size() - 1][jss::LimitAmount] ==
239 BEAST_EXPECT(txs.size() == 0);