def testNodeKeysChanged(looper, txnPoolNodeSet, tdir, tconf, sdk_node_theta_added, sdk_pool_handle, allPluginsPath=None): new_steward_wallet, new_node = sdk_node_theta_added new_node.stop() looper.removeProdable(name=new_node.name) nodeHa, nodeCHa = HA(*new_node.nodestack.ha), HA(*new_node.clientstack.ha) sigseed = randomString(32).encode() verkey = base58.b58encode(SimpleSigner(seed=sigseed).naclSigner.verraw).decode("utf-8") sdk_change_node_keys(looper, new_node, new_steward_wallet, sdk_pool_handle, verkey) config_helper = PNodeConfigHelper(new_node.name, tconf, chroot=tdir) initNodeKeysForBothStacks(new_node.name, config_helper.keys_dir, sigseed, override=True) logger.debug("{} starting with HAs {} {}".format(new_node, nodeHa, nodeCHa)) node = TestNode(new_node.name, config_helper=config_helper, config=tconf, ha=nodeHa, cliha=nodeCHa, pluginPaths=allPluginsPath) looper.add(node) # The last element of `txnPoolNodeSet` is the node Theta that was just # stopped txnPoolNodeSet[-1] = node looper.run(checkNodesConnected(txnPoolNodeSet)) waitNodeDataEquality(looper, node, *txnPoolNodeSet[:-1]) sdk_ensure_pool_functional(looper, txnPoolNodeSet, new_steward_wallet, sdk_pool_handle)
def testNodeInitRemoteKeysErrorsNotSuppressed(looper, txnPoolNodeSet, sdk_node_theta_added, monkeypatch, sdk_pool_handle): TEST_EXCEPTION_MESSAGE = 'Failed to create some cert files' new_steward_wallet, new_node = sdk_node_theta_added new_node.stop() looper.removeProdable(name=new_node.name) nodeHa, nodeCHa = HA(*new_node.nodestack.ha), HA(*new_node.clientstack.ha) sigseed = randomString(32).encode() verkey = base58.b58encode(SimpleSigner(seed=sigseed).naclSigner.verraw) def initRemoteKeysMock(name, *args, **kwargs): if name in [node.name for node in txnPoolNodeSet]: raise OSError(TEST_EXCEPTION_MESSAGE) else: return initRemoteKeys(name, *args, **kwargs) def wrap(node): oldMethod = node.poolManager.stackKeysChanged def stackKeysChanged(self, *args, **kwargs): with pytest.raises(OSError, message="exception was suppressed") as excinfo: oldMethod(*args, **kwargs) excinfo.match(r'{}'.format(TEST_EXCEPTION_MESSAGE)) return 0 node.poolManager.stackKeysChanged = types.MethodType( stackKeysChanged, node.poolManager) for node in txnPoolNodeSet: wrap(node) monkeypatch.setattr(stack_manager, 'initRemoteKeys', initRemoteKeysMock) sdk_change_node_keys(looper, new_node, new_steward_wallet, sdk_pool_handle, verkey) monkeypatch.undo()
def testNodeInitRemoteKeysErrorsNotSuppressed(looper, txnPoolNodeSet, sdk_node_theta_added, monkeypatch, sdk_pool_handle): TEST_EXCEPTION_MESSAGE = 'Failed to create some cert files' new_steward_wallet, new_node = sdk_node_theta_added new_node.stop() looper.removeProdable(name=new_node.name) nodeHa, nodeCHa = HA(*new_node.nodestack.ha), HA(*new_node.clientstack.ha) sigseed = randomString(32).encode() verkey = base58.b58encode(SimpleSigner(seed=sigseed).naclSigner.verraw).decode("utf-8") def initRemoteKeysMock(name, *args, **kwargs): if name in [node.name for node in txnPoolNodeSet]: raise OSError(TEST_EXCEPTION_MESSAGE) else: return initRemoteKeys(name, *args, **kwargs) def wrap(node): oldMethod = node.poolManager.stackKeysChanged def stackKeysChanged(self, *args, **kwargs): with pytest.raises(OSError, message="exception was suppressed") as excinfo: oldMethod(*args, **kwargs) excinfo.match(r'{}'.format(TEST_EXCEPTION_MESSAGE)) return 0 node.poolManager.stackKeysChanged = types.MethodType(stackKeysChanged, node.poolManager) for node in txnPoolNodeSet: wrap(node) monkeypatch.setattr(stack_manager, 'initRemoteKeys', initRemoteKeysMock) sdk_change_node_keys(looper, new_node, new_steward_wallet, sdk_pool_handle, verkey) monkeypatch.undo()
def test_edit_node_with_invalid_verkey(looper, txnPoolNodeSet, sdk_pool_handle, sdk_wallet_steward): with pytest.raises(RequestNackedException) as e: sdk_change_node_keys(looper, txnPoolNodeSet[0], sdk_wallet_steward, sdk_pool_handle, invalid_dest) e.match('Node\'s verkey is not correct Ed25519 key.')