mirror of
https://github.com/dashpay/dash.git
synced 2024-12-26 12:32:48 +01:00
Merge #9025: getrawtransaction should take a bool for verbose
240189b
add testcases for getrawtransaction (John Newbery)ce2bb23
getrawtransaction should take a bool for verbose (jnewbery)
This commit is contained in:
parent
481bab7456
commit
ce3f38d6ca
@ -2,11 +2,15 @@
|
|||||||
# Copyright (c) 2014-2016 The Bitcoin Core developers
|
# Copyright (c) 2014-2016 The Bitcoin Core developers
|
||||||
# Distributed under the MIT software license, see the accompanying
|
# Distributed under the MIT software license, see the accompanying
|
||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
"""rawtranscation RPCs QA test.
|
||||||
|
|
||||||
#
|
# Tests the following RPCs:
|
||||||
# Test re-org scenarios with a mempool that contains transactions
|
# - createrawtransaction
|
||||||
# that spend (directly or indirectly) coinbase transactions.
|
# - signrawtransaction
|
||||||
#
|
# - sendrawtransaction
|
||||||
|
# - decoderawtransaction
|
||||||
|
# - getrawtransaction
|
||||||
|
"""
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import *
|
from test_framework.util import *
|
||||||
@ -138,6 +142,33 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||||||
self.sync_all()
|
self.sync_all()
|
||||||
assert_equal(self.nodes[0].getbalance(), bal+Decimal('500.00000000')+Decimal('2.19000000')) #block reward + tx
|
assert_equal(self.nodes[0].getbalance(), bal+Decimal('500.00000000')+Decimal('2.19000000')) #block reward + tx
|
||||||
|
|
||||||
|
# getrawtransaction tests
|
||||||
|
# 1. valid parameters - only supply txid
|
||||||
|
txHash = rawTx["hash"]
|
||||||
|
assert_equal(self.nodes[0].getrawtransaction(txHash), rawTxSigned['hex'])
|
||||||
|
|
||||||
|
# 2. valid parameters - supply txid and 0 for non-verbose
|
||||||
|
assert_equal(self.nodes[0].getrawtransaction(txHash, 0), rawTxSigned['hex'])
|
||||||
|
|
||||||
|
# 3. valid parameters - supply txid and False for non-verbose
|
||||||
|
assert_equal(self.nodes[0].getrawtransaction(txHash, False), rawTxSigned['hex'])
|
||||||
|
|
||||||
|
# 4. valid parameters - supply txid and 1 for verbose.
|
||||||
|
# We only check the "hex" field of the output so we don't need to update this test every time the output format changes.
|
||||||
|
assert_equal(self.nodes[0].getrawtransaction(txHash, 1)["hex"], rawTxSigned['hex'])
|
||||||
|
|
||||||
|
# 5. valid parameters - supply txid and True for non-verbose
|
||||||
|
assert_equal(self.nodes[0].getrawtransaction(txHash, True)["hex"], rawTxSigned['hex'])
|
||||||
|
|
||||||
|
# 6. invalid parameters - supply txid and string "Flase"
|
||||||
|
assert_raises(JSONRPCException, self.nodes[0].getrawtransaction, txHash, "Flase")
|
||||||
|
|
||||||
|
# 7. invalid parameters - supply txid and empty array
|
||||||
|
assert_raises(JSONRPCException, self.nodes[0].getrawtransaction, txHash, [])
|
||||||
|
|
||||||
|
# 8. invalid parameters - supply txid and empty dict
|
||||||
|
assert_raises(JSONRPCException, self.nodes[0].getrawtransaction, txHash, {})
|
||||||
|
|
||||||
inputs = [ {'txid' : "1d1d4e24ed99057e84c3f80fd8fbec79ed9e1acee37da269356ecea000000000", 'vout' : 1, 'sequence' : 1000}]
|
inputs = [ {'txid' : "1d1d4e24ed99057e84c3f80fd8fbec79ed9e1acee37da269356ecea000000000", 'vout' : 1, 'sequence' : 1000}]
|
||||||
outputs = { self.nodes[0].getnewaddress() : 1 }
|
outputs = { self.nodes[0].getnewaddress() : 1 }
|
||||||
rawtx = self.nodes[0].createrawtransaction(inputs, outputs)
|
rawtx = self.nodes[0].createrawtransaction(inputs, outputs)
|
||||||
|
@ -150,17 +150,17 @@ UniValue getrawtransaction(const JSONRPCRequest& request)
|
|||||||
"or there is an unspent output in the utxo for this transaction. To make it always work,\n"
|
"or there is an unspent output in the utxo for this transaction. To make it always work,\n"
|
||||||
"you need to maintain a transaction index, using the -txindex command line option.\n"
|
"you need to maintain a transaction index, using the -txindex command line option.\n"
|
||||||
"\nReturn the raw transaction data.\n"
|
"\nReturn the raw transaction data.\n"
|
||||||
"\nIf verbose=0, returns a string that is serialized, hex-encoded data for 'txid'.\n"
|
"\nIf verbose is 'true', returns an Object with information about 'txid'.\n"
|
||||||
"If verbose is non-zero, returns an Object with information about 'txid'.\n"
|
"If verbose is 'false' or omitted, returns a string that is serialized, hex-encoded data for 'txid'.\n"
|
||||||
|
|
||||||
"\nArguments:\n"
|
"\nArguments:\n"
|
||||||
"1. \"txid\" (string, required) The transaction id\n"
|
"1. \"txid\" (string, required) The transaction id\n"
|
||||||
"2. verbose (numeric, optional, default=0) If 0, return a string, other return a json object\n"
|
"2. verbose (bool, optional, default=false) If true, return a string, other return a json object\n"
|
||||||
|
|
||||||
"\nResult (if verbose is not set or set to 0):\n"
|
"\nResult (if verbose is not set or set to false):\n"
|
||||||
"\"data\" (string) The serialized, hex-encoded data for 'txid'\n"
|
"\"data\" (string) The serialized, hex-encoded data for 'txid'\n"
|
||||||
|
|
||||||
"\nResult (if verbose > 0):\n"
|
"\nResult (if verbose is set to true):\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" \"hex\" : \"data\", (string) The serialized, hex-encoded data for 'txid'\n"
|
" \"hex\" : \"data\", (string) The serialized, hex-encoded data for 'txid'\n"
|
||||||
" \"txid\" : \"id\", (string) The transaction id (same as provided)\n"
|
" \"txid\" : \"id\", (string) The transaction id (same as provided)\n"
|
||||||
@ -204,17 +204,31 @@ UniValue getrawtransaction(const JSONRPCRequest& request)
|
|||||||
|
|
||||||
"\nExamples:\n"
|
"\nExamples:\n"
|
||||||
+ HelpExampleCli("getrawtransaction", "\"mytxid\"")
|
+ HelpExampleCli("getrawtransaction", "\"mytxid\"")
|
||||||
+ HelpExampleCli("getrawtransaction", "\"mytxid\" 1")
|
+ HelpExampleCli("getrawtransaction", "\"mytxid\" true")
|
||||||
+ HelpExampleRpc("getrawtransaction", "\"mytxid\", 1")
|
+ HelpExampleRpc("getrawtransaction", "\"mytxid\", true")
|
||||||
);
|
);
|
||||||
|
|
||||||
LOCK(cs_main);
|
LOCK(cs_main);
|
||||||
|
|
||||||
uint256 hash = ParseHashV(request.params[0], "parameter 1");
|
uint256 hash = ParseHashV(request.params[0], "parameter 1");
|
||||||
|
|
||||||
|
// Accept either a bool (true) or a num (>=1) to indicate verbose output.
|
||||||
bool fVerbose = false;
|
bool fVerbose = false;
|
||||||
if (request.params.size() > 1)
|
if (request.params.size() > 1) {
|
||||||
fVerbose = (request.params[1].get_int() != 0);
|
if (request.params[1].isNum()) {
|
||||||
|
if (request.params[1].get_int() != 0) {
|
||||||
|
fVerbose = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(request.params[1].isBool()) {
|
||||||
|
if(request.params[1].isTrue()) {
|
||||||
|
fVerbose = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
throw JSONRPCError(RPC_TYPE_ERROR, "Invalid type provided. Verbose parameter must be a boolean.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CTransaction tx;
|
CTransaction tx;
|
||||||
uint256 hashBlock;
|
uint256 hashBlock;
|
||||||
|
Loading…
Reference in New Issue
Block a user