import os import shutil from pathlib import Path import pytest from pyhmy import cli TEMP_DIR = "/tmp/pyhmy-testing/test-cli" BINARY_FILE_PATH = f"{TEMP_DIR}/bin/cli_test_binary" @pytest.fixture( scope = "session", autouse = True ) def setup(): shutil.rmtree( TEMP_DIR, ignore_errors = True ) os.makedirs( TEMP_DIR, exist_ok = True ) def test_download_cli(): env = cli.download( BINARY_FILE_PATH, replace = False, verbose = False ) cli.environment.update( env ) assert os.path.exists( BINARY_FILE_PATH ) def test_is_valid(): bad_file_path = os.path.realpath( f"{TEMP_DIR}/test_is_valid/bad_hmy" ) shutil.rmtree( Path( bad_file_path ).parent, ignore_errors = True ) os.makedirs( Path( bad_file_path ).parent, exist_ok = True ) Path( bad_file_path ).touch() assert os.path.exists( BINARY_FILE_PATH ), "harmony cli did not download" assert os.path.exists( bad_file_path ), "did not create bad binary" assert cli.is_valid_binary( BINARY_FILE_PATH ) assert not cli.is_valid_binary( bad_file_path ) def test_bad_bin_set(): bad_file_path = os.path.realpath( f"{TEMP_DIR}/test_bad_bin_set/hmy" ) shutil.rmtree( Path( bad_file_path ).parent, ignore_errors = True ) os.makedirs( Path( bad_file_path ).parent, exist_ok = True ) Path( bad_file_path ).touch() is_set = cli.set_binary( bad_file_path ) assert not is_set assert cli.get_binary_path() != bad_file_path def test_bin_set(): cli.set_binary( BINARY_FILE_PATH ) cli_binary_path = cli.get_binary_path() assert os.path.realpath( cli_binary_path ) == os.path.realpath( BINARY_FILE_PATH ) def test_update_keystore(): cli.single_call( "hmy keys add test1" ) addrs = cli.get_accounts_keystore() assert "test1" in addrs.keys() check_addr = addrs[ "test1" ] accounts_list = cli.get_accounts( check_addr ) check_acc = accounts_list[ 0 ] assert check_acc == "test1" raw_cli_keys_list_print = cli.single_call( "hmy keys list", timeout = 2 ) assert check_addr in raw_cli_keys_list_print assert check_acc in raw_cli_keys_list_print assert addrs[ check_acc ] == check_addr cli.remove_address( check_addr ) assert check_addr not in addrs.values() assert "test1" not in addrs.keys()