forked from TrueCloudLab/frostfs-testlib
Rename neofs to frostfs
Signed-off-by: Yulia Kovshova <y.kovshova@yadro.com>
This commit is contained in:
parent
5a2c7ac98d
commit
6d3b6f0f2f
83 changed files with 330 additions and 338 deletions
0
src/frostfs_testlib/utils/__init__.py
Normal file
0
src/frostfs_testlib/utils/__init__.py
Normal file
69
src/frostfs_testlib/utils/converters.py
Normal file
69
src/frostfs_testlib/utils/converters.py
Normal file
|
@ -0,0 +1,69 @@
|
|||
import base64
|
||||
import binascii
|
||||
import json
|
||||
|
||||
import base58
|
||||
from neo3.wallet import wallet as neo3_wallet
|
||||
|
||||
|
||||
def str_to_ascii_hex(input: str) -> str:
|
||||
b = binascii.hexlify(input.encode())
|
||||
return str(b)[2:-1]
|
||||
|
||||
|
||||
def ascii_hex_to_str(input: str) -> bytes:
|
||||
return bytes.fromhex(input)
|
||||
|
||||
|
||||
# Two functions below do parsing of Base64-encoded byte arrays which
|
||||
# tests receive from Neo node RPC calls.
|
||||
|
||||
|
||||
def process_b64_bytearray_reverse(data: str) -> bytes:
|
||||
"""
|
||||
This function decodes input data from base64, reverses the byte
|
||||
array and returns its string representation.
|
||||
"""
|
||||
arr = bytearray(base64.standard_b64decode(data))
|
||||
arr.reverse()
|
||||
return binascii.b2a_hex(arr)
|
||||
|
||||
|
||||
def process_b64_bytearray(data: str) -> bytes:
|
||||
"""
|
||||
This function decodes input data from base64 and returns the
|
||||
bytearray string representation.
|
||||
"""
|
||||
arr = bytearray(base64.standard_b64decode(data))
|
||||
return binascii.b2a_hex(arr)
|
||||
|
||||
|
||||
def contract_hash_to_address(chash: str) -> str:
|
||||
"""
|
||||
This function accepts contract hash in BE, then translates in to LE,
|
||||
prepends NEO wallet prefix and encodes to base58. It is equal to
|
||||
`UInt160ToString` method in NEO implementations.
|
||||
"""
|
||||
be = bytearray(bytes.fromhex(chash))
|
||||
be.reverse()
|
||||
return base58.b58encode_check(b"\x35" + bytes(be)).decode()
|
||||
|
||||
|
||||
def get_contract_hash_from_manifest(manifest_path: str) -> str:
|
||||
with open(manifest_path) as m:
|
||||
data = json.load(m)
|
||||
# cut off '0x' and return the hash
|
||||
return data["abi"]["hash"][2:]
|
||||
|
||||
|
||||
def get_wif_from_private_key(priv_key: bytes) -> str:
|
||||
wif_version = b"\x80"
|
||||
compressed_flag = b"\x01"
|
||||
wif = base58.b58encode_check(wif_version + priv_key + compressed_flag)
|
||||
return wif.decode("utf-8")
|
||||
|
||||
|
||||
def load_wallet(path: str, passwd: str = "") -> neo3_wallet.Wallet:
|
||||
with open(path, "r") as wallet_file:
|
||||
wlt_data = wallet_file.read()
|
||||
return neo3_wallet.Wallet.from_json(json.loads(wlt_data), password=passwd)
|
38
src/frostfs_testlib/utils/wallet.py
Normal file
38
src/frostfs_testlib/utils/wallet.py
Normal file
|
@ -0,0 +1,38 @@
|
|||
import json
|
||||
import logging
|
||||
|
||||
from neo3.wallet import wallet as neo3_wallet
|
||||
from neo3.wallet import account as neo3_account
|
||||
|
||||
logger = logging.getLogger("frostfs.testlib.utils")
|
||||
|
||||
|
||||
def init_wallet(wallet_path: str, wallet_password: str):
|
||||
"""
|
||||
Create new wallet and new account.
|
||||
Args:
|
||||
wallet_path: The path to the wallet to save wallet.
|
||||
wallet_password: The password for new wallet.
|
||||
"""
|
||||
wallet = neo3_wallet.Wallet()
|
||||
account = neo3_account.Account.create_new(wallet_password)
|
||||
wallet.account_add(account)
|
||||
with open(wallet_path, "w") as out:
|
||||
json.dump(wallet.to_json(), out)
|
||||
logger.info(f"Init new wallet: {wallet_path}, address: {account.address}")
|
||||
|
||||
|
||||
def get_last_address_from_wallet(wallet_path: str, wallet_password: str):
|
||||
"""
|
||||
Extracting the last address from the given wallet.
|
||||
Args:
|
||||
wallet_path: The path to the wallet to extract address from.
|
||||
wallet_password: The password for the given wallet.
|
||||
Returns:
|
||||
The address for the wallet.
|
||||
"""
|
||||
with open(wallet_path) as wallet_file:
|
||||
wallet = neo3_wallet.Wallet.from_json(json.load(wallet_file), password=wallet_password)
|
||||
address = wallet.accounts[-1].address
|
||||
logger.info(f"got address: {address}")
|
||||
return address
|
Loading…
Add table
Add a link
Reference in a new issue