Changeset View
Changeset View
Standalone View
Standalone View
test/functional/abc_rpc_addavalanchenode.py
Show All 13 Lines | from test_framework.messages import ( | ||||
hash256, | hash256, | ||||
ser_string, | ser_string, | ||||
) | ) | ||||
from test_framework.p2p import P2PInterface | from test_framework.p2p import P2PInterface | ||||
from test_framework.test_framework import BitcoinTestFramework | from test_framework.test_framework import BitcoinTestFramework | ||||
from test_framework.util import ( | from test_framework.util import ( | ||||
assert_raises_rpc_error, | assert_raises_rpc_error, | ||||
) | ) | ||||
from test_framework.wallet_util import bytes_to_wif | |||||
def add_interface_node(test_node) -> int: | def add_interface_node(test_node) -> int: | ||||
"""Create a peer, connect it to test_node, return the nodeid of the peer as | """Create a peer, connect it to test_node, return the nodeid of the peer as | ||||
registered by test_node. | registered by test_node. | ||||
""" | """ | ||||
n = P2PInterface() | n = P2PInterface() | ||||
test_node.add_p2p_connection(n) | test_node.add_p2p_connection(n) | ||||
Show All 10 Lines | def run_test(self): | ||||
node = self.nodes[0] | node = self.nodes[0] | ||||
addrkey0 = node.get_deterministic_priv_key() | addrkey0 = node.get_deterministic_priv_key() | ||||
blockhashes = node.generatetoaddress(2, addrkey0.address) | blockhashes = node.generatetoaddress(2, addrkey0.address) | ||||
stakes = create_coinbase_stakes(node, [blockhashes[0]], addrkey0.key) | stakes = create_coinbase_stakes(node, [blockhashes[0]], addrkey0.key) | ||||
privkey = ECKey() | privkey = ECKey() | ||||
privkey.generate() | privkey.generate() | ||||
wif_privkey = bytes_to_wif(privkey.get_bytes()) | |||||
proof_master = privkey.get_pubkey().get_bytes().hex() | proof_master = privkey.get_pubkey().get_bytes().hex() | ||||
proof_sequence = 42 | proof_sequence = 42 | ||||
proof_expiration = 2000000000 | proof_expiration = 2000000000 | ||||
proof = node.buildavalancheproof( | proof = node.buildavalancheproof( | ||||
proof_sequence, proof_expiration, proof_master, stakes) | proof_sequence, proof_expiration, wif_privkey, stakes) | ||||
nodeid = add_interface_node(node) | nodeid = add_interface_node(node) | ||||
def check_addavalanchenode_error( | def check_addavalanchenode_error( | ||||
error_code, error_message, nodeid=nodeid, proof=proof, pubkey=proof_master, delegation=None): | error_code, error_message, nodeid=nodeid, proof=proof, pubkey=proof_master, delegation=None): | ||||
assert_raises_rpc_error( | assert_raises_rpc_error( | ||||
error_code, | error_code, | ||||
error_message, | error_message, | ||||
node.addavalanchenode, | node.addavalanchenode, | ||||
nodeid, | nodeid, | ||||
pubkey, | pubkey, | ||||
proof, | proof, | ||||
delegation, | delegation, | ||||
) | ) | ||||
self.log.info("Invalid proof") | self.log.info("Invalid proof") | ||||
check_addavalanchenode_error(-22, | check_addavalanchenode_error(-22, | ||||
"Proof must be an hexadecimal string", | "Proof must be an hexadecimal string", | ||||
proof="not a proof") | proof="not a proof") | ||||
check_addavalanchenode_error(-22, | check_addavalanchenode_error(-22, | ||||
"Proof has invalid format", | "Proof has invalid format", | ||||
proof="f000") | proof="f000") | ||||
no_stake = node.buildavalancheproof( | no_stake = node.buildavalancheproof( | ||||
proof_sequence, proof_expiration, proof_master, []) | proof_sequence, proof_expiration, wif_privkey, []) | ||||
check_addavalanchenode_error(-8, | check_addavalanchenode_error(-8, | ||||
"The proof is invalid: no-stake", | "The proof is invalid: no-stake", | ||||
proof=no_stake) | proof=no_stake) | ||||
self.log.info("Node doesn't exist") | self.log.info("Node doesn't exist") | ||||
check_addavalanchenode_error(-8, | check_addavalanchenode_error(-8, | ||||
f"The node does not exist: {nodeid + 1}", | f"The node does not exist: {nodeid + 1}", | ||||
nodeid=nodeid + 1) | nodeid=nodeid + 1) | ||||
▲ Show 20 Lines • Show All 103 Lines • Show Last 20 Lines |