|
|
|
|
@@ -970,26 +970,26 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_parameters)
|
|
|
|
|
|
|
|
|
|
// Test constructor of AsyncRPCOperation_sendmany
|
|
|
|
|
try {
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation(new AsyncRPCOperation_sendmany(mtx, "",{}, {}, -1));
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation(new AsyncRPCOperation_sendmany(boost::none, mtx, "",{}, {}, -1));
|
|
|
|
|
} catch (const UniValue& objError) {
|
|
|
|
|
BOOST_CHECK( find_error(objError, "Minconf cannot be negative"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation(new AsyncRPCOperation_sendmany(mtx, "",{}, {}, 1));
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation(new AsyncRPCOperation_sendmany(boost::none, mtx, "",{}, {}, 1));
|
|
|
|
|
} catch (const UniValue& objError) {
|
|
|
|
|
BOOST_CHECK( find_error(objError, "From address parameter missing"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(mtx, "tmRr6yJonqGK23UVhrKuyvTpF8qxQQjKigJ", {}, {}, 1) );
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(boost::none, mtx, "tmRr6yJonqGK23UVhrKuyvTpF8qxQQjKigJ", {}, {}, 1) );
|
|
|
|
|
} catch (const UniValue& objError) {
|
|
|
|
|
BOOST_CHECK( find_error(objError, "No recipients"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
std::vector<SendManyRecipient> recipients = { SendManyRecipient("dummy",1.0, "") };
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(mtx, "INVALID", recipients, {}, 1) );
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(boost::none, mtx, "INVALID", recipients, {}, 1) );
|
|
|
|
|
} catch (const UniValue& objError) {
|
|
|
|
|
BOOST_CHECK( find_error(objError, "Invalid from address"));
|
|
|
|
|
}
|
|
|
|
|
@@ -997,7 +997,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_parameters)
|
|
|
|
|
// Testnet payment addresses begin with 'zt'. This test detects an incorrect prefix.
|
|
|
|
|
try {
|
|
|
|
|
std::vector<SendManyRecipient> recipients = { SendManyRecipient("dummy",1.0, "") };
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(mtx, "zcMuhvq8sEkHALuSU2i4NbNQxshSAYrpCExec45ZjtivYPbuiFPwk6WHy4SvsbeZ4siy1WheuRGjtaJmoD1J8bFqNXhsG6U", recipients, {}, 1) );
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(boost::none, mtx, "zcMuhvq8sEkHALuSU2i4NbNQxshSAYrpCExec45ZjtivYPbuiFPwk6WHy4SvsbeZ4siy1WheuRGjtaJmoD1J8bFqNXhsG6U", recipients, {}, 1) );
|
|
|
|
|
} catch (const UniValue& objError) {
|
|
|
|
|
BOOST_CHECK( find_error(objError, "Invalid from address"));
|
|
|
|
|
}
|
|
|
|
|
@@ -1006,7 +1006,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_parameters)
|
|
|
|
|
// invokes a method on pwalletMain, which is undefined in the google test environment.
|
|
|
|
|
try {
|
|
|
|
|
std::vector<SendManyRecipient> recipients = { SendManyRecipient("dummy",1.0, "") };
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(mtx, "ztjiDe569DPNbyTE6TSdJTaSDhoXEHLGvYoUnBU1wfVNU52TEyT6berYtySkd21njAeEoh8fFJUT42kua9r8EnhBaEKqCpP", recipients, {}, 1) );
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(boost::none, mtx, "ztjiDe569DPNbyTE6TSdJTaSDhoXEHLGvYoUnBU1wfVNU52TEyT6berYtySkd21njAeEoh8fFJUT42kua9r8EnhBaEKqCpP", recipients, {}, 1) );
|
|
|
|
|
} catch (const UniValue& objError) {
|
|
|
|
|
BOOST_CHECK( find_error(objError, "no spending key found for zaddr"));
|
|
|
|
|
}
|
|
|
|
|
@@ -1039,7 +1039,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_internals)
|
|
|
|
|
// there are no utxos to spend
|
|
|
|
|
{
|
|
|
|
|
std::vector<SendManyRecipient> recipients = { SendManyRecipient(zaddr1,100.0, "DEADBEEF") };
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(mtx, taddr1, {}, recipients, 1) );
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(boost::none, mtx, taddr1, {}, recipients, 1) );
|
|
|
|
|
operation->main();
|
|
|
|
|
BOOST_CHECK(operation->isFailed());
|
|
|
|
|
std::string msg = operation->getErrorMessage();
|
|
|
|
|
@@ -1050,7 +1050,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_internals)
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
std::vector<SendManyRecipient> recipients = {SendManyRecipient(taddr1, 100.0, "DEADBEEF")};
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation(new AsyncRPCOperation_sendmany(mtx, zaddr1, recipients, {}, 0));
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation(new AsyncRPCOperation_sendmany(boost::none, mtx, zaddr1, recipients, {}, 0));
|
|
|
|
|
BOOST_CHECK(false); // Fail test if an exception is not thrown
|
|
|
|
|
} catch (const UniValue& objError) {
|
|
|
|
|
BOOST_CHECK(find_error(objError, "Minconf cannot be zero when sending from zaddr"));
|
|
|
|
|
@@ -1061,7 +1061,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_internals)
|
|
|
|
|
// there are no unspent notes to spend
|
|
|
|
|
{
|
|
|
|
|
std::vector<SendManyRecipient> recipients = { SendManyRecipient(taddr1,100.0, "DEADBEEF") };
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(mtx, zaddr1, recipients, {}, 1) );
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(boost::none, mtx, zaddr1, recipients, {}, 1) );
|
|
|
|
|
operation->main();
|
|
|
|
|
BOOST_CHECK(operation->isFailed());
|
|
|
|
|
std::string msg = operation->getErrorMessage();
|
|
|
|
|
@@ -1071,7 +1071,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_internals)
|
|
|
|
|
// get_memo_from_hex_string())
|
|
|
|
|
{
|
|
|
|
|
std::vector<SendManyRecipient> recipients = { SendManyRecipient(zaddr1,100.0, "DEADBEEF") };
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(mtx, zaddr1, recipients, {}, 1) );
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(boost::none, mtx, zaddr1, recipients, {}, 1) );
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation_sendmany> ptr = std::dynamic_pointer_cast<AsyncRPCOperation_sendmany> (operation);
|
|
|
|
|
TEST_FRIEND_AsyncRPCOperation_sendmany proxy(ptr);
|
|
|
|
|
|
|
|
|
|
@@ -1122,7 +1122,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_internals)
|
|
|
|
|
// add_taddr_change_output_to_tx() will append a vout to a raw transaction
|
|
|
|
|
{
|
|
|
|
|
std::vector<SendManyRecipient> recipients = { SendManyRecipient(zaddr1,100.0, "DEADBEEF") };
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(mtx, zaddr1, recipients, {}, 1) );
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(boost::none, mtx, zaddr1, recipients, {}, 1) );
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation_sendmany> ptr = std::dynamic_pointer_cast<AsyncRPCOperation_sendmany> (operation);
|
|
|
|
|
TEST_FRIEND_AsyncRPCOperation_sendmany proxy(ptr);
|
|
|
|
|
|
|
|
|
|
@@ -1151,7 +1151,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_internals)
|
|
|
|
|
SendManyRecipient("tmUSbHz3vxnwLvRyNDXbwkZxjVyDodMJEhh",CAmount(4.56), ""),
|
|
|
|
|
SendManyRecipient("tmYZAXYPCP56Xa5JQWWPZuK7o7bfUQW6kkd",CAmount(7.89), ""),
|
|
|
|
|
};
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(mtx, zaddr1, recipients, {}, 1) );
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(boost::none, mtx, zaddr1, recipients, {}, 1) );
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation_sendmany> ptr = std::dynamic_pointer_cast<AsyncRPCOperation_sendmany> (operation);
|
|
|
|
|
TEST_FRIEND_AsyncRPCOperation_sendmany proxy(ptr);
|
|
|
|
|
|
|
|
|
|
@@ -1174,7 +1174,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_internals)
|
|
|
|
|
// we have the spending key for the dummy recipient zaddr1
|
|
|
|
|
std::vector<SendManyRecipient> recipients = { SendManyRecipient(zaddr1, 0.0005, "ABCD") };
|
|
|
|
|
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(mtx, zaddr1, {}, recipients, 1) );
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(boost::none, mtx, zaddr1, {}, recipients, 1) );
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation_sendmany> ptr = std::dynamic_pointer_cast<AsyncRPCOperation_sendmany> (operation);
|
|
|
|
|
TEST_FRIEND_AsyncRPCOperation_sendmany proxy(ptr);
|
|
|
|
|
|
|
|
|
|
@@ -1199,7 +1199,7 @@ BOOST_AUTO_TEST_CASE(rpc_z_sendmany_internals)
|
|
|
|
|
// Dummy input so the operation object can be instantiated.
|
|
|
|
|
std::vector<SendManyRecipient> recipients = { SendManyRecipient(zaddr1, 0.0005, "ABCD") };
|
|
|
|
|
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(mtx, zaddr1, {}, recipients, 1) );
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation> operation( new AsyncRPCOperation_sendmany(boost::none, mtx, zaddr1, {}, recipients, 1) );
|
|
|
|
|
std::shared_ptr<AsyncRPCOperation_sendmany> ptr = std::dynamic_pointer_cast<AsyncRPCOperation_sendmany> (operation);
|
|
|
|
|
TEST_FRIEND_AsyncRPCOperation_sendmany proxy(ptr);
|
|
|
|
|
|
|
|
|
|
|