payment keywords moved to keywords repo (#60)
Signed-off-by: anastasia prasolova <anastasia@nspcc.ru>
This commit is contained in:
parent
d841f3f9ef
commit
17047720fd
12 changed files with 121 additions and 168 deletions
|
@ -23,22 +23,6 @@ ROBOT_AUTO_KEYWORDS = False
|
||||||
NEOFS_CLI_EXEC = os.getenv('NEOFS_CLI_EXEC', 'neofs-cli')
|
NEOFS_CLI_EXEC = os.getenv('NEOFS_CLI_EXEC', 'neofs-cli')
|
||||||
NEOGO_CLI_EXEC = os.getenv('NEOGO_CLI_EXEC', 'neo-go')
|
NEOGO_CLI_EXEC = os.getenv('NEOGO_CLI_EXEC', 'neo-go')
|
||||||
|
|
||||||
@keyword('Transfer Mainnet Gas')
|
|
||||||
def transfer_mainnet_gas(wallet: str, address: str, address_to: str, amount: int, wallet_pass:str=''):
|
|
||||||
cmd = (
|
|
||||||
f"{NEOGO_CLI_EXEC} wallet nep17 transfer -w {wallet} "
|
|
||||||
f"-r {NEO_MAINNET_ENDPOINT} --from {address} --to {address_to} "
|
|
||||||
f"--token GAS --amount {amount}"
|
|
||||||
)
|
|
||||||
|
|
||||||
logger.info(f"Executing command: {cmd}")
|
|
||||||
out = _run_sh_with_passwd(wallet_pass, cmd)
|
|
||||||
logger.info(f"Command completed with output: {out}")
|
|
||||||
|
|
||||||
if not re.match(r'^(\w{64})$', out):
|
|
||||||
raise Exception("Can not get Tx.")
|
|
||||||
|
|
||||||
return out
|
|
||||||
|
|
||||||
@keyword('Withdraw Mainnet Gas')
|
@keyword('Withdraw Mainnet Gas')
|
||||||
def withdraw_mainnet_gas(wallet: str, address: str, scripthash: str, amount: int):
|
def withdraw_mainnet_gas(wallet: str, address: str, scripthash: str, amount: int):
|
||||||
|
@ -57,49 +41,6 @@ def withdraw_mainnet_gas(wallet: str, address: str, scripthash: str, amount: int
|
||||||
tx = m.group(1)
|
tx = m.group(1)
|
||||||
return tx
|
return tx
|
||||||
|
|
||||||
@keyword('Mainnet Balance')
|
|
||||||
def mainnet_balance(address: str):
|
|
||||||
headers = {'Content-type': 'application/json'}
|
|
||||||
data = { "jsonrpc": "2.0", "id": 5, "method": "getnep17balances", "params": [ address ] }
|
|
||||||
response = requests.post(NEO_MAINNET_ENDPOINT, json=data, headers=headers, verify=False)
|
|
||||||
|
|
||||||
if not response.ok:
|
|
||||||
raise Exception(f"""Failed:
|
|
||||||
request: {data},
|
|
||||||
response: {response.text},
|
|
||||||
status code: {response.status_code} {response.reason}""")
|
|
||||||
|
|
||||||
m = re.search(rf'"{GAS_HASH}","amount":"([\d\.]+)"', response.text)
|
|
||||||
if not m:
|
|
||||||
raise Exception("Can not get mainnet gas balance. Output: %s" % response.text )
|
|
||||||
else:
|
|
||||||
logger.info("Output: %s" % response.text)
|
|
||||||
amount = m.group(1)
|
|
||||||
return amount
|
|
||||||
|
|
||||||
@keyword('Expected Mainnet Balance')
|
|
||||||
def expected_mainnet_balance(address: str, expected: float):
|
|
||||||
amount = mainnet_balance(address)
|
|
||||||
gas_expected = int(expected * 10**8)
|
|
||||||
if int(amount) != int(gas_expected):
|
|
||||||
raise Exception(f"Expected amount ({gas_expected}) of GAS has not been found. Found {amount}.")
|
|
||||||
return amount
|
|
||||||
|
|
||||||
@keyword('Expected Mainnet Balance Diff')
|
|
||||||
def expected_mainnet_balance_diff(address: str, old_value: float, expected_diff: float):
|
|
||||||
amount = mainnet_balance(address)
|
|
||||||
gas_expected = old_value + _convert_int_to_gas(expected_diff)
|
|
||||||
if int(amount) != int(gas_expected):
|
|
||||||
raise Exception(f"Balance amount ({int(amount)})) of GAS has not been changed for expected value:",
|
|
||||||
f"{_convert_int_to_gas(expected_diff)} from initial {old_value}.",
|
|
||||||
f"Expected: {old_value + _convert_int_to_gas(expected_diff)}")
|
|
||||||
return amount
|
|
||||||
|
|
||||||
def _convert_int_to_gas(input_value: float):
|
|
||||||
return int(input_value * 10**8)
|
|
||||||
|
|
||||||
def _convert_gas_to_int(input_value: float):
|
|
||||||
return int(input_value / 10**8)
|
|
||||||
|
|
||||||
@keyword('NeoFS Deposit')
|
@keyword('NeoFS Deposit')
|
||||||
def neofs_deposit(wallet: str, address: str, scripthash: str, amount: int, wallet_pass:str=''):
|
def neofs_deposit(wallet: str, address: str, scripthash: str, amount: int, wallet_pass:str=''):
|
||||||
|
@ -166,7 +107,7 @@ def get_transaction(tx_id: str):
|
||||||
logger.info(response.text)
|
logger.info(response.text)
|
||||||
|
|
||||||
|
|
||||||
@keyword('Get Balance')
|
@keyword('Get NeoFS Balance')
|
||||||
def get_balance(privkey: str):
|
def get_balance(privkey: str):
|
||||||
"""
|
"""
|
||||||
This function returns NeoFS balance for selected public key.
|
This function returns NeoFS balance for selected public key.
|
||||||
|
@ -177,24 +118,6 @@ def get_balance(privkey: str):
|
||||||
|
|
||||||
return balance
|
return balance
|
||||||
|
|
||||||
@keyword('Expected Balance')
|
|
||||||
def expected_balance(privkey: str, init_amount: float, deposit_size: float):
|
|
||||||
"""
|
|
||||||
This function returns NeoFS balance for selected public key.
|
|
||||||
:param public_key: neo public key
|
|
||||||
:param init_amount: initial number of tokens in the account
|
|
||||||
:param deposit_size: expected amount of the balance increasing
|
|
||||||
"""
|
|
||||||
|
|
||||||
balance = _get_balance_request(privkey)
|
|
||||||
|
|
||||||
deposit_change = round((float(balance) - init_amount),8)
|
|
||||||
if deposit_change != deposit_size:
|
|
||||||
raise Exception('Expected deposit increase: {}. This does not correspond to the actual change in account: {}'.format(deposit_size, deposit_change))
|
|
||||||
|
|
||||||
logger.info('Expected deposit increase: {}. This correspond to the actual change in account: {}'.format(deposit_size, deposit_change))
|
|
||||||
|
|
||||||
return deposit_change
|
|
||||||
|
|
||||||
def _get_balance_request(privkey: str):
|
def _get_balance_request(privkey: str):
|
||||||
'''
|
'''
|
||||||
|
|
|
@ -12,7 +12,8 @@ from robot.api import logger
|
||||||
from common import *
|
from common import *
|
||||||
|
|
||||||
ROBOT_AUTO_KEYWORDS = False
|
ROBOT_AUTO_KEYWORDS = False
|
||||||
|
# TODO: get this variable from env
|
||||||
|
LOGS_DIR = 'artifacts/'
|
||||||
|
|
||||||
@keyword('Generate file of bytes')
|
@keyword('Generate file of bytes')
|
||||||
def generate_file_of_bytes(size: str) -> str:
|
def generate_file_of_bytes(size: str) -> str:
|
||||||
|
@ -30,12 +31,12 @@ def generate_file_of_bytes(size: str) -> str:
|
||||||
@keyword('Get Docker Logs')
|
@keyword('Get Docker Logs')
|
||||||
def get_container_logs(testcase_name: str) -> None:
|
def get_container_logs(testcase_name: str) -> None:
|
||||||
client = docker.APIClient(base_url='unix://var/run/docker.sock')
|
client = docker.APIClient(base_url='unix://var/run/docker.sock')
|
||||||
tar_name = f"artifacts/dockerlogs({testcase_name}).tar.gz"
|
tar_name = f"{LOGS_DIR}/dockerlogs({testcase_name}).tar.gz"
|
||||||
tar = tarfile.open(tar_name, "w:gz")
|
tar = tarfile.open(tar_name, "w:gz")
|
||||||
for container in client.containers():
|
for container in client.containers():
|
||||||
container_name = container['Names'][0][1:]
|
container_name = container['Names'][0][1:]
|
||||||
if client.inspect_container(container_name)['Config']['Domainname'] == "neofs.devenv":
|
if client.inspect_container(container_name)['Config']['Domainname'] == "neofs.devenv":
|
||||||
file_name = f"artifacts/docker_log_{container_name}"
|
file_name = f"{LOGS_DIR}/docker_log_{container_name}"
|
||||||
with open(file_name,'wb') as out:
|
with open(file_name,'wb') as out:
|
||||||
out.write(client.logs(container_name))
|
out.write(client.logs(container_name))
|
||||||
logger.info(f"Collected logs from container {container_name}")
|
logger.info(f"Collected logs from container {container_name}")
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
*** Settings ***
|
*** Settings ***
|
||||||
Variables ../../../variables/common.py
|
Variables ../../../variables/common.py
|
||||||
|
|
||||||
Library ${KEYWORDS}/wallet.py
|
Library ${KEYWORDS}/wallet_keywords.py
|
||||||
|
Library ${KEYWORDS}/rpc_call_keywords.py
|
||||||
|
|
||||||
*** Variables ***
|
*** Variables ***
|
||||||
${RULE_FOR_ALL} = REP 2 IN X CBF 1 SELECT 4 FROM * AS X
|
${RULE_FOR_ALL} = REP 2 IN X CBF 1 SELECT 4 FROM * AS X
|
||||||
|
${TRANSFER_AMOUNT} = ${3}
|
||||||
|
|
||||||
|
|
||||||
*** Keywords ***
|
*** Keywords ***
|
||||||
|
@ -31,11 +33,12 @@ Generate Keys
|
||||||
Payment Operations
|
Payment Operations
|
||||||
[Arguments] ${WALLET} ${ADDR} ${KEY}
|
[Arguments] ${WALLET} ${ADDR} ${KEY}
|
||||||
|
|
||||||
${TX} = Transfer Mainnet Gas wallets/wallet.json ${DEF_WALLET_ADDR} ${ADDR} 3
|
${TX} = Transfer Mainnet Gas ${MAINNET_WALLET_WIF} ${ADDR} 3
|
||||||
Wait Until Keyword Succeeds 1 min 15 sec
|
Wait Until Keyword Succeeds 1 min 15 sec
|
||||||
... Transaction accepted in block ${TX}
|
... Transaction accepted in block ${TX}
|
||||||
Get Transaction ${TX}
|
|
||||||
Expected Mainnet Balance ${ADDR} 3
|
${MAINNET_BALANCE} = Get Mainnet Balance ${ADDR}
|
||||||
|
Should Be Equal As Numbers ${MAINNET_BALANCE} ${TRANSFER_AMOUNT}
|
||||||
|
|
||||||
${SCRIPT_HASH} = Get ScriptHash ${KEY}
|
${SCRIPT_HASH} = Get ScriptHash ${KEY}
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
*** Settings ***
|
*** Settings ***
|
||||||
Variables ../../../variables/common.py
|
Variables ../../../variables/common.py
|
||||||
|
|
||||||
Library ${KEYWORDS}/wallet.py
|
Library ${KEYWORDS}/wallet_keywords.py
|
||||||
|
Library ${KEYWORDS}/rpc_call_keywords.py
|
||||||
|
|
||||||
*** Variables ***
|
*** Variables ***
|
||||||
${FILE_USR_HEADER} = key1=1,key2=abc
|
${FILE_USR_HEADER} = key1=1,key2=abc
|
||||||
${FILE_USR_HEADER_DEL} = key1=del,key2=del
|
${FILE_USR_HEADER_DEL} = key1=del,key2=del
|
||||||
${FILE_OTH_HEADER} = key1=oth,key2=oth
|
${FILE_OTH_HEADER} = key1=oth,key2=oth
|
||||||
${RULE_FOR_ALL} = REP 2 IN X CBF 1 SELECT 4 FROM * AS X
|
${RULE_FOR_ALL} = REP 2 IN X CBF 1 SELECT 4 FROM * AS X
|
||||||
|
${TRANSFER_AMOUNT} = ${3}
|
||||||
|
|
||||||
|
|
||||||
*** Keywords ***
|
*** Keywords ***
|
||||||
|
@ -36,11 +38,12 @@ Generate Keys
|
||||||
Payment Operations
|
Payment Operations
|
||||||
[Arguments] ${WALLET} ${ADDR} ${KEY}
|
[Arguments] ${WALLET} ${ADDR} ${KEY}
|
||||||
|
|
||||||
${TX} = Transfer Mainnet Gas wallets/wallet.json ${DEF_WALLET_ADDR} ${ADDR} 3
|
${TX} = Transfer Mainnet Gas ${MAINNET_WALLET_WIF} ${ADDR} ${TRANSFER_AMOUNT}
|
||||||
Wait Until Keyword Succeeds 1 min 15 sec
|
Wait Until Keyword Succeeds 1 min 15 sec
|
||||||
... Transaction accepted in block ${TX}
|
... Transaction accepted in block ${TX}
|
||||||
Get Transaction ${TX}
|
|
||||||
Expected Mainnet Balance ${ADDR} 3
|
${MAINNET_BALANCE} = Get Mainnet Balance ${ADDR}
|
||||||
|
Should Be Equal As Numbers ${MAINNET_BALANCE} ${TRANSFER_AMOUNT}
|
||||||
|
|
||||||
${SCRIPT_HASH} = Get ScriptHash ${KEY}
|
${SCRIPT_HASH} = Get ScriptHash ${KEY}
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
*** Settings ***
|
*** Settings ***
|
||||||
Variables ../../../variables/common.py
|
Variables ../../../variables/common.py
|
||||||
|
|
||||||
Library ${KEYWORDS}/wallet.py
|
Library ${KEYWORDS}/wallet_keywords.py
|
||||||
|
Library ${KEYWORDS}/rpc_call_keywords.py
|
||||||
|
|
||||||
*** Variables ***
|
*** Variables ***
|
||||||
${FILE_USR_HEADER} = key1=1,key2=abc
|
${FILE_USR_HEADER} = key1=1,key2=abc
|
||||||
${FILE_USR_HEADER_DEL} = key1=del,key2=del
|
${FILE_USR_HEADER_DEL} = key1=del,key2=del
|
||||||
${FILE_OTH_HEADER} = key1=oth,key2=oth
|
${FILE_OTH_HEADER} = key1=oth,key2=oth
|
||||||
${RULE_FOR_ALL} = REP 2 IN X CBF 1 SELECT 4 FROM * AS X
|
${RULE_FOR_ALL} = REP 2 IN X CBF 1 SELECT 4 FROM * AS X
|
||||||
|
${TRANSFER_AMOUNT} = ${3}
|
||||||
|
|
||||||
|
|
||||||
*** Keywords ***
|
*** Keywords ***
|
||||||
|
@ -33,12 +35,13 @@ Generate Keys
|
||||||
Payment Operations
|
Payment Operations
|
||||||
[Arguments] ${WALLET} ${ADDR} ${KEY}
|
[Arguments] ${WALLET} ${ADDR} ${KEY}
|
||||||
|
|
||||||
${TX} = Transfer Mainnet Gas wallets/wallet.json ${DEF_WALLET_ADDR} ${ADDR} 3
|
${TX} = Transfer Mainnet Gas ${MAINNET_WALLET_WIF} ${ADDR} 3
|
||||||
|
|
||||||
Wait Until Keyword Succeeds 1 min 15 sec
|
Wait Until Keyword Succeeds 1 min 15 sec
|
||||||
... Transaction accepted in block ${TX}
|
... Transaction accepted in block ${TX}
|
||||||
Get Transaction ${TX}
|
|
||||||
Expected Mainnet Balance ${ADDR} 3
|
${MAINNET_BALANCE} = Get Mainnet Balance ${ADDR}
|
||||||
|
Should Be Equal As Numbers ${MAINNET_BALANCE} ${TRANSFER_AMOUNT}
|
||||||
|
|
||||||
${SCRIPT_HASH} = Get ScriptHash ${KEY}
|
${SCRIPT_HASH} = Get ScriptHash ${KEY}
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,12 @@ Variables ../../../variables/common.py
|
||||||
|
|
||||||
Library ../${RESOURCES}/neofs.py
|
Library ../${RESOURCES}/neofs.py
|
||||||
Library ../${RESOURCES}/payment_neogo.py
|
Library ../${RESOURCES}/payment_neogo.py
|
||||||
Library ${KEYWORDS}/wallet.py
|
|
||||||
Library ../${RESOURCES}/utility_keywords.py
|
Library ../${RESOURCES}/utility_keywords.py
|
||||||
|
Library ${KEYWORDS}/wallet_keywords.py
|
||||||
|
Library ${KEYWORDS}/rpc_call_keywords.py
|
||||||
|
|
||||||
|
*** Variables ***
|
||||||
|
${TRANSFER_AMOUNT} = ${11}
|
||||||
|
|
||||||
|
|
||||||
*** Test cases ***
|
*** Test cases ***
|
||||||
|
@ -81,11 +85,12 @@ Generate Key and Pre-payment
|
||||||
Payment Operations
|
Payment Operations
|
||||||
[Arguments] ${WALLET} ${ADDR} ${KEY}
|
[Arguments] ${WALLET} ${ADDR} ${KEY}
|
||||||
|
|
||||||
${TX} = Transfer Mainnet Gas wallets/wallet.json ${DEF_WALLET_ADDR} ${ADDR} 11
|
${TX} = Transfer Mainnet Gas ${MAINNET_WALLET_WIF} ${ADDR} ${TRANSFER_AMOUNT}
|
||||||
Wait Until Keyword Succeeds 1 min 15 sec
|
Wait Until Keyword Succeeds 1 min 15 sec
|
||||||
... Transaction accepted in block ${TX}
|
... Transaction accepted in block ${TX}
|
||||||
Get Transaction ${TX}
|
|
||||||
Expected Mainnet Balance ${ADDR} 11
|
${MAINNET_BALANCE} = Get Mainnet Balance ${ADDR}
|
||||||
|
Should Be Equal As Numbers ${MAINNET_BALANCE} ${TRANSFER_AMOUNT}
|
||||||
|
|
||||||
${SCRIPT_HASH} = Get ScriptHash ${KEY}
|
${SCRIPT_HASH} = Get ScriptHash ${KEY}
|
||||||
|
|
||||||
|
|
|
@ -3,11 +3,13 @@ Variables ../../../variables/common.py
|
||||||
|
|
||||||
Library ../${RESOURCES}/neofs.py
|
Library ../${RESOURCES}/neofs.py
|
||||||
Library ../${RESOURCES}/payment_neogo.py
|
Library ../${RESOURCES}/payment_neogo.py
|
||||||
Library ${KEYWORDS}/wallet.py
|
|
||||||
Library ../${RESOURCES}/utility_keywords.py
|
Library ../${RESOURCES}/utility_keywords.py
|
||||||
|
Library ${KEYWORDS}/wallet_keywords.py
|
||||||
|
Library ${KEYWORDS}/rpc_call_keywords.py
|
||||||
|
|
||||||
*** Variables ***
|
*** Variables ***
|
||||||
${PLACEMENT_RULE} = "REP 2 IN X CBF 1 SELECT 4 FROM * AS X"
|
${PLACEMENT_RULE} = "REP 2 IN X CBF 1 SELECT 4 FROM * AS X"
|
||||||
|
${TRANSFER_AMOUNT} = ${11}
|
||||||
|
|
||||||
*** Test cases ***
|
*** Test cases ***
|
||||||
NeoFS Object Replication
|
NeoFS Object Replication
|
||||||
|
@ -18,11 +20,13 @@ NeoFS Object Replication
|
||||||
[Setup] Create Temporary Directory
|
[Setup] Create Temporary Directory
|
||||||
|
|
||||||
${WALLET} ${ADDR} ${PRIV_KEY} = Init Wallet with Address ${TEMP_DIR}
|
${WALLET} ${ADDR} ${PRIV_KEY} = Init Wallet with Address ${TEMP_DIR}
|
||||||
${TX} = Transfer Mainnet Gas wallets/wallet.json ${DEF_WALLET_ADDR} ${ADDR} 11
|
${TX} = Transfer Mainnet Gas ${MAINNET_WALLET_WIF} ${ADDR} ${TRANSFER_AMOUNT}
|
||||||
Wait Until Keyword Succeeds 1 min 15 sec
|
Wait Until Keyword Succeeds 1 min 15 sec
|
||||||
... Transaction accepted in block ${TX}
|
... Transaction accepted in block ${TX}
|
||||||
Get Transaction ${TX}
|
|
||||||
Expected Mainnet Balance ${ADDR} 11
|
${MAINNET_BALANCE} = Get Mainnet Balance ${ADDR}
|
||||||
|
Should Be Equal As Numbers ${MAINNET_BALANCE} ${TRANSFER_AMOUNT}
|
||||||
|
|
||||||
|
|
||||||
${SCRIPT_HASH} = Get ScriptHash ${PRIV_KEY}
|
${SCRIPT_HASH} = Get ScriptHash ${PRIV_KEY}
|
||||||
|
|
||||||
|
@ -71,5 +75,3 @@ NeoFS Object Replication
|
||||||
Cleanup
|
Cleanup
|
||||||
Cleanup Files
|
Cleanup Files
|
||||||
Get Docker Logs replication
|
Get Docker Logs replication
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
*** Settings ***
|
*** Settings ***
|
||||||
Variables ../../../variables/common.py
|
Variables ../../../variables/common.py
|
||||||
|
|
||||||
Library ${KEYWORDS}/wallet.py
|
Library ${KEYWORDS}/wallet_keywords.py
|
||||||
|
Library ${KEYWORDS}/rpc_call_keywords.py
|
||||||
|
|
||||||
*** Variables ***
|
*** Variables ***
|
||||||
${FILE_USR_HEADER} = key1=1,key2=abc
|
${FILE_USR_HEADER} = key1=1,key2=abc
|
||||||
|
@ -15,22 +16,22 @@ ${EMPTY_ACL} = ""
|
||||||
|
|
||||||
Payment operations
|
Payment operations
|
||||||
${WALLET} ${ADDR} ${PRIV_KEY} = Init Wallet with Address ${TEMP_DIR}
|
${WALLET} ${ADDR} ${PRIV_KEY} = Init Wallet with Address ${TEMP_DIR}
|
||||||
${TX} = Transfer Mainnet Gas ${MAINNET_WALLET_PATH} ${DEF_WALLET_ADDR} ${ADDR} ${TRANSFER_AMOUNT}
|
${TX} = Transfer Mainnet Gas ${MAINNET_WALLET_WIF} ${ADDR} ${TRANSFER_AMOUNT}
|
||||||
|
|
||||||
Wait Until Keyword Succeeds ${BASENET_WAIT_TIME} ${BASENET_BLOCK_TIME}
|
Wait Until Keyword Succeeds ${MAINNET_TIMEOUT} ${MAINNET_BLOCK_TIME}
|
||||||
... Transaction accepted in block ${TX}
|
... Transaction accepted in block ${TX}
|
||||||
Get Transaction ${TX}
|
|
||||||
Expected Mainnet Balance ${ADDR} ${TRANSFER_AMOUNT}
|
${MAINNET_BALANCE} = Get Mainnet Balance ${ADDR}
|
||||||
|
Should Be Equal As Numbers ${MAINNET_BALANCE} ${TRANSFER_AMOUNT}
|
||||||
|
|
||||||
${SCRIPT_HASH} = Get ScriptHash ${PRIV_KEY}
|
${SCRIPT_HASH} = Get ScriptHash ${PRIV_KEY}
|
||||||
|
|
||||||
${TX_DEPOSIT} = NeoFS Deposit ${WALLET} ${ADDR} ${SCRIPT_HASH} ${DEPOSIT_AMOUNT}
|
${TX_DEPOSIT} = NeoFS Deposit ${WALLET} ${ADDR} ${SCRIPT_HASH} ${DEPOSIT_AMOUNT}
|
||||||
Wait Until Keyword Succeeds ${BASENET_WAIT_TIME} ${BASENET_BLOCK_TIME}
|
Wait Until Keyword Succeeds ${MAINNET_TIMEOUT} ${MAINNET_BLOCK_TIME}
|
||||||
... Transaction accepted in block ${TX_DEPOSIT}
|
... Transaction accepted in block ${TX_DEPOSIT}
|
||||||
Get Transaction ${TX_DEPOSIT}
|
|
||||||
|
|
||||||
${BALANCE} = Wait Until Keyword Succeeds ${NEOFS_EPOCH_TIMEOUT} ${MORPH_BLOCK_TIME}
|
${NEOFS_BALANCE} = Get NeoFS Balance ${PRIV_KEY}
|
||||||
... Expected Balance ${PRIV_KEY} 0 ${DEPOSIT_AMOUNT}
|
Should Be Equal As Numbers ${NEOFS_BALANCE} ${DEPOSIT_AMOUNT}
|
||||||
|
|
||||||
Set Global Variable ${PRIV_KEY} ${PRIV_KEY}
|
Set Global Variable ${PRIV_KEY} ${PRIV_KEY}
|
||||||
Set Global Variable ${ADDR} ${ADDR}
|
Set Global Variable ${ADDR} ${ADDR}
|
||||||
|
@ -40,6 +41,10 @@ Prepare container
|
||||||
Container Existing ${PRIV_KEY} ${CID}
|
Container Existing ${PRIV_KEY} ${CID}
|
||||||
|
|
||||||
Wait Until Keyword Succeeds ${NEOFS_EPOCH_TIMEOUT} ${MORPH_BLOCK_TIME}
|
Wait Until Keyword Succeeds ${NEOFS_EPOCH_TIMEOUT} ${MORPH_BLOCK_TIME}
|
||||||
... Expected Balance ${PRIV_KEY} ${DEPOSIT_AMOUNT} ${NEOFS_CREATE_CONTAINER_GAS_FEE}
|
|
||||||
|
${NEOFS_BALANCE} = Get NeoFS Balance ${PRIV_KEY}
|
||||||
|
Should Be True ${NEOFS_BALANCE} < ${DEPOSIT_AMOUNT}
|
||||||
|
${CONTAINER_FEE} = Evaluate ${DEPOSIT_AMOUNT} - ${NEOFS_BALANCE}
|
||||||
|
Log Container fee is ${CONTAINER_FEE}
|
||||||
|
|
||||||
Set Global Variable ${CID} ${CID}
|
Set Global Variable ${CID} ${CID}
|
||||||
|
|
|
@ -3,12 +3,14 @@ Variables ../../../variables/common.py
|
||||||
|
|
||||||
Library ../${RESOURCES}/neofs.py
|
Library ../${RESOURCES}/neofs.py
|
||||||
Library ../${RESOURCES}/payment_neogo.py
|
Library ../${RESOURCES}/payment_neogo.py
|
||||||
Library ${KEYWORDS}/wallet.py
|
|
||||||
Library ../${RESOURCES}/utility_keywords.py
|
Library ../${RESOURCES}/utility_keywords.py
|
||||||
|
Library ${KEYWORDS}/wallet_keywords.py
|
||||||
|
Library ${KEYWORDS}/rpc_call_keywords.py
|
||||||
|
|
||||||
*** Variables ***
|
*** Variables ***
|
||||||
${DEPOSIT_AMOUNT} = 10
|
${DEPOSIT_AMOUNT} = ${10}
|
||||||
${WITHDRAW_AMOUNT} = 10
|
${WITHDRAW_AMOUNT} = ${10}
|
||||||
|
${TRANSFER_AMOUNT} = ${15}
|
||||||
|
|
||||||
*** Test cases ***
|
*** Test cases ***
|
||||||
NeoFS Deposit and Withdraw
|
NeoFS Deposit and Withdraw
|
||||||
|
@ -19,45 +21,57 @@ NeoFS Deposit and Withdraw
|
||||||
[Setup] Create Temporary Directory
|
[Setup] Create Temporary Directory
|
||||||
|
|
||||||
${WALLET} ${ADDR} ${PRIV_KEY} = Init Wallet with Address ${TEMP_DIR}
|
${WALLET} ${ADDR} ${PRIV_KEY} = Init Wallet with Address ${TEMP_DIR}
|
||||||
${TX} = Transfer Mainnet Gas wallets/wallet.json ${DEF_WALLET_ADDR} ${ADDR} 15
|
|
||||||
Wait Until Keyword Succeeds 1 min 15 sec
|
|
||||||
... Transaction accepted in block ${TX}
|
|
||||||
Get Transaction ${TX}
|
|
||||||
${MAINNET_BALANCE} = Expected Mainnet Balance ${ADDR} 15
|
|
||||||
|
|
||||||
${SCRIPT_HASH} = Get ScriptHash ${PRIV_KEY}
|
${SCRIPT_HASH} = Get ScriptHash ${PRIV_KEY}
|
||||||
|
|
||||||
|
##########################################################
|
||||||
|
# Transferring GAS from initial wallet to our test wallet
|
||||||
|
##########################################################
|
||||||
|
${TX} = Transfer Mainnet Gas ${MAINNET_WALLET_WIF} ${ADDR} ${TRANSFER_AMOUNT}
|
||||||
|
Wait Until Keyword Succeeds ${MAINNET_TIMEOUT} ${MAINNET_BLOCK_TIME}
|
||||||
|
... Transaction accepted in block ${TX}
|
||||||
|
${MAINNET_BALANCE} = Get Mainnet Balance ${ADDR}
|
||||||
|
Should Be Equal As Numbers ${MAINNET_BALANCE} ${TRANSFER_AMOUNT}
|
||||||
|
|
||||||
|
############################
|
||||||
|
# Making deposit into NeoFS
|
||||||
|
############################
|
||||||
${TX_DEPOSIT} = NeoFS Deposit ${WALLET} ${ADDR} ${SCRIPT_HASH} ${DEPOSIT_AMOUNT}
|
${TX_DEPOSIT} = NeoFS Deposit ${WALLET} ${ADDR} ${SCRIPT_HASH} ${DEPOSIT_AMOUNT}
|
||||||
Wait Until Keyword Succeeds 1 min 15 sec
|
Wait Until Keyword Succeeds ${MAINNET_TIMEOUT} ${MAINNET_BLOCK_TIME}
|
||||||
... Transaction accepted in block ${TX_DEPOSIT}
|
... Transaction accepted in block ${TX_DEPOSIT}
|
||||||
Get Transaction ${TX_DEPOSIT}
|
|
||||||
|
|
||||||
|
${MAINNET_BALANCE} = Get Mainnet Balance ${ADDR}
|
||||||
|
${EXPECTED_BALANCE} = Evaluate ${TRANSFER_AMOUNT}-${DEPOSIT_AMOUNT}
|
||||||
|
Should Be True ${MAINNET_BALANCE} < ${EXPECTED_BALANCE}
|
||||||
|
${DEPOSIT_FEE} = Evaluate ${EXPECTED_BALANCE} - ${MAINNET_BALANCE}
|
||||||
|
Log Deposit fee is ${DEPOSIT_FEE}
|
||||||
|
|
||||||
|
${NEOFS_BALANCE} = Get NeoFS Balance ${PRIV_KEY}
|
||||||
|
Should Be Equal As Numbers ${NEOFS_BALANCE} ${DEPOSIT_AMOUNT}
|
||||||
|
|
||||||
# Expected amount diff will be formed from deposit amount and contract fee
|
# TODO: try to withdraw more than was deposited
|
||||||
${EXPECTED_DIFF} = Evaluate -${DEPOSIT_AMOUNT}-${NEOFS_CONTRACT_DEPOSIT_GAS_FEE}
|
|
||||||
${DEPOSIT_BALANCE} = Expected Mainnet Balance Diff ${ADDR} ${MAINNET_BALANCE} ${EXPECTED_DIFF}
|
|
||||||
|
|
||||||
${NEOFS_BALANCE} = Get Balance ${PRIV_KEY}
|
|
||||||
|
|
||||||
|
###########################
|
||||||
|
# Withdrawing deposit back
|
||||||
|
###########################
|
||||||
${TX} = Withdraw Mainnet Gas ${WALLET} ${ADDR} ${SCRIPT_HASH} ${WITHDRAW_AMOUNT}
|
${TX} = Withdraw Mainnet Gas ${WALLET} ${ADDR} ${SCRIPT_HASH} ${WITHDRAW_AMOUNT}
|
||||||
Wait Until Keyword Succeeds 1 min 15 sec
|
Wait Until Keyword Succeeds ${MAINNET_TIMEOUT} ${MAINNET_BLOCK_TIME}
|
||||||
... Transaction accepted in block ${TX}
|
... Transaction accepted in block ${TX}
|
||||||
|
|
||||||
Sleep ${NEOFS_CONTRACT_CACHE_TIMEOUT}
|
Sleep ${NEOFS_CONTRACT_CACHE_TIMEOUT}
|
||||||
|
|
||||||
Get Balance ${PRIV_KEY}
|
${NEOFS_BALANCE} = Get NeoFS Balance ${PRIV_KEY}
|
||||||
Mainnet Balance ${ADDR}
|
${EXPECTED_BALANCE} = Evaluate ${DEPOSIT_AMOUNT} - ${WITHDRAW_AMOUNT}
|
||||||
|
Should Be Equal As Numbers ${NEOFS_BALANCE} ${EXPECTED_BALANCE}
|
||||||
|
|
||||||
Expected Balance ${PRIV_KEY} ${NEOFS_BALANCE} -${WITHDRAW_AMOUNT}
|
${MAINNET_BALANCE_AFTER} = Get Mainnet Balance ${ADDR}
|
||||||
|
${MAINNET_BALANCE_DIFF} = Evaluate ${MAINNET_BALANCE_AFTER} - ${MAINNET_BALANCE}
|
||||||
# Expected amount diff will be formed from withdrawal amount and contract fee
|
Should Be True ${MAINNET_BALANCE_DIFF} < ${WITHDRAW_AMOUNT}
|
||||||
${EXPECTED_DIFF_W} = Evaluate ${WITHDRAW_AMOUNT}-${NEOFS_CONTRACT_WITHDRAW_GAS_FEE}
|
${WITHDRAW_FEE} = Evaluate ${WITHDRAW_AMOUNT} - ${MAINNET_BALANCE_DIFF}
|
||||||
Expected Mainnet Balance Diff ${ADDR} ${DEPOSIT_BALANCE} ${EXPECTED_DIFF_W}
|
Log Withdraw fee is ${WITHDRAW_FEE}
|
||||||
|
|
||||||
[Teardown] Cleanup
|
[Teardown] Cleanup
|
||||||
|
|
||||||
|
|
||||||
*** Keywords ***
|
*** Keywords ***
|
||||||
|
|
||||||
Cleanup
|
Cleanup
|
||||||
|
|
|
@ -4,11 +4,13 @@ Variables ../../../variables/common.py
|
||||||
Library ../${RESOURCES}/neofs.py
|
Library ../${RESOURCES}/neofs.py
|
||||||
Library ../${RESOURCES}/payment_neogo.py
|
Library ../${RESOURCES}/payment_neogo.py
|
||||||
Library ../${RESOURCES}/gates.py
|
Library ../${RESOURCES}/gates.py
|
||||||
Library ${KEYWORDS}/wallet.py
|
|
||||||
Library ../${RESOURCES}/utility_keywords.py
|
Library ../${RESOURCES}/utility_keywords.py
|
||||||
|
Library ${KEYWORDS}/wallet_keywords.py
|
||||||
|
Library ${KEYWORDS}/rpc_call_keywords.py
|
||||||
|
|
||||||
*** Variables ***
|
*** Variables ***
|
||||||
${PLACEMENT_RULE} = "REP 1 IN X CBF 1 SELECT 1 FROM * AS X"
|
${PLACEMENT_RULE} = "REP 1 IN X CBF 1 SELECT 1 FROM * AS X"
|
||||||
|
${TRANSFER_AMOUNT} = ${3}
|
||||||
|
|
||||||
*** Test cases ***
|
*** Test cases ***
|
||||||
|
|
||||||
|
@ -18,12 +20,13 @@ NeoFS HTTP Gateway
|
||||||
|
|
||||||
[Setup] Create Temporary Directory
|
[Setup] Create Temporary Directory
|
||||||
${WALLET} ${ADDR} ${PRIV_KEY} = Init Wallet with Address ${TEMP_DIR}
|
${WALLET} ${ADDR} ${PRIV_KEY} = Init Wallet with Address ${TEMP_DIR}
|
||||||
${TX} = Transfer Mainnet Gas wallets/wallet.json ${DEF_WALLET_ADDR} ${ADDR} 6
|
${TX} = Transfer Mainnet Gas ${MAINNET_WALLET_WIF} ${ADDR} 6
|
||||||
|
|
||||||
Wait Until Keyword Succeeds 1 min 15 sec
|
Wait Until Keyword Succeeds 1 min 15 sec
|
||||||
... Transaction accepted in block ${TX}
|
... Transaction accepted in block ${TX}
|
||||||
Get Transaction ${TX}
|
|
||||||
Expected Mainnet Balance ${ADDR} 6
|
${MAINNET_BALANCE} = Get Mainnet Balance ${ADDR}
|
||||||
|
Should Be Equal As Numbers ${MAINNET_BALANCE} ${TRANSFER_AMOUNT}
|
||||||
|
|
||||||
${SCRIPT_HASH} = Get ScriptHash ${PRIV_KEY}
|
${SCRIPT_HASH} = Get ScriptHash ${PRIV_KEY}
|
||||||
|
|
||||||
|
|
|
@ -10,36 +10,30 @@ KEYWORDS="%s/../../../neofs-keywords/" % ROOT
|
||||||
# in case when test is run from root in docker
|
# in case when test is run from root in docker
|
||||||
ABSOLUTE_FILE_PATH="/robot/testsuites/integration"
|
ABSOLUTE_FILE_PATH="/robot/testsuites/integration"
|
||||||
|
|
||||||
# Price of the contract Deposit/Withdraw execution:
|
# Common NeoFS variables can be declared from neofs-dev-env env variables.
|
||||||
MAINNET_WALLET_PATH = os.getenv("MAINNET_WALLET_PATH", "wallets/wallet.json")
|
# High priority is accepted for those envs.
|
||||||
NEOFS_CONTRACT_DEPOSIT_GAS_FEE = os.getenv("NEOFS_CONTRACT_DEPOSIT_GAS_FEE", "0.1679897")
|
|
||||||
NEOFS_CONTRACT_WITHDRAW_GAS_FEE = os.getenv("NEOFS_CONTRACT_WITHDRAW_GAS_FEE", "0.0382514")
|
|
||||||
NEOFS_CREATE_CONTAINER_GAS_FEE = os.getenv("NEOFS_CREATE_CONTAINER_GAS_FEE", "-1e-08")
|
|
||||||
|
|
||||||
# NEOFS_EPOCH_TIMEOUT can be declared from neofs-dev-env env variables as NEOFS_IR_TIMERS_EPOCH
|
|
||||||
# (high priority is accepted for env as NEOFS_EPOCH_TIMEOUT)
|
|
||||||
NEOFS_EPOCH_TIMEOUT = (os.getenv("NEOFS_EPOCH_TIMEOUT") if os.getenv("NEOFS_EPOCH_TIMEOUT")
|
NEOFS_EPOCH_TIMEOUT = (os.getenv("NEOFS_EPOCH_TIMEOUT") if os.getenv("NEOFS_EPOCH_TIMEOUT")
|
||||||
else os.getenv("NEOFS_IR_TIMERS_EPOCH", "300s"))
|
else os.getenv("NEOFS_IR_TIMERS_EPOCH", "300s"))
|
||||||
|
|
||||||
BASENET_BLOCK_TIME = os.getenv('BASENET_BLOCK_TIME', "15s")
|
|
||||||
BASENET_WAIT_TIME = os.getenv("BASENET_WAIT_TIME", "1min")
|
|
||||||
MORPH_BLOCK_TIME = os.getenv("MORPH_BLOCK_TIME", '1s')
|
|
||||||
NEOFS_CONTRACT_CACHE_TIMEOUT = os.getenv("NEOFS_CONTRACT_CACHE_TIMEOUT", "30s")
|
|
||||||
NEOFS_IR_WIF = os.getenv("NEOFS_IR_WIF", "KxyjQ8eUa4FHt3Gvioyt1Wz29cTUrE4eTqX3yFSk1YFCsPL8uNsY")
|
|
||||||
NEOFS_SN_WIF = os.getenv("NEOFS_SN_WIF", "Kwk6k2eC3L3QuPvD8aiaNyoSXgQ2YL1bwS5CP1oKoA9waeAze97s")
|
|
||||||
DEF_WALLET_ADDR = os.getenv("DEF_WALLET_ADDR", "NVUzCUvrbuWadAm6xBoyZ2U7nCmS9QBZtb")
|
|
||||||
SIMPLE_OBJ_SIZE = os.getenv("SIMPLE_OBJ_SIZE", "1024")
|
SIMPLE_OBJ_SIZE = os.getenv("SIMPLE_OBJ_SIZE", "1024")
|
||||||
COMPLEX_OBJ_SIZE = os.getenv("COMPLEX_OBJ_SIZE", "70000000")
|
COMPLEX_OBJ_SIZE = os.getenv("COMPLEX_OBJ_SIZE", "70000000")
|
||||||
NEOFS_ENDPOINT = os.getenv("NEOFS_ENDPOINT", "s01.neofs.devenv:8080")
|
|
||||||
NEOGO_CLI_PREFIX = os.getenv("NEOGO_CLI_PREFIX", "docker exec -it main_chain neo-go")
|
|
||||||
|
|
||||||
# NEO_MAINNET_ENDPOINT can be declared from neofs-dev-env env variables as NEOFS_IR_MAINNET_ENDPOINT_CLIENT
|
MAINNET_BLOCK_TIME = os.getenv('MAINNET_BLOCK_TIME', "15s")
|
||||||
# (high priority is accepted for env as NEO_MAINNET_ENDPOINT)
|
MAINNET_TIMEOUT = os.getenv('MAINNET_TIMEOUT', "1min")
|
||||||
|
MORPH_BLOCK_TIME = os.getenv("MORPH_BLOCK_TIME", '1s')
|
||||||
|
NEOFS_CONTRACT_CACHE_TIMEOUT = os.getenv("NEOFS_CONTRACT_CACHE_TIMEOUT", "30s")
|
||||||
|
|
||||||
|
NEOFS_IR_WIF = os.getenv("NEOFS_IR_WIF", "KxyjQ8eUa4FHt3Gvioyt1Wz29cTUrE4eTqX3yFSk1YFCsPL8uNsY")
|
||||||
|
NEOFS_SN_WIF = os.getenv("NEOFS_SN_WIF", "Kwk6k2eC3L3QuPvD8aiaNyoSXgQ2YL1bwS5CP1oKoA9waeAze97s")
|
||||||
|
MAINNET_WALLET_WIF = os.getenv("MAINNET_WALLET_WIF", "KxDgvEKzgSBPPfuVfw67oPQBSjidEiqTHURKSDL1R7yGaGYAeYnr")
|
||||||
|
|
||||||
|
NEOFS_ENDPOINT = os.getenv("NEOFS_ENDPOINT", "s01.neofs.devenv:8080")
|
||||||
|
NEOGO_CLI_EXEC = os.getenv("NEOGO_CLI_EXEC", "neo-go")
|
||||||
|
|
||||||
NEO_MAINNET_ENDPOINT = (os.getenv("NEO_MAINNET_ENDPOINT") if os.getenv("NEO_MAINNET_ENDPOINT")
|
NEO_MAINNET_ENDPOINT = (os.getenv("NEO_MAINNET_ENDPOINT") if os.getenv("NEO_MAINNET_ENDPOINT")
|
||||||
else os.getenv("NEOFS_IR_MAINNET_ENDPOINT_CLIENT", 'http://main_chain.neofs.devenv:30333'))
|
else os.getenv("NEOFS_IR_MAINNET_ENDPOINT_CLIENT", 'http://main_chain.neofs.devenv:30333'))
|
||||||
|
|
||||||
# NEOFS_NEO_API_ENDPOINT can be declared from neofs-dev-env env variables as NEOFS_IR_MORPH_ENDPOINT_CLIENT
|
|
||||||
# (high priority is accepted for env as NEOFS_NEO_API_ENDPOINT)
|
|
||||||
NEOFS_NEO_API_ENDPOINT = (os.getenv("NEOFS_NEO_API_ENDPOINT") if os.getenv("NEOFS_NEO_API_ENDPOINT")
|
NEOFS_NEO_API_ENDPOINT = (os.getenv("NEOFS_NEO_API_ENDPOINT") if os.getenv("NEOFS_NEO_API_ENDPOINT")
|
||||||
else os.getenv("NEOFS_IR_MORPH_ENDPOINT_CLIENT", 'http://morph_chain.neofs.devenv:30333'))
|
else os.getenv("NEOFS_IR_MORPH_ENDPOINT_CLIENT", 'http://morph_chain.neofs.devenv:30333'))
|
||||||
|
|
||||||
|
@ -48,8 +42,6 @@ S3_GATE = os.getenv("S3_GATE", 'https://s3.neofs.devenv:8080')
|
||||||
NEOFS_NETMAP = os.getenv("NEOFS_NETMAP", ['s01.neofs.devenv:8080', 's02.neofs.devenv:8080','s03.neofs.devenv:8080','s04.neofs.devenv:8080'])
|
NEOFS_NETMAP = os.getenv("NEOFS_NETMAP", ['s01.neofs.devenv:8080', 's02.neofs.devenv:8080','s03.neofs.devenv:8080','s04.neofs.devenv:8080'])
|
||||||
GAS_HASH = os.getenv("GAS_HASH", '0xd2a4cff31913016155e38e474a2c06d08be276cf')
|
GAS_HASH = os.getenv("GAS_HASH", '0xd2a4cff31913016155e38e474a2c06d08be276cf')
|
||||||
|
|
||||||
# NEOFS_CONTRACT can be declared from neofs-dev-env env variables as NEOFS_IR_CONTRACTS_NEOFS
|
|
||||||
# (high priority is accepted for env as NEOFS_CONTRACT)
|
|
||||||
NEOFS_CONTRACT = (os.getenv("NEOFS_CONTRACT") if os.getenv("NEOFS_CONTRACT")
|
NEOFS_CONTRACT = (os.getenv("NEOFS_CONTRACT") if os.getenv("NEOFS_CONTRACT")
|
||||||
else os.getenv("NEOFS_IR_CONTRACTS_NEOFS", 'cfe89912c457754b7eb1f89781dc74bb3e0070bf'))
|
else os.getenv("NEOFS_IR_CONTRACTS_NEOFS", 'cfe89912c457754b7eb1f89781dc74bb3e0070bf'))
|
||||||
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
{"version":"3.0","accounts":[{"address":"NVUzCUvrbuWadAm6xBoyZ2U7nCmS9QBZtb","key":"6PYLKJhiSub5imt6WCVy6Quxtd9xu176omev1vWYovzkAQCTSQabAAQXii","label":"","contract":{"script":"DCEDGmxvu98CyjUXRfqGubpalFLXhaxPf8K3VIyipGxPz0pBdHR2qg==","parameters":[{"name":"parameter0","type":"Signature"}],"deployed":false},"lock":false,"isdefault":false}],"scrypt":{"n":16384,"r":8,"p":8},"extra":{"Tokens":null}}
|
|
Loading…
Reference in a new issue