Return correct error codes in removeprunedfunds().
The removeprunedfunds() RPC was returning misleading or incorrect error codes (for example RPC_INTERNAL_ERROR when the transaction was not found in the wallet). This commit fixes those error codes: - RPC_INTERNAL_ERROR should not be returned for application-level errors, only for genuine internal errors such as corrupted data. This error code has been replaced with RPC_WALLET_ERROR. This commit also updates the test cases to explicitly test the error code.
This commit is contained in:
parent
c1190963b3
commit
960bc7f778
2 changed files with 4 additions and 14 deletions
|
@ -76,12 +76,7 @@ class ImportPrunedFundsTest(BitcoinTestFramework):
|
|||
self.sync_all()
|
||||
|
||||
#Import with no affiliated address
|
||||
try:
|
||||
self.nodes[1].importprunedfunds(rawtxn1, proof1)
|
||||
except JSONRPCException as e:
|
||||
assert('No addresses' in e.error['message'])
|
||||
else:
|
||||
assert(False)
|
||||
assert_raises_jsonrpc(-5, "No addresses", self.nodes[1].importprunedfunds, rawtxn1, proof1)
|
||||
|
||||
balance1 = self.nodes[1].getbalance("", 0, True)
|
||||
assert_equal(balance1, Decimal(0))
|
||||
|
@ -112,12 +107,7 @@ class ImportPrunedFundsTest(BitcoinTestFramework):
|
|||
assert_equal(address_info['ismine'], True)
|
||||
|
||||
#Remove transactions
|
||||
try:
|
||||
self.nodes[1].removeprunedfunds(txnid1)
|
||||
except JSONRPCException as e:
|
||||
assert('does not exist' in e.error['message'])
|
||||
else:
|
||||
assert(False)
|
||||
assert_raises_jsonrpc(-8, "Transaction does not exist in wallet.", self.nodes[1].removeprunedfunds, txnid1)
|
||||
|
||||
balance1 = self.nodes[1].getbalance("*", 0, True)
|
||||
assert_equal(balance1, Decimal('0.075'))
|
||||
|
|
|
@ -350,11 +350,11 @@ UniValue removeprunedfunds(const JSONRPCRequest& request)
|
|||
vector<uint256> vHashOut;
|
||||
|
||||
if (pwallet->ZapSelectTx(vHash, vHashOut) != DB_LOAD_OK) {
|
||||
throw JSONRPCError(RPC_INTERNAL_ERROR, "Could not properly delete the transaction.");
|
||||
throw JSONRPCError(RPC_WALLET_ERROR, "Could not properly delete the transaction.");
|
||||
}
|
||||
|
||||
if(vHashOut.empty()) {
|
||||
throw JSONRPCError(RPC_INTERNAL_ERROR, "Transaction does not exist in wallet.");
|
||||
throw JSONRPCError(RPC_INVALID_PARAMETER, "Transaction does not exist in wallet.");
|
||||
}
|
||||
|
||||
return NullUniValue;
|
||||
|
|
Loading…
Reference in a new issue