fix cryptoconditions qa
This commit is contained in:
@@ -91,45 +91,6 @@ def test_oversize_fulfillment(inp):
|
|||||||
assert 'scriptsig-size' in str(e), str(e)
|
assert 'scriptsig-size' in str(e), str(e)
|
||||||
|
|
||||||
|
|
||||||
@fanout_input(6)
|
|
||||||
def test_eval_basic(inp):
|
|
||||||
eval_cond = {
|
|
||||||
'type': 'eval-sha-256',
|
|
||||||
'method': 'testEval',
|
|
||||||
'params': encode_base64('testEval')
|
|
||||||
}
|
|
||||||
|
|
||||||
# Setup some eval outputs
|
|
||||||
spend0 = {
|
|
||||||
'inputs': [inp],
|
|
||||||
'outputs': [
|
|
||||||
{'amount': 500, 'script': {'condition': eval_cond}},
|
|
||||||
{'amount': 500, 'script': {'condition': eval_cond}}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
spend0_txid = submit(sign(spend0))
|
|
||||||
assert rpc.getrawtransaction(spend0_txid)
|
|
||||||
|
|
||||||
# Test a good fulfillment
|
|
||||||
spend1 = {
|
|
||||||
'inputs': [{'txid': spend0_txid, 'idx': 0, 'script': {'fulfillment': eval_cond}}],
|
|
||||||
'outputs': [{'amount': 500, 'script': {'condition': eval_cond}}]
|
|
||||||
}
|
|
||||||
spend1_txid = submit(sign(spend1))
|
|
||||||
assert rpc.getrawtransaction(spend1_txid)
|
|
||||||
|
|
||||||
# Test a bad fulfillment
|
|
||||||
eval_cond['params'] = ''
|
|
||||||
spend2 = {
|
|
||||||
'inputs': [{'txid': spend0_txid, 'idx': 1, 'script': {'fulfillment': eval_cond}}],
|
|
||||||
'outputs': [{'amount': 500, 'script': {'condition': eval_cond}}]
|
|
||||||
}
|
|
||||||
try:
|
|
||||||
assert not submit(sign(spend2)), 'should raise an error'
|
|
||||||
except RPCError as e:
|
|
||||||
assert SCRIPT_FALSE in str(e), str(e)
|
|
||||||
|
|
||||||
|
|
||||||
@fanout_input(7)
|
@fanout_input(7)
|
||||||
def test_secp256k1_condition(inp):
|
def test_secp256k1_condition(inp):
|
||||||
ec_cond = {
|
ec_cond = {
|
||||||
@@ -169,61 +130,6 @@ def test_secp256k1_condition(inp):
|
|||||||
except RPCError as e:
|
except RPCError as e:
|
||||||
assert SCRIPT_FALSE in str(e), str(e)
|
assert SCRIPT_FALSE in str(e), str(e)
|
||||||
|
|
||||||
|
|
||||||
@fanout_input(20)
|
|
||||||
def test_eval_replacement(inp):
|
|
||||||
eval_cond = {
|
|
||||||
'type': 'eval-sha-256',
|
|
||||||
'method': 'testReplace',
|
|
||||||
'params': '',
|
|
||||||
}
|
|
||||||
|
|
||||||
# Setup replaceable output
|
|
||||||
spend0 = {
|
|
||||||
'inputs': [inp],
|
|
||||||
'outputs': [
|
|
||||||
{'amount': 1000, 'script': {'condition': eval_cond}},
|
|
||||||
]
|
|
||||||
}
|
|
||||||
spend0_txid = submit(sign(spend0))
|
|
||||||
assert rpc.getrawtransaction(spend0_txid)
|
|
||||||
|
|
||||||
b64_1 = 'AQ=='
|
|
||||||
spend1 = {
|
|
||||||
'inputs': [{'txid': spend0_txid, 'idx': 0, 'script': {'fulfillment': eval_cond}}],
|
|
||||||
'outputs': [{'amount': 1000, 'script': {'op_return': b64_1}}]
|
|
||||||
}
|
|
||||||
|
|
||||||
b64_2 = 'Ag=='
|
|
||||||
spend2 = {
|
|
||||||
'inputs': [{'txid': spend0_txid, 'idx': 0, 'script': {'fulfillment': eval_cond}}],
|
|
||||||
'outputs': [{'amount': 1000, 'script': {'op_return': b64_2}}]
|
|
||||||
}
|
|
||||||
|
|
||||||
# If spend2 is already registered, return true, as this test has already been performed
|
|
||||||
spend2_txid = hoek.encodeTx(sign(spend2))['txid']
|
|
||||||
try:
|
|
||||||
rpc.getrawtransaction(spend2_txid)
|
|
||||||
return
|
|
||||||
except RPCError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
# Send replaceable
|
|
||||||
spend1_txid = submit(sign(spend1))
|
|
||||||
assert rpc.getrawtransaction(spend1_txid)
|
|
||||||
|
|
||||||
|
|
||||||
# Send replacement (higher OP_RETURN data)
|
|
||||||
spend2_txid = submit(sign(spend2))
|
|
||||||
assert rpc.getrawtransaction(spend2_txid)
|
|
||||||
|
|
||||||
# Now the first transaction has gone
|
|
||||||
try:
|
|
||||||
assert not rpc.getrawtransaction(spend1_txid), "should raise an error"
|
|
||||||
except RPCError as e:
|
|
||||||
assert 'No information available about transaction' in str(e), str(e)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
for name, f in globals().items():
|
for name, f in globals().items():
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class JsonClient(object):
|
|||||||
|
|
||||||
def run_cmd(cmd):
|
def run_cmd(cmd):
|
||||||
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
|
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
|
||||||
assert proc.wait() == 0
|
assert proc.wait() == 0, cmd
|
||||||
return proc.stdout.read()
|
return proc.stdout.read()
|
||||||
|
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ def wait_for_block(height):
|
|||||||
try:
|
try:
|
||||||
return rpc.getblock(str(height))
|
return rpc.getblock(str(height))
|
||||||
except RPCError as e:
|
except RPCError as e:
|
||||||
time.sleep(3)
|
time.sleep(1)
|
||||||
raise Exception('Time out waiting for block at height %s' % height)
|
raise Exception('Time out waiting for block at height %s' % height)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user