Changeset View
Changeset View
Standalone View
Standalone View
test/functional/rpc_rawtransaction.py
Show First 20 Lines • Show All 96 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
self.nodes[0].createrawtransaction, [], {}, 0, 'foo') | self.nodes[0].createrawtransaction, [], {}, 0, 'foo') | ||||
# Test `createrawtransaction` invalid `inputs` | # Test `createrawtransaction` invalid `inputs` | ||||
txid = '1d1d4e24ed99057e84c3f80fd8fbec79ed9e1acee37da269356ecea000000000' | txid = '1d1d4e24ed99057e84c3f80fd8fbec79ed9e1acee37da269356ecea000000000' | ||||
assert_raises_rpc_error(-3, "Expected type array", | assert_raises_rpc_error(-3, "Expected type array", | ||||
self.nodes[0].createrawtransaction, 'foo', {}) | self.nodes[0].createrawtransaction, 'foo', {}) | ||||
assert_raises_rpc_error(-1, "JSON value is not an object as expected", | assert_raises_rpc_error(-1, "JSON value is not an object as expected", | ||||
self.nodes[0].createrawtransaction, ['foo'], {}) | self.nodes[0].createrawtransaction, ['foo'], {}) | ||||
assert_raises_rpc_error(-8, "txid must be hexadecimal string", | assert_raises_rpc_error(-1, | ||||
self.nodes[0].createrawtransaction, [{}], {}) | "JSON value is not a string as expected", | ||||
assert_raises_rpc_error(-8, "txid must be hexadecimal string", | self.nodes[0].createrawtransaction, | ||||
self.nodes[0].createrawtransaction, [{'txid': 'foo'}], {}) | [{}], | ||||
{}) | |||||
assert_raises_rpc_error(-8, | |||||
"txid must be of length 64 (not 3, for 'foo')", | |||||
self.nodes[0].createrawtransaction, | |||||
[{'txid': 'foo'}], | |||||
{}) | |||||
assert_raises_rpc_error(-8, | |||||
"txid must be hexadecimal string (not 'ZZZ7bb8b1697ea987f3b223ba7819250cae33efacb068d23dc24859824a77844')", | |||||
self.nodes[0].createrawtransaction, | |||||
[{'txid': 'ZZZ7bb8b1697ea987f3b223ba7819250cae33efacb068d23dc24859824a77844'}], | |||||
{}) | |||||
assert_raises_rpc_error(-8, "Invalid parameter, missing vout key", | assert_raises_rpc_error(-8, "Invalid parameter, missing vout key", | ||||
self.nodes[0].createrawtransaction, [{'txid': txid}], {}) | self.nodes[0].createrawtransaction, [{'txid': txid}], {}) | ||||
assert_raises_rpc_error(-8, "Invalid parameter, vout must be a number", | assert_raises_rpc_error(-8, "Invalid parameter, vout must be a number", | ||||
self.nodes[0].createrawtransaction, [{'txid': txid, 'vout': 'foo'}], {}) | self.nodes[0].createrawtransaction, [{'txid': txid, 'vout': 'foo'}], {}) | ||||
assert_raises_rpc_error(-8, "Invalid parameter, vout must be positive", | assert_raises_rpc_error(-8, "Invalid parameter, vout must be positive", | ||||
self.nodes[0].createrawtransaction, [{'txid': txid, 'vout': -1}], {}) | self.nodes[0].createrawtransaction, [{'txid': txid, 'vout': -1}], {}) | ||||
assert_raises_rpc_error(-8, "Invalid parameter, sequence number is out of range", | assert_raises_rpc_error(-8, "Invalid parameter, sequence number is out of range", | ||||
self.nodes[0].createrawtransaction, [{'txid': txid, 'vout': 0, 'sequence': -1}], {}) | self.nodes[0].createrawtransaction, [{'txid': txid, 'vout': 0, 'sequence': -1}], {}) | ||||
▲ Show 20 Lines • Show All 101 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
# block | # block | ||||
gottx = self.nodes[0].getrawtransaction(tx, True) | gottx = self.nodes[0].getrawtransaction(tx, True) | ||||
assert_equal(gottx['txid'], tx) | assert_equal(gottx['txid'], tx) | ||||
assert 'in_active_chain' not in gottx | assert 'in_active_chain' not in gottx | ||||
# We should not get the tx if we provide an unrelated block | # We should not get the tx if we provide an unrelated block | ||||
assert_raises_rpc_error(-5, "No such transaction found", | assert_raises_rpc_error(-5, "No such transaction found", | ||||
self.nodes[0].getrawtransaction, tx, True, block2) | self.nodes[0].getrawtransaction, tx, True, block2) | ||||
# An invalid block hash should raise the correct errors | # An invalid block hash should raise the correct errors | ||||
assert_raises_rpc_error(-8, "parameter 3 must be hexadecimal", | assert_raises_rpc_error(-1, | ||||
self.nodes[0].getrawtransaction, tx, True, True) | "JSON value is not a string as expected", | ||||
assert_raises_rpc_error(-8, "parameter 3 must be hexadecimal", | self.nodes[0].getrawtransaction, | ||||
self.nodes[0].getrawtransaction, tx, True, "foobar") | tx, | ||||
assert_raises_rpc_error(-8, "parameter 3 must be of length 64", | True, | ||||
self.nodes[0].getrawtransaction, tx, True, "abcd1234") | True) | ||||
assert_raises_rpc_error(-8, | |||||
"parameter 3 must be of length 64 (not 6, for 'foobar')", | |||||
self.nodes[0].getrawtransaction, | |||||
tx, | |||||
True, | |||||
"foobar") | |||||
assert_raises_rpc_error(-8, | |||||
"parameter 3 must be of length 64 (not 8, for 'abcd1234')", | |||||
self.nodes[0].getrawtransaction, | |||||
tx, | |||||
True, | |||||
"abcd1234") | |||||
assert_raises_rpc_error( | |||||
-8, | |||||
"parameter 3 must be hexadecimal string (not 'ZZZ0000000000000000000000000000000000000000000000000000000000000')", | |||||
self.nodes[0].getrawtransaction, | |||||
tx, | |||||
True, | |||||
"ZZZ0000000000000000000000000000000000000000000000000000000000000") | |||||
assert_raises_rpc_error(-5, "Block hash not found", self.nodes[0].getrawtransaction, | assert_raises_rpc_error(-5, "Block hash not found", self.nodes[0].getrawtransaction, | ||||
tx, True, "0000000000000000000000000000000000000000000000000000000000000000") | tx, True, "0000000000000000000000000000000000000000000000000000000000000000") | ||||
# Undo the blocks and check in_active_chain | # Undo the blocks and check in_active_chain | ||||
self.nodes[0].invalidateblock(block1) | self.nodes[0].invalidateblock(block1) | ||||
gottx = self.nodes[0].getrawtransaction( | gottx = self.nodes[0].getrawtransaction( | ||||
txid=tx, verbose=True, blockhash=block1) | txid=tx, verbose=True, blockhash=block1) | ||||
assert_equal(gottx['in_active_chain'], False) | assert_equal(gottx['in_active_chain'], False) | ||||
self.nodes[0].reconsiderblock(block1) | self.nodes[0].reconsiderblock(block1) | ||||
▲ Show 20 Lines • Show All 296 Lines • Show Last 20 Lines |