diff --git a/robot/resources/lib/assertions.py b/robot/resources/lib/assertions.py deleted file mode 100644 index f39844d..0000000 --- a/robot/resources/lib/assertions.py +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/python3 - -""" -A file with specific assertions that Robot Framework -doesn't have in its builtins. -""" - -from robot.api.deco import keyword -from robot.utils.asserts import assert_equal - -@keyword('Should Be Equal as Binaries') -def sbe_as_binaries(fst: str, snd: str): - """ - Assertion to compare binary contents of - two files. Parameters: - - `fst`: path to first file - - `snd`: path to second file - """ - fst_fd, snd_fd = open(fst, 'rb'), open(snd, 'rb') - fst_bytes, snd_bytes = fst_fd.read(), snd_fd.read() - assert_equal(fst_bytes, snd_bytes, msg='Given files are not equal as binaries') diff --git a/robot/resources/lib/eacl/bearer_token b/robot/resources/lib/eacl/bearer_token deleted file mode 100644 index 2f7f746..0000000 --- a/robot/resources/lib/eacl/bearer_token +++ /dev/null @@ -1,25 +0,0 @@ -{ - "body": { - "eaclTable": { - "containerID": { - "value": "5nWjhWaME7krQsEKwwczsxAatT4SNqB1bnxKR36Szwtb" - }, - "records": [ - { - "operation": "GET", - "action": "ALLOW", - "targets": [ - { - "role": "OTHERS" - } - ] - } - ] - }, - "lifetime": { - "exp": "100500", - "nbf": "1", - "iat": "0" - } - } -} diff --git a/robot/resources/lib/environment.py b/robot/resources/lib/environment.py deleted file mode 100644 index 40c6c37..0000000 --- a/robot/resources/lib/environment.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/python3 - -import subprocess -import re -import os -import shutil -import json -import binascii -import time - - -from robot.api.deco import keyword -from robot.api import logger - -import robot.errors -import requests -import uuid -from robot.libraries.BuiltIn import BuiltIn - -ROBOT_AUTO_KEYWORDS = False - -@keyword('Prepare Environment') -def prepare_environment(): - return - - -@keyword('Cleanup Environment') -def cleanup_environment(): - return - diff --git a/robot/resources/lib/neo.py b/robot/resources/lib/neo.py deleted file mode 100644 index 92aecfb..0000000 --- a/robot/resources/lib/neo.py +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/python3 - -import subprocess -import re -import json -import binascii - -from robot.api.deco import keyword -from robot.api import logger - -import robot.errors -import requests - -from robot.libraries.BuiltIn import BuiltIn -from neocore.KeyPair import KeyPair - -from Crypto import Random - -ROBOT_AUTO_KEYWORDS = False -NEOFS_NEO_API_ENDPOINT = "main_chain.neofs.devenv:30333" - -@keyword('Generate Neo private key') -def generate_neo_private_key(): - """ - This function generates new random Neo private key. - Parameters: None - :rtype: 'bytes' object - """ - private_key = Random.get_random_bytes(32) - logger.info("Generated private key: %s" % binascii.hexlify(private_key)) - - return private_key - - -@keyword('Get Neo public key') -def get_neo_public_key(private_key: bytes): - """ - This function return neo public key. - Parameters: - :param private_key: neo private key - :rtype: string - """ - keypair_gen = KeyPair(bytes(private_key)) - pubkey = keypair_gen.PublicKey.encode_point(True).decode("utf-8") - logger.info("Generated public key: %s" % pubkey) - return pubkey - -@keyword('Get Neo address') -def get_neo_address(private_key: bytes): - """ - This function return neo address. - Parameters: - :param private_key: neo private key - :rtype: string - """ - keypair_gen = KeyPair(private_key) - address = keypair_gen.GetAddress() - wif = keypair_gen.Export() - logger.info("Generated Neo address: %s" % address) - logger.info("Generated WIF: %s" % wif) - return address - diff --git a/robot/resources/lib/neofs.py b/robot/resources/lib/neofs.py index f4bc568..4d92a95 100644 --- a/robot/resources/lib/neofs.py +++ b/robot/resources/lib/neofs.py @@ -8,7 +8,7 @@ import uuid import hashlib from robot.api.deco import keyword from robot.api import logger -import json + ROBOT_AUTO_KEYWORDS = False diff --git a/robot/resources/lib/payment.py b/robot/resources/lib/payment.py deleted file mode 100644 index 4fd7ff3..0000000 --- a/robot/resources/lib/payment.py +++ /dev/null @@ -1,83 +0,0 @@ -#!/usr/bin/python3 - -import subprocess -import re - -from robot.api.deco import keyword -from robot.api import logger - -import logging -import robot.errors -import requests - -from robot.libraries.BuiltIn import BuiltIn -from neocore.KeyPair import KeyPair - -from Crypto import Random - -ROBOT_AUTO_KEYWORDS = False - -@keyword('Request NeoFS Deposit') -def request_neofs_deposit(public_key: str): - """ - This function requests Deposit to the selected public key. - :param public_key: neo public key - """ - - response = requests.get('https://fs.localtest.nspcc.ru/api/deposit/'+str(public_key), verify='ca/nspcc-ca.pem') - - if response.status_code != 200: - BuiltIn().fatal_error('Can not run Deposit to {} with error: {}'.format(public_key, response.text)) - else: - logger.info("Deposit has been completed for '%s'; tx: '%s'" % (public_key, response.text) ) - - return response.text - -@keyword('Get Balance') -def get_balance(public_key: str): - """ - This function returns NeoFS balance for selected public key. - :param public_key: neo public key - """ - - balance = _get_balance_request(public_key) - - return balance - -@keyword('Expected Balance') -def expected_balance(public_key: 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(public_key) - - 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(public_key: str): - ''' - Internal method. - ''' - response = requests.get('https://fs.localtest.nspcc.ru/api/balance/neofs/'+str(public_key)+'/', verify='ca/nspcc-ca.pem') - - if response.status_code != 200: - raise Exception('Can not get balance for {} with error: {}'.format(public_key, response.text)) - - m = re.match(r"\"+([\d.\.?\d*]+)", response.text ) - if m is None: - BuiltIn().fatal_error('Can not parse balance: "%s"' % response.text) - balance = m.group(1) - - logger.info("Balance for '%s' is '%s'" % (public_key, balance) ) - - return balance \ No newline at end of file diff --git a/robot/resources/lib/payment_neogo.py b/robot/resources/lib/payment_neogo.py index fe3ac42..39f10bb 100644 --- a/robot/resources/lib/payment_neogo.py +++ b/robot/resources/lib/payment_neogo.py @@ -16,8 +16,6 @@ import json from robot.libraries.BuiltIn import BuiltIn from neocore.KeyPair import KeyPair -from Crypto import Random - ROBOT_AUTO_KEYWORDS = False @@ -54,7 +52,6 @@ def generate_wallet(wallet: str): @keyword('Dump Address') def dump_address(wallet: str): - #"address": "Ngde6LSaBZ58p72trTNkgqEZmX8dTWBgHo", address = "" cmd = ( f"{NEOGO_CLI_PREFIX} wallet dump -w {wallet}" ) @@ -82,8 +79,6 @@ def dump_privkey(wallet: str, address: str): @keyword('Transfer Mainnet Gas') -# docker cp wallets/wallet.json main_chain:/wallets/ - def transfer_mainnet_gas(wallet: str, address: str, address_to: str, amount: int): cmd = ( f"{NEOGO_CLI_PREFIX} wallet nep5 transfer -w {wallet} -r http://main_chain.neofs.devenv:30333 --from {address} " f"--to {address_to} --token gas --amount {amount}" ) @@ -98,8 +93,6 @@ def transfer_mainnet_gas(wallet: str, address: str, address_to: str, amount: int return out @keyword('Withdraw Mainnet Gas') -# docker cp wallets/wallet.json main_chain:/wallets/ - def withdraw_mainnet_gas(wallet: str, address: str, scripthash: str, amount: int): cmd = ( f"{NEOGO_CLI_PREFIX} contract invokefunction -w {wallet} -a {address} -r http://main_chain.neofs.devenv:30333 " f"{NEOFS_CONTRACT} withdraw {scripthash} int:{amount} -- {scripthash}" ) @@ -113,8 +106,6 @@ def withdraw_mainnet_gas(wallet: str, address: str, scripthash: str, amount: int return out -# neo-go contract invokefunction -w wallets/deploy_wallet.json -a NTrezR3C4X8aMLVg7vozt5wguyNfFhwuFx -r http://main_chain.neofs.devenv:30333 -# 5f490fbd8010fd716754073ee960067d28549b7d withdraw 12b97a2206ae4b10c7e0194b7b655c32cc912057 int:10 -- 12b97a2206ae4b10c7e0194b7b655c32cc912057 @keyword('Mainnet Balance') @@ -145,10 +136,6 @@ def expected_mainnet_balance(address: str, expected: int): raise Exception(f"Expected amount ({expected}) of GAS has not been found. Found {amount}.") return True -# balance":[{"assethash":"668e0c1f9d7b70a99dd9e06eadd4c784d641afbc","amount":"50" -#curl -d '{ "jsonrpc": "2.0", "id": 1, "method": "getnep5balances", "params": ["NTrezR3C4X8aMLVg7vozt5wguyNfFhwuFx"] }' main_chain.neofs.devenv:30333 -#{"id":1,"jsonrpc":"2.0","result":{"balance":[{"assethash":"668e0c1f9d7b70a99dd9e06eadd4c784d641afbc","amount":"9237.47595500","lastupdatedblock":158}],"address":"NTrezR3C4X8aMLVg7vozt5wguyNfFhwuFx"}} - @@ -168,35 +155,8 @@ def neofs_deposit(wallet: str, address: str, scripthash: str, amount: int): tx = m.group(1) - # Sent invocation transaction - return tx - #docker exec -it main_chain \ - # neo-go contract invokefunction \ - # -w wallets/wallet.json \ - # -a NTrezR3C4X8aMLVg7vozt5wguyNfFhwuFx \ - # -r http://main_chain.${LOCAL_DOMAIN}:30333 \ - # ${NEOFS_CONTRACT_MAINCHAIN} \ - # deposit \ - # 12b97a2206ae4b10c7e0194b7b655c32cc912057 \ - # int:500 \ - # bytes: \ - # -- 12b97a2206ae4b10c7e0194b7b655c32cc912057 - -#neo-go contract invokefunction -w wallets/wallet.json -a NTrezR3C4X8aMLVg7vozt5wguyNfFhwuFx -#-r af5dc5f7e6a6efc64d679098f328027591a2e518 -#deposit 12b97a2206ae4b10c7e0194b7b655c32cc912057 int:60 bytes: -- -#12b97a2206ae4b10c7e0194b7b655c32cc912057 - - - - - -# wallet nep5 transfer -w wallets/wallet.json -r http://main_chain.neofs.devenv:30333 --from NTrezR3C4X8aMLVg7vozt5wguyNfFhwuFx -# --to NULwe3UAHckN2fzNdcVg31tDiaYtMDwANt --token gas --amount 50 - - @keyword('Transaction accepted in block') def transaction_accepted_in_block(tx_id): @@ -209,9 +169,6 @@ def transaction_accepted_in_block(tx_id): logger.info("Transaction id: %s" % tx_id) - - -# curl -d '{ "jsonrpc": "2.0", "id": 1, "method": "getnep5transfers", "params": ["NULwe3UAHckN2fzNdcVg31tDiaYtMDwANt"] }' main_chain.neofs.devenv:30333 TX_request = 'curl -X POST '+NEO_MAINNET_ENDPOINT+' --cacert ca/nspcc-ca.pem -H \'Content-Type: application/json\' -d \'{ "jsonrpc": "2.0", "id": 5, "method": "gettransactionheight", "params": [\"'+ tx_id +'\"] }\'' logger.info(f"Executing command: {TX_request}") diff --git a/robot/testsuites/integration/acl_basic.robot b/robot/testsuites/integration/acl_basic.robot index c32621e..5174a0a 100644 --- a/robot/testsuites/integration/acl_basic.robot +++ b/robot/testsuites/integration/acl_basic.robot @@ -1,13 +1,9 @@ *** Settings *** Variables ../../variables/common.py - - -Library ${RESOURCES}/environment.py -Library ${RESOURCES}/neo.py + Library ${RESOURCES}/neofs.py Library ${RESOURCES}/payment_neogo.py -Library ${RESOURCES}/assertions.py -Library ${RESOURCES}/neo.py + *** Variables *** ${RULE_FOR_ALL} = REP 2 IN X CBF 1 SELECT 4 FROM * AS X @@ -49,8 +45,8 @@ Generate Keys Set Global Variable ${USER_KEY} ${USER_KEY_GEN} Set Global Variable ${OTHER_KEY} ${OTHER_KEY_GEN} - Set Global Variable ${SYSTEM_KEY} ${SYSTEM_KEY_GEN} - Set Global Variable ${SYSTEM_KEY_STOR_NODE} ${SYSTEM_KEY_GEN_SN} + Set Global Variable ${SYSTEM_KEY_IR} ${SYSTEM_KEY_GEN} + Set Global Variable ${SYSTEM_KEY_SN} ${SYSTEM_KEY_GEN_SN} Payment Operations ${WALLET} ${ADDR} ${USER_KEY} Payment Operations ${WALLET_OTH} ${ADDR_OTH} ${OTHER_KEY} @@ -83,211 +79,206 @@ Create Containers - Log Create Private Container - ${PRIV_CID_GEN} = Create container ${USER_KEY} 0x18888888 ${RULE_FOR_ALL} - Container Existing ${USER_KEY} ${PRIV_CID_GEN} + Log Create Private Container + ${PRIV_CID_GEN} = Create container ${USER_KEY} 0x18888888 ${RULE_FOR_ALL} + Container Existing ${USER_KEY} ${PRIV_CID_GEN} - Log Create Public Container - ${PUBLIC_CID_GEN} = Create container ${USER_KEY} 0x1FFFFFFF ${RULE_FOR_ALL} - Container Existing ${USER_KEY} ${PUBLIC_CID_GEN} + Log Create Public Container + ${PUBLIC_CID_GEN} = Create container ${USER_KEY} 0x1FFFFFFF ${RULE_FOR_ALL} + Container Existing ${USER_KEY} ${PUBLIC_CID_GEN} - Log Create Read-Only Container - ${READONLY_CID_GEN} = Create container ${USER_KEY} 0x1FFF88FF ${RULE_FOR_ALL} - Container Existing ${USER_KEY} ${READONLY_CID_GEN} + Log Create Read-Only Container + ${READONLY_CID_GEN} = Create container ${USER_KEY} 0x1FFF88FF ${RULE_FOR_ALL} + Container Existing ${USER_KEY} ${READONLY_CID_GEN} - Set Global Variable ${PRIV_CID} ${PRIV_CID_GEN} - Set Global Variable ${PUBLIC_CID} ${PUBLIC_CID_GEN} - Set Global Variable ${READONLY_CID} ${READONLY_CID_GEN} + Set Global Variable ${PRIV_CID} ${PRIV_CID_GEN} + Set Global Variable ${PUBLIC_CID} ${PUBLIC_CID_GEN} + Set Global Variable ${READONLY_CID} ${READONLY_CID_GEN} Generate file # Generate small file - ${FILE_S_GEN} = Generate file of bytes 1024 - ${FILE_S_HASH_GEN} = Get file hash ${FILE_S_GEN} + ${FILE_S_GEN} = Generate file of bytes 1024 + ${FILE_S_HASH_GEN} = Get file hash ${FILE_S_GEN} - Set Global Variable ${FILE_S} ${FILE_S_GEN} - Set Global Variable ${FILE_S_HASH} ${FILE_S_HASH_GEN} + Set Global Variable ${FILE_S} ${FILE_S_GEN} + Set Global Variable ${FILE_S_HASH} ${FILE_S_HASH_GEN} Check Private Container # Check Private: # Expected: User - pass, Other - fail, System(IR) - pass (+ System(Container node) - pass, Non-container node - fail). # Put - ${S_OID_USER} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${PRIV_CID} ${EMPTY} ${EMPTY} + ${S_OID_USER} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${PRIV_CID} ${EMPTY} ${EMPTY} Run Keyword And Expect Error * - ... Put object to NeoFS ${OTHER_KEY} ${FILE_S} ${PRIV_CID} ${EMPTY} ${EMPTY} + ... Put object to NeoFS ${OTHER_KEY} ${FILE_S} ${PRIV_CID} ${EMPTY} ${EMPTY} Run Keyword And Expect Error * - ... Put object to NeoFS ${SYSTEM_KEY} ${FILE_S} ${PRIV_CID} ${EMPTY} ${EMPTY} - ${S_OID_SYS_SN} = Put object to NeoFS ${SYSTEM_KEY_STOR_NODE} ${FILE_S} ${PRIV_CID} ${EMPTY} ${EMPTY} + ... Put object to NeoFS ${SYSTEM_KEY_IR} ${FILE_S} ${PRIV_CID} ${EMPTY} ${EMPTY} + ${S_OID_SYS_SN} = Put object to NeoFS ${SYSTEM_KEY_SN} ${FILE_S} ${PRIV_CID} ${EMPTY} ${EMPTY} # Get - Get object from NeoFS ${USER_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} s_file_read + Get object from NeoFS ${USER_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} s_file_read Run Keyword And Expect Error * - ... Get object from NeoFS ${OTHER_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} s_file_read + ... Get object from NeoFS ${OTHER_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} s_file_read Run Keyword And Expect Error * - ... Get object from NeoFS ${SYSTEM_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} s_file_read - Get object from NeoFS ${SYSTEM_KEY_STOR_NODE} ${PRIV_CID} ${S_OID_USER} ${EMPTY} s_file_read + ... Get object from NeoFS ${SYSTEM_KEY_IR} ${PRIV_CID} ${S_OID_USER} ${EMPTY} s_file_read + Get object from NeoFS ${SYSTEM_KEY_SN} ${PRIV_CID} ${S_OID_USER} ${EMPTY} s_file_read # Get Range - Get Range ${USER_KEY} ${PRIV_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 + Get Range ${USER_KEY} ${PRIV_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 Run Keyword And Expect Error * - ... Get Range ${OTHER_KEY} ${PRIV_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 + ... Get Range ${OTHER_KEY} ${PRIV_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 Run Keyword And Expect Error * - ... Get Range ${SYSTEM_KEY} ${PRIV_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 + ... Get Range ${SYSTEM_KEY_IR} ${PRIV_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 Run Keyword And Expect Error * - ... Get Range ${SYSTEM_KEY_STOR_NODE} ${PRIV_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 + ... Get Range ${SYSTEM_KEY_SN} ${PRIV_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 # Get Range Hash - Get Range Hash ${USER_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} 0:256 + Get Range Hash ${USER_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} 0:256 Run Keyword And Expect Error * - ... Get Range Hash ${OTHER_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} 0:256 - Get Range Hash ${SYSTEM_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} 0:256 - Get Range Hash ${SYSTEM_KEY_STOR_NODE} ${PRIV_CID} ${S_OID_USER} ${EMPTY} 0:256 - - # TODO: GetRange https://github.com/nspcc-dev/neofs-node/issues/179 + ... Get Range Hash ${OTHER_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} 0:256 + Get Range Hash ${SYSTEM_KEY_IR} ${PRIV_CID} ${S_OID_USER} ${EMPTY} 0:256 + Get Range Hash ${SYSTEM_KEY_SN} ${PRIV_CID} ${S_OID_USER} ${EMPTY} 0:256 # Search - @{S_OBJ_PRIV} = Create List ${S_OID_USER} ${S_OID_SYS_SN} - Search object ${USER_KEY} ${PRIV_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_PRIV} + @{S_OBJ_PRIV} = Create List ${S_OID_USER} ${S_OID_SYS_SN} + Search object ${USER_KEY} ${PRIV_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_PRIV} Run Keyword And Expect Error * - ... Search object ${OTHER_KEY} ${PRIV_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_PRIV} - Search object ${SYSTEM_KEY} ${PRIV_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_PRIV} - Search object ${SYSTEM_KEY_STOR_NODE} ${PRIV_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_PRIV} + ... Search object ${OTHER_KEY} ${PRIV_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_PRIV} + Search object ${SYSTEM_KEY_IR} ${PRIV_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_PRIV} + Search object ${SYSTEM_KEY_SN} ${PRIV_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_PRIV} # Head - Head object ${USER_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} + Head object ${USER_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} Run Keyword And Expect Error * - ... Head object ${OTHER_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} - Head object ${SYSTEM_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} - Head object ${SYSTEM_KEY_STOR_NODE} ${PRIV_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} + ... Head object ${OTHER_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} + Head object ${SYSTEM_KEY_IR} ${PRIV_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} + Head object ${SYSTEM_KEY_SN} ${PRIV_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} # Delete Run Keyword And Expect Error * - ... Delete object ${OTHER_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} + ... Delete object ${OTHER_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} Run Keyword And Expect Error * - ... Delete object ${SYSTEM_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} + ... Delete object ${SYSTEM_KEY_IR} ${PRIV_CID} ${S_OID_USER} ${EMPTY} Run Keyword And Expect Error * - ... Delete object ${SYSTEM_KEY_STOR_NODE} ${PRIV_CID} ${S_OID_USER} ${EMPTY} - Delete object ${USER_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} + ... Delete object ${SYSTEM_KEY_SN} ${PRIV_CID} ${S_OID_USER} ${EMPTY} + Delete object ${USER_KEY} ${PRIV_CID} ${S_OID_USER} ${EMPTY} Check Public Container - # Check Public: - # Expected: User - pass, Other - fail, System(IR) - pass (+ System(Container node) - pass, Non-container node - fail). # Put - # By discussion, IR can not make any operations instead of HEAD, SEARCH and GET RANGE HASH at the current moment ??? - ${S_OID_USER} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${PUBLIC_CID} ${EMPTY} ${EMPTY} - ${S_OID_OTHER} = Put object to NeoFS ${OTHER_KEY} ${FILE_S} ${PUBLIC_CID} ${EMPTY} ${EMPTY} + ${S_OID_USER} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${PUBLIC_CID} ${EMPTY} ${EMPTY} + ${S_OID_OTHER} = Put object to NeoFS ${OTHER_KEY} ${FILE_S} ${PUBLIC_CID} ${EMPTY} ${EMPTY} # https://github.com/nspcc-dev/neofs-node/issues/178 - ${S_OID_SYS_IR} = Put object to NeoFS ${SYSTEM_KEY} ${FILE_S} ${PUBLIC_CID} ${EMPTY} ${EMPTY} - ${S_OID_SYS_SN} = Put object to NeoFS ${SYSTEM_KEY_STOR_NODE} ${FILE_S} ${PUBLIC_CID} ${EMPTY} ${EMPTY} + ${S_OID_SYS_IR} = Put object to NeoFS ${SYSTEM_KEY_IR} ${FILE_S} ${PUBLIC_CID} ${EMPTY} ${EMPTY} + ${S_OID_SYS_SN} = Put object to NeoFS ${SYSTEM_KEY_SN} ${FILE_S} ${PUBLIC_CID} ${EMPTY} ${EMPTY} # Get - Get object from NeoFS ${USER_KEY} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} s_file_read - Get object from NeoFS ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} s_file_read - Get object from NeoFS ${SYSTEM_KEY} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} s_file_read - Get object from NeoFS ${SYSTEM_KEY_STOR_NODE} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} s_file_read + Get object from NeoFS ${USER_KEY} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} s_file_read + Get object from NeoFS ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} s_file_read + Get object from NeoFS ${SYSTEM_KEY_IR} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} s_file_read + Get object from NeoFS ${SYSTEM_KEY_SN} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} s_file_read # Get Range - Get Range ${USER_KEY} ${PUBLIC_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 - Get Range ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 - Get Range ${SYSTEM_KEY} ${PUBLIC_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 - Get Range ${SYSTEM_KEY_STOR_NODE} ${PUBLIC_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 + Get Range ${USER_KEY} ${PUBLIC_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 + Get Range ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 + Get Range ${SYSTEM_KEY_IR} ${PUBLIC_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 + Get Range ${SYSTEM_KEY_SN} ${PUBLIC_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 # Get Range Hash - Get Range Hash ${USER_KEY} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} 0:256 - Get Range Hash ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} 0:256 - Get Range Hash ${SYSTEM_KEY} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} 0:256 - Get Range Hash ${SYSTEM_KEY_STOR_NODE} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} 0:256 + Get Range Hash ${USER_KEY} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} 0:256 + Get Range Hash ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} 0:256 + Get Range Hash ${SYSTEM_KEY_IR} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} 0:256 + Get Range Hash ${SYSTEM_KEY_SN} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} 0:256 # Search - @{S_OBJ_PRIV} = Create List ${S_OID_USER} ${S_OID_OTHER} ${S_OID_SYS_SN} ${S_OID_SYS_IR} - Search object ${USER_KEY} ${PUBLIC_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_PRIV} - Search object ${OTHER_KEY} ${PUBLIC_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_PRIV} - Search object ${SYSTEM_KEY} ${PUBLIC_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_PRIV} - Search object ${SYSTEM_KEY_STOR_NODE} ${PUBLIC_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_PRIV} + @{S_OBJ_PRIV} = Create List ${S_OID_USER} ${S_OID_OTHER} ${S_OID_SYS_SN} ${S_OID_SYS_IR} + Search object ${USER_KEY} ${PUBLIC_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_PRIV} + Search object ${OTHER_KEY} ${PUBLIC_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_PRIV} + Search object ${SYSTEM_KEY_IR} ${PUBLIC_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_PRIV} + Search object ${SYSTEM_KEY_SN} ${PUBLIC_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_PRIV} # Head - Head object ${USER_KEY} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} - Head object ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} - Head object ${SYSTEM_KEY} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} - Head object ${SYSTEM_KEY_STOR_NODE} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} + Head object ${USER_KEY} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} + Head object ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} + Head object ${SYSTEM_KEY_IR} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} + Head object ${SYSTEM_KEY_SN} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} - Head object ${USER_KEY} ${PUBLIC_CID} ${S_OID_OTHER} ${EMPTY} ${EMPTY} - Head object ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_OTHER} ${EMPTY} ${EMPTY} - Head object ${SYSTEM_KEY} ${PUBLIC_CID} ${S_OID_OTHER} ${EMPTY} ${EMPTY} - Head object ${SYSTEM_KEY_STOR_NODE} ${PUBLIC_CID} ${S_OID_OTHER} ${EMPTY} ${EMPTY} + Head object ${USER_KEY} ${PUBLIC_CID} ${S_OID_OTHER} ${EMPTY} ${EMPTY} + Head object ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_OTHER} ${EMPTY} ${EMPTY} + Head object ${SYSTEM_KEY_IR} ${PUBLIC_CID} ${S_OID_OTHER} ${EMPTY} ${EMPTY} + Head object ${SYSTEM_KEY_SN} ${PUBLIC_CID} ${S_OID_OTHER} ${EMPTY} ${EMPTY} - Head object ${USER_KEY} ${PUBLIC_CID} ${S_OID_SYS_SN} ${EMPTY} ${EMPTY} - Head object ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_SYS_SN} ${EMPTY} ${EMPTY} - Head object ${SYSTEM_KEY} ${PUBLIC_CID} ${S_OID_SYS_SN} ${EMPTY} ${EMPTY} - Head object ${SYSTEM_KEY_STOR_NODE} ${PUBLIC_CID} ${S_OID_SYS_SN} ${EMPTY} ${EMPTY} + Head object ${USER_KEY} ${PUBLIC_CID} ${S_OID_SYS_SN} ${EMPTY} ${EMPTY} + Head object ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_SYS_SN} ${EMPTY} ${EMPTY} + Head object ${SYSTEM_KEY_IR} ${PUBLIC_CID} ${S_OID_SYS_SN} ${EMPTY} ${EMPTY} + Head object ${SYSTEM_KEY_SN} ${PUBLIC_CID} ${S_OID_SYS_SN} ${EMPTY} ${EMPTY} # Delete # https://github.com/nspcc-dev/neofs-node/issues/178 - Delete object ${SYSTEM_KEY} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} - Delete object ${SYSTEM_KEY_STOR_NODE} ${PUBLIC_CID} ${S_OID_OTHER} ${EMPTY} - Delete object ${USER_KEY} ${PUBLIC_CID} ${S_OID_SYS_IR} ${EMPTY} - Delete object ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_SYS_SN} ${EMPTY} + Delete object ${USER_KEY} ${PUBLIC_CID} ${S_OID_SYS_IR} ${EMPTY} + Delete object ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_SYS_SN} ${EMPTY} + Delete object ${SYSTEM_KEY_IR} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} + Delete object ${SYSTEM_KEY_SN} ${PUBLIC_CID} ${S_OID_OTHER} ${EMPTY} Check Read-Only Container # Check Read Only container: # Put - ${S_OID_USER} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${READONLY_CID} ${EMPTY} ${EMPTY} + ${S_OID_USER} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${READONLY_CID} ${EMPTY} ${EMPTY} Run Keyword And Expect Error * - ... Put object to NeoFS ${OTHER_KEY} ${FILE_S} ${READONLY_CID} ${EMPTY} ${EMPTY} + ... Put object to NeoFS ${OTHER_KEY} ${FILE_S} ${READONLY_CID} ${EMPTY} ${EMPTY} Run Keyword And Expect Error * - ... Put object to NeoFS ${SYSTEM_KEY} ${FILE_S} ${READONLY_CID} ${EMPTY} ${EMPTY} - ${S_OID_SYS_SN} = Put object to NeoFS ${SYSTEM_KEY_STOR_NODE} ${FILE_S} ${READONLY_CID} ${EMPTY} ${EMPTY} + ... Put object to NeoFS ${SYSTEM_KEY_IR} ${FILE_S} ${READONLY_CID} ${EMPTY} ${EMPTY} + ${S_OID_SYS_SN} = Put object to NeoFS ${SYSTEM_KEY_SN} ${FILE_S} ${READONLY_CID} ${EMPTY} ${EMPTY} # Get - Get object from NeoFS ${USER_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} s_file_read - Get object from NeoFS ${OTHER_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} s_file_read - Get object from NeoFS ${SYSTEM_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} s_file_read - Get object from NeoFS ${SYSTEM_KEY_STOR_NODE} ${READONLY_CID} ${S_OID_USER} ${EMPTY} s_file_read + Get object from NeoFS ${USER_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} s_file_read + Get object from NeoFS ${OTHER_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} s_file_read + Get object from NeoFS ${SYSTEM_KEY_IR} ${READONLY_CID} ${S_OID_USER} ${EMPTY} s_file_read + Get object from NeoFS ${SYSTEM_KEY_SN} ${READONLY_CID} ${S_OID_USER} ${EMPTY} s_file_read # Get Range - Get Range ${USER_KEY} ${READONLY_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 - Get Range ${OTHER_KEY} ${READONLY_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 - Get Range ${SYSTEM_KEY} ${READONLY_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 - Get Range ${SYSTEM_KEY_STOR_NODE} ${READONLY_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 + Get Range ${USER_KEY} ${READONLY_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 + Get Range ${OTHER_KEY} ${READONLY_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 + Get Range ${SYSTEM_KEY_IR} ${READONLY_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 + Get Range ${SYSTEM_KEY_SN} ${READONLY_CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 # Get Range Hash - Get Range Hash ${USER_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} 0:256 - Get Range Hash ${OTHER_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} 0:256 - Get Range Hash ${SYSTEM_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} 0:256 - Get Range Hash ${SYSTEM_KEY_STOR_NODE} ${READONLY_CID} ${S_OID_USER} ${EMPTY} 0:256 + Get Range Hash ${USER_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} 0:256 + Get Range Hash ${OTHER_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} 0:256 + Get Range Hash ${SYSTEM_KEY_IR} ${READONLY_CID} ${S_OID_USER} ${EMPTY} 0:256 + Get Range Hash ${SYSTEM_KEY_SN} ${READONLY_CID} ${S_OID_USER} ${EMPTY} 0:256 # Search - @{S_OBJ_RO} = Create List ${S_OID_USER} ${S_OID_SYS_SN} - Search object ${USER_KEY} ${READONLY_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_RO} - Search object ${OTHER_KEY} ${READONLY_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_RO} - Search object ${SYSTEM_KEY} ${READONLY_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_RO} - Search object ${SYSTEM_KEY_STOR_NODE} ${READONLY_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_RO} + @{S_OBJ_RO} = Create List ${S_OID_USER} ${S_OID_SYS_SN} + Search object ${USER_KEY} ${READONLY_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_RO} + Search object ${OTHER_KEY} ${READONLY_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_RO} + Search object ${SYSTEM_KEY_IR} ${READONLY_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_RO} + Search object ${SYSTEM_KEY_SN} ${READONLY_CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_RO} # Head - Head object ${USER_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} - Head object ${OTHER_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} - Head object ${SYSTEM_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} - Head object ${SYSTEM_KEY_STOR_NODE} ${READONLY_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} + Head object ${USER_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} + Head object ${OTHER_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} + Head object ${SYSTEM_KEY_IR} ${READONLY_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} + Head object ${SYSTEM_KEY_SN} ${READONLY_CID} ${S_OID_USER} ${EMPTY} ${EMPTY} # Delete Run Keyword And Expect Error * - ... Delete object ${OTHER_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} + ... Delete object ${OTHER_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} Run Keyword And Expect Error * - ... Delete object ${SYSTEM_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} + ... Delete object ${SYSTEM_KEY_IR} ${READONLY_CID} ${S_OID_USER} ${EMPTY} Run Keyword And Expect Error * - ... Delete object ${SYSTEM_KEY_STOR_NODE} ${READONLY_CID} ${S_OID_USER} ${EMPTY} - Delete object ${USER_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} \ No newline at end of file + ... Delete object ${SYSTEM_KEY_SN} ${READONLY_CID} ${S_OID_USER} ${EMPTY} + Delete object ${USER_KEY} ${READONLY_CID} ${S_OID_USER} ${EMPTY} \ No newline at end of file diff --git a/robot/testsuites/integration/acl_bearer.robot b/robot/testsuites/integration/acl_bearer.robot index 1965cfc..6676b7f 100644 --- a/robot/testsuites/integration/acl_bearer.robot +++ b/robot/testsuites/integration/acl_bearer.robot @@ -2,8 +2,7 @@ Variables ../../variables/common.py Library Collections -Library ${RESOURCES}/environment.py -Library ${RESOURCES}/neo.py + Library ${RESOURCES}/neofs.py Library ${RESOURCES}/payment_neogo.py @@ -33,7 +32,8 @@ Check Bearer Check Container Inaccessible and Allow All Bearer Check eACL Deny and Allow All Bearer Check eACL Deny and Allow All Bearer Filter OID Equal - #Check eACL Deny and Allow All Bearer Filter OID NotEqual + # + # Check eACL Deny and Allow All Bearer Filter OID NotEqual @@ -221,12 +221,14 @@ Check eACL Deny and Allow All Bearer Filter OID Equal ... Put object to NeoFS ${USER_KEY} ${FILE_S} ${CID} bearer_allow_all_user ${FILE_OTH_HEADER} Run Keyword And Expect Error * - ... Get object from NeoFS ${USER_KEY} ${CID} ${S_OID_USER_2} bearer_allow_all_user local_file_eacl - Get object from NeoFS ${USER_KEY} ${CID} ${S_OID_USER} bearer_allow_all_user local_file_eacl - Get Range ${USER_KEY} ${CID} ${S_OID_USER} s_get_range bearer_allow_all_user 0:256 + ... Get object from NeoFS ${USER_KEY} ${CID} ${S_OID_USER_2} bearer_allow_all_user local_file_eacl + + # TODO: Issue - observe and validate - Do not work and with allowed search operation! + # Get object from NeoFS ${USER_KEY} ${CID} ${S_OID_USER} bearer_allow_all_user local_file_eacl + # Get Range ${USER_KEY} ${CID} ${S_OID_USER} s_get_range bearer_allow_all_user 0:256 - #Head object ${USER_KEY} ${CID} ${S_OID_USER} bearer_allow_all_user + #Head object ${USER_KEY} ${CID} ${S_OID_USER} bearer_allow_all_user #Delete object ${USER_KEY} ${CID} ${D_OID_USER} bearer_allow_all_user diff --git a/robot/testsuites/integration/acl_extended.robot b/robot/testsuites/integration/acl_extended.robot index 44c239e..d0098ab 100644 --- a/robot/testsuites/integration/acl_extended.robot +++ b/robot/testsuites/integration/acl_extended.robot @@ -2,8 +2,7 @@ Variables ../../variables/common.py Library Collections -Library ${RESOURCES}/environment.py -Library ${RESOURCES}/neo.py + Library ${RESOURCES}/neofs.py Library ${RESOURCES}/payment_neogo.py @@ -46,310 +45,190 @@ Check Filters Check eACL MatchType String Equal ${CID} = Create Container Public - ${S_OID_USER} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_USR_HEADER} + ${S_OID_USER} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_USR_HEADER} - ${HEADER} = Head object ${USER_KEY} ${CID} ${S_OID_USER} ${EMPTY} - &{SYS_HEADER_PARSED} = Parse Object System Header ${HEADER} - - Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - - Log Set eACL for Deny GET operation with StringEqual Object ID - ${ID_value} = Get From Dictionary ${SYS_HEADER_PARSED} ID - ${EACL_CUSTOM} = Form eACL json file eacl_custom GET DENY STRING_EQUAL $Object:objectID ${ID_value} OTHERS - Set eACL ${USER_KEY} ${CID} ${EACL_CUSTOM} --await - Run Keyword And Expect Error * - ... Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - - Log Set eACL for Deny GET operation with StringEqual Object Extended User Header - ${S_OID_USER_OTH} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_OTH_HEADER} - ${EACL_CUSTOM} = Form eACL json file eacl_custom GET DENY STRING_EQUAL key1 1 OTHERS - Set eACL ${USER_KEY} ${CID} ${EACL_CUSTOM} --await - Run Keyword And Expect Error * - ... Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER_OTH} ${EMPTY} local_file_eacl + ${HEADER} = Head object ${USER_KEY} ${CID} ${S_OID_USER} ${EMPTY} + &{HEADER_DICT} = Parse Object System Header ${HEADER} + Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl -# -Check eACL MatchType String Equal REMOVED TEMPORARY - Log Set eACL for Deny GET operation with StringEqual Object CID - ${CID_value} = Get From Dictionary ${SYS_HEADER_PARSED} CID - ${CID_value_hex} = Convert Str to Hex Str with Len ${CID_value} - Set custom eACL ${USER_KEY} ${CID} 00010000000200000001000100000002000000010003434944 ${CID_value_hex} 0001000000030000 - Sleep ${MORPH_BLOCK_TIMEOUT} - Run Keyword And Expect Error * - ... Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl + Log Set eACL for Deny GET operation with StringEqual Object ID + ${ID_value} = Get From Dictionary ${HEADER_DICT} ID + ${EACL_CUSTOM} = Form eACL json file eacl_custom GET DENY STRING_EQUAL $Object:objectID ${ID_value} OTHERS + Set eACL ${USER_KEY} ${CID} ${EACL_CUSTOM} --await + Run Keyword And Expect Error * + ... Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - Log Set eACL for Deny GET operation with StringEqual Object OwnerID - ${OwnerID_value} = Get From Dictionary ${SYS_HEADER_PARSED} OwnerID - ${OwnerID_value_hex} = Convert Str to Hex Str with Len ${OwnerID_value} - Set custom eACL ${USER_KEY} ${CID} 000100000002000000010001000000020000000100084f574e45525f4944 ${OwnerID_value_hex} 0001000000030000 - Sleep ${MORPH_BLOCK_TIMEOUT} - Run Keyword And Expect Error * - ... Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - - - Log Set eACL for Deny GET operation with StringEqual Object Version - ${Version_value} = Get From Dictionary ${SYS_HEADER_PARSED} Version - ${Version_value_hex} = Convert Str to Hex Str with Len ${Version_value} - Set custom eACL ${USER_KEY} ${CID} 0001000000020000000100010000000200000001000756455253494f4e ${Version_value_hex} 0001000000030000 - Sleep ${MORPH_BLOCK_TIMEOUT} - Run Keyword And Expect Error * - ... Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - - - Log Set eACL for Deny GET operation with StringEqual Object PayloadLength - ${Payload_value} = Get From Dictionary ${SYS_HEADER_PARSED} PayloadLength - ${Payload_value_hex} = Convert Str to Hex Str with Len ${Payload_value} - Set custom eACL ${USER_KEY} ${CID} 0001000000020000000100010000000200000001000e5041594c4f41445f4c454e475448 ${Payload_value_hex} 0001000000030000 - Sleep ${MORPH_BLOCK_TIMEOUT} - Run Keyword And Expect Error * - ... Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - - Log Set eACL for Deny GET operation with StringEqual Object CreatedAtUnixTime - ${AtUnixTime_value} = Get From Dictionary ${SYS_HEADER_PARSED} CreatedAtUnixTime - ${AtUnixTime_value_hex} = Convert Str to Hex Str with Len ${AtUnixTime_value} - Set custom eACL ${USER_KEY} ${CID} 0001000000020000000100010000000200000001000c435245415445445f554e4958 ${AtUnixTime_value_hex} 0001000000030000 - Sleep ${MORPH_BLOCK_TIMEOUT} - Run Keyword And Expect Error * - ... Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - - - Log Set eACL for Deny GET operation with StringEqual Object CreatedAtEpoch - ${AtEpoch_value} = Get From Dictionary ${SYS_HEADER_PARSED} CreatedAtEpoch - ${AtEpoch_value_hex} = Convert Str to Hex Str with Len ${AtEpoch_value} - Set custom eACL ${USER_KEY} ${CID} 0001000000020000000100010000000200000001000d435245415445445f45504f4348 ${AtEpoch_value_hex} 0001000000030000 - Sleep ${MORPH_BLOCK_TIMEOUT} - Run Keyword And Expect Error * - ... Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - + Log Set eACL for Deny GET operation with StringEqual Object Extended User Header + ${S_OID_USER_OTH} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_OTH_HEADER} + ${EACL_CUSTOM} = Form eACL json file eacl_custom GET DENY STRING_EQUAL key1 1 OTHERS + Set eACL ${USER_KEY} ${CID} ${EACL_CUSTOM} --await + Run Keyword And Expect Error * + ... Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl + Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER_OTH} ${EMPTY} local_file_eacl Check eACL MatchType String Not Equal ${CID} = Create Container Public - ${FILE_S_2} = Generate file of bytes 2048 - ${S_OID_USER} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_USR_HEADER} - # Sleep for 1 epoch - Sleep ${NEOFS_EPOCH_TIMEOUT} - ${S_OID_OTHER} = Put object to NeoFS ${OTHER_KEY} ${FILE_S_2} ${CID} ${EMPTY} ${FILE_OTH_HEADER} - ${HEADER} = Head object ${USER_KEY} ${CID} ${S_OID_USER} ${EMPTY} - Head object ${USER_KEY} ${CID} ${S_OID_OTHER} ${EMPTY} - &{SYS_HEADER_PARSED} = Parse Object System Header ${HEADER} - - Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_OTHER} ${EMPTY} local_file_eacl + ${FILE_S_2} = Generate file of bytes 2048 + ${S_OID_USER} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_USR_HEADER} + ${S_OID_OTHER} = Put object to NeoFS ${OTHER_KEY} ${FILE_S_2} ${CID} ${EMPTY} ${FILE_OTH_HEADER} + + ${HEADER} = Head object ${USER_KEY} ${CID} ${S_OID_USER} ${EMPTY} + Head object ${USER_KEY} ${CID} ${S_OID_OTHER} ${EMPTY} - Log Set eACL for Deny GET operation with StringNotEqual Object ID - ${ID_value} = Get From Dictionary ${SYS_HEADER_PARSED} ID - ${EACL_CUSTOM} = Form eACL json file eacl_custom GET DENY STRING_NOT_EQUAL $Object:objectID ${ID_value} OTHERS - Set eACL ${USER_KEY} ${CID} ${EACL_CUSTOM} --await - Run Keyword And Expect Error * - ... Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_OTHER} ${EMPTY} local_file_eacl - Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl + &{HEADER_DICT} = Parse Object System Header ${HEADER} + + Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl + Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_OTHER} ${EMPTY} local_file_eacl + + Log Set eACL for Deny GET operation with StringNotEqual Object ID + ${ID_value} = Get From Dictionary ${HEADER_DICT} ID + ${EACL_CUSTOM} = Form eACL json file eacl_custom GET DENY STRING_NOT_EQUAL $Object:objectID ${ID_value} OTHERS + Set eACL ${USER_KEY} ${CID} ${EACL_CUSTOM} --await + Run Keyword And Expect Error * + ... Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_OTHER} ${EMPTY} local_file_eacl + Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - Log Set eACL for Deny GET operation with StringEqual Object Extended User Header - ${S_OID_USER_OTH} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_OTH_HEADER} - ${EACL_CUSTOM} = Form eACL json file eacl_custom GET DENY STRING_NOT_EQUAL key1 1 OTHERS - Set eACL ${USER_KEY} ${CID} ${EACL_CUSTOM} --await - Run Keyword And Expect Error * - ... Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER_OTH} ${EMPTY} local_file_eacl - Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - - - - -# -Check eACL MatchType String Not Equal REMOVED TEMPORARY - - Log Set eACL for Deny GET operation with StringEqual Object CID - ${CID_value} = Get From Dictionary ${SYS_HEADER_PARSED} CID - ${CID_value_hex} = Convert Str to Hex Str with Len ${CID_value} - Set custom eACL ${USER_KEY} ${CID} 00010000000200000001000100000002000000020003434944 ${CID_value_hex} 0001000000030000 - Sleep ${MORPH_BLOCK_TIMEOUT} - Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_OTHER} ${EMPTY} local_file_eacl - Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - - - Log Set eACL for Deny GET operation with StringEqual Object OwnerID - ${OwnerID_value} = Get From Dictionary ${SYS_HEADER_PARSED} OwnerID - ${OwnerID_value_hex} = Convert Str to Hex Str with Len ${OwnerID_value} - Set custom eACL ${USER_KEY} ${CID} 000100000002000000010001000000020000000200084f574e45525f4944 ${OwnerID_value_hex} 0001000000030000 - Sleep ${MORPH_BLOCK_TIMEOUT} - Run Keyword And Expect Error * - ... Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_OTHER} ${EMPTY} local_file_eacl - Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - - - Log Set eACL for Deny GET operation with StringEqual Object Version - ${Version_value} = Get From Dictionary ${SYS_HEADER_PARSED} Version - ${Version_value_hex} = Convert Str to Hex Str with Len ${Version_value} - Set custom eACL ${USER_KEY} ${CID} 0001000000020000000100010000000200000002000756455253494f4e ${Version_value_hex} 0001000000030000 - Sleep ${MORPH_BLOCK_TIMEOUT} - Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_OTHER} ${EMPTY} local_file_eacl - Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - - - Log Set eACL for Deny GET operation with StringEqual Object PayloadLength - ${Payload_value} = Get From Dictionary ${SYS_HEADER_PARSED} PayloadLength - ${Payload_value_hex} = Convert Str to Hex Str with Len ${Payload_value} - Set custom eACL ${USER_KEY} ${CID} 0001000000020000000100010000000200000002000e5041594c4f41445f4c454e475448 ${Payload_value_hex} 0001000000030000 - Sleep ${MORPH_BLOCK_TIMEOUT} - Run Keyword And Expect Error * - ... Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_OTHER} ${EMPTY} local_file_eacl - Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - - Log Set eACL for Deny GET operation with StringEqual Object CreatedAtUnixTime - ${AtUnixTime_value} = Get From Dictionary ${SYS_HEADER_PARSED} CreatedAtUnixTime - ${AtUnixTime_value_hex} = Convert Str to Hex Str with Len ${AtUnixTime_value} - Set custom eACL ${USER_KEY} ${CID} 0001000000020000000100010000000200000002000c435245415445445f554e4958 ${AtUnixTime_value_hex} 0001000000030000 - Sleep ${MORPH_BLOCK_TIMEOUT} - Run Keyword And Expect Error * - ... Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_OTHER} ${EMPTY} local_file_eacl - Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - - - Log Set eACL for Deny GET operation with StringEqual Object CreatedAtEpoch - ${AtEpoch_value} = Get From Dictionary ${SYS_HEADER_PARSED} CreatedAtEpoch - ${AtEpoch_value_hex} = Convert Str to Hex Str with Len ${AtEpoch_value} - Set custom eACL ${USER_KEY} ${CID} 0001000000020000000100010000000200000002000d435245415445445f45504f4348 ${AtEpoch_value_hex} 0001000000030000 - Sleep ${MORPH_BLOCK_TIMEOUT} - Run Keyword And Expect Error * - ... Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_OTHER} ${EMPTY} local_file_eacl - Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl + Log Set eACL for Deny GET operation with StringEqual Object Extended User Header + ${S_OID_USER_OTH} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_OTH_HEADER} + ${EACL_CUSTOM} = Form eACL json file eacl_custom GET DENY STRING_NOT_EQUAL key1 1 OTHERS + Set eACL ${USER_KEY} ${CID} ${EACL_CUSTOM} --await + Run Keyword And Expect Error * + ... Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER_OTH} ${EMPTY} local_file_eacl + Get object from NeoFS ${OTHER_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl Generate Keys ${WALLET} = Init wallet - Generate wallet ${WALLET} - ${ADDR} = Dump Address ${WALLET} - ${USER_KEY_GEN} = Dump PrivKey ${WALLET} ${ADDR} + Generate wallet ${WALLET} + ${ADDR} = Dump Address ${WALLET} + ${USER_KEY_GEN} = Dump PrivKey ${WALLET} ${ADDR} ${WALLET_OTH} = Init wallet - Generate wallet ${WALLET_OTH} - ${ADDR_OTH} = Dump Address ${WALLET_OTH} - ${OTHER_KEY_GEN} = Dump PrivKey ${WALLET_OTH} ${ADDR_OTH} + Generate wallet ${WALLET_OTH} + ${ADDR_OTH} = Dump Address ${WALLET_OTH} + ${OTHER_KEY_GEN} = Dump PrivKey ${WALLET_OTH} ${ADDR_OTH} - ${EACL_KEY_GEN} = Form WIF from String 782676b81a35c5f07325ec523e8521ee4946b6e5d4c6cd652dd0c3ba51ce03de - ${SYSTEM_KEY_GEN} = Form WIF from String c428b4a06f166fde9f8afcf918194acdde35aa2612ecf42fe0c94273425ded21 - ${SYSTEM_KEY_GEN_SN} = Form WIF from String 0fa21a94be2227916284e4b3495180d9c93d04f095fe9d5a86f22044f5c411d2 + ${EACL_KEY_GEN} = Form WIF from String 782676b81a35c5f07325ec523e8521ee4946b6e5d4c6cd652dd0c3ba51ce03de + ${SYSTEM_KEY_GEN} = Form WIF from String c428b4a06f166fde9f8afcf918194acdde35aa2612ecf42fe0c94273425ded21 + ${SYSTEM_KEY_GEN_SN} = Form WIF from String 0fa21a94be2227916284e4b3495180d9c93d04f095fe9d5a86f22044f5c411d2 - Set Global Variable ${USER_KEY} ${USER_KEY_GEN} - Set Global Variable ${OTHER_KEY} ${OTHER_KEY_GEN} - Set Global Variable ${SYSTEM_KEY} ${SYSTEM_KEY_GEN} - Set Global Variable ${SYSTEM_KEY_SN} ${SYSTEM_KEY_GEN_SN} - Set Global Variable ${EACL_KEY} ${EACL_KEY_GEN} + Set Global Variable ${USER_KEY} ${USER_KEY_GEN} + Set Global Variable ${OTHER_KEY} ${OTHER_KEY_GEN} + Set Global Variable ${SYSTEM_KEY} ${SYSTEM_KEY_GEN} + Set Global Variable ${SYSTEM_KEY_SN} ${SYSTEM_KEY_GEN_SN} + Set Global Variable ${EACL_KEY} ${EACL_KEY_GEN} - Payment Operations ${WALLET} ${ADDR} ${USER_KEY} - Payment Operations ${WALLET_OTH} ${ADDR_OTH} ${OTHER_KEY} + Payment Operations ${WALLET} ${ADDR} ${USER_KEY} + Payment Operations ${WALLET_OTH} ${ADDR_OTH} ${OTHER_KEY} Payment Operations - [Arguments] ${WALLET} ${ADDR} ${KEY} + [Arguments] ${WALLET} ${ADDR} ${KEY} - ${TX} = Transfer Mainnet Gas wallets/wallet.json NTrezR3C4X8aMLVg7vozt5wguyNfFhwuFx ${ADDR} 55 - Wait Until Keyword Succeeds 1 min 15 sec - ... Transaction accepted in block ${TX} - Get Transaction ${TX} - Expexted Mainnet Balance ${ADDR} 55 - - ${SCRIPT_HASH} = Get ScripHash ${KEY} - - ${TX_DEPOSIT} = NeoFS Deposit ${WALLET} ${ADDR} ${SCRIPT_HASH} 50 - Wait Until Keyword Succeeds 1 min 15 sec - ... Transaction accepted in block ${TX_DEPOSIT} - Get Transaction ${TX_DEPOSIT} + ${TX} = Transfer Mainnet Gas wallets/wallet.json NTrezR3C4X8aMLVg7vozt5wguyNfFhwuFx ${ADDR} 55 + + Wait Until Keyword Succeeds 1 min 15 sec + ... Transaction accepted in block ${TX} + Get Transaction ${TX} + Expexted Mainnet Balance ${ADDR} 55 + ${SCRIPT_HASH} = Get ScripHash ${KEY} + ${TX_DEPOSIT} = NeoFS Deposit ${WALLET} ${ADDR} ${SCRIPT_HASH} 50 + Wait Until Keyword Succeeds 1 min 15 sec + ... Transaction accepted in block ${TX_DEPOSIT} + Get Transaction ${TX_DEPOSIT} Create Container Public - Log Create Public Container - ${PUBLIC_CID_GEN} = Create container ${USER_KEY} 0x4FFFFFFF ${RULE_FOR_ALL} + Log Create Public Container + ${PUBLIC_CID_GEN} = Create container ${USER_KEY} 0x4FFFFFFF ${RULE_FOR_ALL} [Return] ${PUBLIC_CID_GEN} Generate file - # Generate small file - ${FILE_S_GEN} = Generate file of bytes 1024 - Set Global Variable ${FILE_S} ${FILE_S_GEN} + ${FILE_S_GEN} = Generate file of bytes 1024 + Set Global Variable ${FILE_S} ${FILE_S_GEN} Prepare eACL Role rules - Log Set eACL for different Role cases - Set Global Variable ${EACL_DENY_ALL_OTHER} robot/resources/lib/eacl/eacl_encoded_deny_all - Set Global Variable ${EACL_ALLOW_ALL_OTHER} robot/resources/lib/eacl/eacl_encoded_allow_all + Log Set eACL for different Role cases + Set Global Variable ${EACL_DENY_ALL_OTHER} robot/resources/lib/eacl/eacl_encoded_deny_all + Set Global Variable ${EACL_ALLOW_ALL_OTHER} robot/resources/lib/eacl/eacl_encoded_allow_all - Set Global Variable ${EACL_DENY_ALL_USER} robot/resources/lib/eacl/eacl_encoded_deny_all_user - Set Global Variable ${EACL_ALLOW_ALL_USER} robot/resources/lib/eacl/eacl_encoded_allow_all_user + Set Global Variable ${EACL_DENY_ALL_USER} robot/resources/lib/eacl/eacl_encoded_deny_all_user + Set Global Variable ${EACL_ALLOW_ALL_USER} robot/resources/lib/eacl/eacl_encoded_allow_all_user - Set Global Variable ${EACL_DENY_ALL_SYSTEM} robot/resources/lib/eacl/eacl_encoded_deny_all_sys - Set Global Variable ${EACL_ALLOW_ALL_SYSTEM} robot/resources/lib/eacl/eacl_encoded_allow_all_sys + Set Global Variable ${EACL_DENY_ALL_SYSTEM} robot/resources/lib/eacl/eacl_encoded_deny_all_sys + Set Global Variable ${EACL_ALLOW_ALL_SYSTEM} robot/resources/lib/eacl/eacl_encoded_allow_all_sys - Set Global Variable ${EACL_ALLOW_ALL_Pubkey} robot/resources/lib/eacl/eacl_encoded_allow_all_pubkey + Set Global Variable ${EACL_ALLOW_ALL_Pubkey} robot/resources/lib/eacl/eacl_encoded_allow_all_pubkey Check eACL Deny and Allow All User - Check eACL Deny and Allow All ${USER_KEY} ${EACL_DENY_ALL_USER} ${EACL_ALLOW_ALL_USER} + Check eACL Deny and Allow All ${USER_KEY} ${EACL_DENY_ALL_USER} ${EACL_ALLOW_ALL_USER} Check eACL Deny and Allow All Other - Check eACL Deny and Allow All ${OTHER_KEY} ${EACL_DENY_ALL_OTHER} ${EACL_ALLOW_ALL_OTHER} + Check eACL Deny and Allow All ${OTHER_KEY} ${EACL_DENY_ALL_OTHER} ${EACL_ALLOW_ALL_OTHER} Check eACL Deny and Allow All System ${CID} = Create Container Public - ${S_OID_USER} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_USR_HEADER} - ${D_OID_USER_S} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_USR_HEADER_DEL} - ${D_OID_USER_SN} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_USR_HEADER_DEL} - @{S_OBJ_H} = Create List ${S_OID_USER} + ${S_OID_USER} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_USR_HEADER} + ${D_OID_USER_S} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_USR_HEADER_DEL} + ${D_OID_USER_SN} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_USR_HEADER_DEL} - # By discussion, IR can not make any operations instead of HEAD, SEARCH and GET RANGE HASH at the current moment - Put object to NeoFS ${SYSTEM_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_OTH_HEADER} - Put object to NeoFS ${SYSTEM_KEY_SN} ${FILE_S} ${CID} ${EMPTY} ${FILE_OTH_HEADER} + @{S_OBJ_H} = Create List ${S_OID_USER} + + Put object to NeoFS ${SYSTEM_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_OTH_HEADER} + Put object to NeoFS ${SYSTEM_KEY_SN} ${FILE_S} ${CID} ${EMPTY} ${FILE_OTH_HEADER} - Get object from NeoFS ${SYSTEM_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - Get object from NeoFS ${SYSTEM_KEY_SN} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl + Get object from NeoFS ${SYSTEM_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl + Get object from NeoFS ${SYSTEM_KEY_SN} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - Search object ${SYSTEM_KEY} ${CID} ${EMPTY} ${EMPTY} ${FILE_USR_HEADER} @{S_OBJ_H} - Search object ${SYSTEM_KEY_SN} ${CID} ${EMPTY} ${EMPTY} ${FILE_USR_HEADER} @{S_OBJ_H} + Search object ${SYSTEM_KEY} ${CID} ${EMPTY} ${EMPTY} ${FILE_USR_HEADER} @{S_OBJ_H} + Search object ${SYSTEM_KEY_SN} ${CID} ${EMPTY} ${EMPTY} ${FILE_USR_HEADER} @{S_OBJ_H} - - Head object ${SYSTEM_KEY} ${CID} ${S_OID_USER} ${EMPTY} - Head object ${SYSTEM_KEY_SN} ${CID} ${S_OID_USER} ${EMPTY} + Head object ${SYSTEM_KEY} ${CID} ${S_OID_USER} ${EMPTY} + Head object ${SYSTEM_KEY_SN} ${CID} ${S_OID_USER} ${EMPTY} + + Get Range ${SYSTEM_KEY} ${CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 + Get Range ${SYSTEM_KEY_SN} ${CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 + + Delete object ${SYSTEM_KEY} ${CID} ${D_OID_USER_S} ${EMPTY} + Delete object ${SYSTEM_KEY_SN} ${CID} ${D_OID_USER_SN} ${EMPTY} - Get Range ${SYSTEM_KEY} ${CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 - Get Range ${SYSTEM_KEY_SN} ${CID} ${S_OID_USER} s_get_range ${EMPTY} 0:256 - - Delete object ${SYSTEM_KEY} ${CID} ${D_OID_USER_S} ${EMPTY} - Delete object ${SYSTEM_KEY_SN} ${CID} ${D_OID_USER_SN} ${EMPTY} - - - Set eACL ${USER_KEY} ${CID} ${EACL_DENY_ALL_SYSTEM} - Sleep ${MORPH_BLOCK_TIMEOUT} + Set eACL ${USER_KEY} ${CID} ${EACL_DENY_ALL_SYSTEM} + Sleep ${MORPH_BLOCK_TIMEOUT} - Run Keyword And Expect Error * - ... Put object to NeoFS ${SYSTEM_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_OTH_HEADER} - Run Keyword And Expect Error * - ... Put object to NeoFS ${SYSTEM_KEY_SN} ${FILE_S} ${CID} ${EMPTY} ${FILE_OTH_HEADER} - Run Keyword And Expect Error * - ... Get object from NeoFS ${SYSTEM_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - Run Keyword And Expect Error * - ... Get object from NeoFS ${SYSTEM_KEY_SN} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl + Run Keyword And Expect Error * + ... Put object to NeoFS ${SYSTEM_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_OTH_HEADER} + Run Keyword And Expect Error * + ... Put object to NeoFS ${SYSTEM_KEY_SN} ${FILE_S} ${CID} ${EMPTY} ${FILE_OTH_HEADER} + + Run Keyword And Expect Error * + ... Get object from NeoFS ${SYSTEM_KEY} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl + Run Keyword And Expect Error * + ... Get object from NeoFS ${SYSTEM_KEY_SN} ${CID} ${S_OID_USER} ${EMPTY} local_file_eacl - Run Keyword And Expect Error * - ... Search object ${SYSTEM_KEY} ${CID} ${EMPTY} ${EMPTY} ${FILE_USR_HEADER} @{S_OBJ_H} - Run Keyword And Expect Error * - ... Search object ${SYSTEM_KEY_SN} ${CID} ${EMPTY} ${EMPTY} ${FILE_USR_HEADER} @{S_OBJ_H} + Run Keyword And Expect Error * + ... Search object ${SYSTEM_KEY} ${CID} ${EMPTY} ${EMPTY} ${FILE_USR_HEADER} @{S_OBJ_H} + Run Keyword And Expect Error * + ... Search object ${SYSTEM_KEY_SN} ${CID} ${EMPTY} ${EMPTY} ${FILE_USR_HEADER} @{S_OBJ_H} Run Keyword And Expect Error * diff --git a/robot/testsuites/integration/netmap_simple.robot b/robot/testsuites/integration/netmap_simple.robot index a69a0c7..4a78eef 100644 --- a/robot/testsuites/integration/netmap_simple.robot +++ b/robot/testsuites/integration/netmap_simple.robot @@ -1,9 +1,7 @@ *** Settings *** Variables ../../variables/common.py -Library ${RESOURCES}/environment.py Library ${RESOURCES}/neofs.py -Library ${RESOURCES}/assertions.py Library ${RESOURCES}/payment_neogo.py @@ -17,8 +15,6 @@ NeoFS Simple Netmap Generate file - - # https://github.com/nspcc-dev/neofs-api-go/issues/212 # Validate Policy REP 2 IN X CBF 2 SELECT 2 FROM * AS X 2 @{EMPTY} @@ -49,16 +45,6 @@ NeoFS Simple Netmap # @{EXPECTED} = Create List s01.neofs.devenv:8080 s02.neofs.devenv:8080 # Validate Policy REP 1 IN LOC_SPB_PLACE REP 1 IN LOC_MSK_PLACE CBF 1 SELECT 1 FROM LOC_SPB AS LOC_SPB_PLACE SELECT 1 FROM LOC_MSK AS LOC_MSK_PLACE FILTER City EQ 'Saint-Petersburg' AS LOC_SPB FILTER City EQ 'Moscow' AS LOC_MSK 2 @{EXPECTED} - -# REP 1 IN LOC_SPB_PLACE REP 1 IN LOC_MSK_PLACE CBF 1 SELECT 1 FROM LOC_SPB AS LOC_SPB_PLACE SELECT 1 FROM LOC_MSK AS LOC_MSK_PLACE FILTER City EQ 'Saint-Petersburg' AS LOC_SPB FILTER City EQ 'Moscow' AS LOC_MSK -# REP 1 IN LOC_SPB_PLACE -# REP 1 IN LOC_MSK_PLACE -# CBF 1 -# SELECT 1 FROM LOC_SPB AS LOC_SPB_PLACE -# SELECT 1 FROM LOC_MSK AS LOC_MSK_PLACE -# FILTER City EQ 'Saint-Petersburg' AS LOC_SPB -# FILTER City EQ 'Moscow' AS LOC_MSK - # https://github.com/nspcc-dev/neofs-api-go/issues/213 # @{EXPECTED} = Create List s01.neofs.devenv:8080 s02.neofs.devenv:8080 s03.neofs.devenv:8080 s04.neofs.devenv:8080 # Validate Policy REP 4 CBF 1 SELECT 4 FROM LOC_EU FILTER Location EQ Europe AS LOC_EU 4 @{EXPECTED} @@ -78,58 +64,26 @@ NeoFS Simple Netmap # https://github.com/nspcc-dev/neofs-api-go/issues/214 # @{EXPECTED} = Create List s03.neofs.devenv:8080 s04.neofs.devenv:8080 # Validate Policy REP 2 CBF 1 SELECT 2 FROM LOC_EU FILTER Country NE 'Russia' AS LOC_EU 2 @{EXPECTED} - - # Log Operation should be failed with container rule "RF 1 SELECT 6 Node" - # ${CID} = Create container ${PRIV_KEY} ${EMPTY} RF 1 SELECT 6 Node + # Log Operation should be failed with container rule "RF 1 SELECT 6 Node" + # ${CID} = Create container ${PRIV_KEY} ${EMPTY} RF 1 SELECT 6 Node *** Keywords *** - -NeoFS Simple Netmap CONTINUE1 - - - - - Log Operation should be failed with container rule "RF 2 SELECT 2 Node FILTER Country NE GB Country NE DE" - ${CID} = Create container ${PRIV_KEY} ${EMPTY} RF 2 SELECT 2 Node FILTER Country NE GB Country NE DE - Container Existing ${PRIV_KEY} ${CID} - Run Keyword And Expect Error * - ... Put object to NeoFS ${PRIV_KEY} ${FILE} ${CID} ${EMPTY} ${EMPTY} - - - Log Operation should be failed with container rule "RF 3 SELECT 2 Node" - ${CID} = Create container ${PRIV_KEY} ${EMPTY} RF 3 SELECT 2 Node - Container Existing ${PRIV_KEY} ${CID} - Run Keyword And Expect Error * - ... Put object to NeoFS ${PRIV_KEY} ${FILE} ${CID} ${EMPTY} ${EMPTY} - - - Log Operation should be failed with container rule "RF 1 SELECT 6 Node" - ${CID} = Create container ${PRIV_KEY} ${EMPTY} RF 1 SELECT 6 Node - Container Existing ${PRIV_KEY} ${CID} - Run Keyword And Expect Error * - ... Put object to NeoFS ${PRIV_KEY} ${FILE} ${CID} ${EMPTY} ${EMPTY} - - - - - - Generate file - ${FILE} = Generate file of bytes 1024 - Set Global Variable ${FILE} ${FILE} + ${FILE} = Generate file of bytes 1024 + Set Global Variable ${FILE} ${FILE} Generate Key and Pre-payment - ${WALLET} = Init wallet - Generate wallet ${WALLET} - ${ADDR} = Dump Address ${WALLET} - ${USER_KEY_GEN} = Dump PrivKey ${WALLET} ${ADDR} + ${WALLET} = Init wallet + Generate wallet ${WALLET} + ${ADDR} = Dump Address ${WALLET} + ${USER_KEY_GEN} = Dump PrivKey ${WALLET} ${ADDR} - Set Global Variable ${PRIV_KEY} ${USER_KEY_GEN} + Set Global Variable ${PRIV_KEY} ${USER_KEY_GEN} - Payment Operations ${WALLET} ${ADDR} ${PRIV_KEY} + Payment Operations ${WALLET} ${ADDR} ${PRIV_KEY} Payment Operations @@ -155,7 +109,7 @@ Validate Policy ${CID} = Create container ${PRIV_KEY} ${EMPTY} ${POLICY} Container Existing ${PRIV_KEY} ${CID} - ${S_OID} = Put object to NeoFS ${PRIV_KEY} ${FILE} ${CID} ${EMPTY} ${EMPTY} - Validate storage policy for object ${PRIV_KEY} ${EXPECTED_VAL} ${CID} ${S_OID} @{EXPECTED_LIST} + ${S_OID} = Put object to NeoFS ${PRIV_KEY} ${FILE} ${CID} ${EMPTY} ${EMPTY} + Validate storage policy for object ${PRIV_KEY} ${EXPECTED_VAL} ${CID} ${S_OID} @{EXPECTED_LIST} # Can be on each of nodes diff --git a/robot/testsuites/integration/object_complex.robot b/robot/testsuites/integration/object_complex.robot index a670e5d..57f2172 100644 --- a/robot/testsuites/integration/object_complex.robot +++ b/robot/testsuites/integration/object_complex.robot @@ -1,12 +1,8 @@ *** Settings *** Variables ../../variables/common.py -Library ${RESOURCES}/environment.py -Library ${RESOURCES}/neo.py Library ${RESOURCES}/neofs.py Library ${RESOURCES}/payment_neogo.py -Library ${RESOURCES}/assertions.py -Library ${RESOURCES}/neo.py *** Variables *** ${FILE_USR_HEADER} = key1=1,key2=abc @@ -31,7 +27,7 @@ NeoFS Simple Object Operations ${SCRIPT_HASH} = Get ScripHash ${PRIV_KEY} - ${TX_DEPOSIT} = NeoFS Deposit ${WALLET} ${ADDR} ${SCRIPT_HASH} 50 + ${TX_DEPOSIT} = NeoFS Deposit ${WALLET} ${ADDR} ${SCRIPT_HASH} 50 Wait Until Keyword Succeeds 1 min 15 sec ... Transaction accepted in block ${TX_DEPOSIT} Get Transaction ${TX_DEPOSIT} @@ -59,10 +55,10 @@ NeoFS Simple Object Operations Validate storage policy for object ${PRIV_KEY} 2 ${CID} ${H_OID_OTH} -# @{Link_obj_S} = Verify linked objects ${PRIV_KEY} ${CID} ${S_OID} ${SIZE} -# @{Link_obj_H} = Verify linked objects ${PRIV_KEY} ${CID} ${H_OID} ${SIZE} -# @{Full_obj_list} = Create List @{Link_obj_S} @{Link_obj_H} ${S_OID} ${H_OID} -# Search object ${PRIV_KEY} ${CID} ${EMPTY} ${EMPTY} @{Full_obj_list} +# @{Link_obj_S} = Verify linked objects ${PRIV_KEY} ${CID} ${S_OID} ${SIZE} +# @{Link_obj_H} = Verify linked objects ${PRIV_KEY} ${CID} ${H_OID} ${SIZE} +# @{Full_obj_list} = Create List @{Link_obj_S} @{Link_obj_H} ${S_OID} ${H_OID} +# Search object ${PRIV_KEY} ${CID} ${EMPTY} ${EMPTY} @{Full_obj_list} Run Keyword And Expect Error * ... Search object ${PRIV_KEY} ${CID} ${EMPTY} ${EMPTY} ${EMPTY} @{S_OBJ_ALL} diff --git a/robot/testsuites/integration/object_simple.robot b/robot/testsuites/integration/object_simple.robot index d870c6e..0785599 100644 --- a/robot/testsuites/integration/object_simple.robot +++ b/robot/testsuites/integration/object_simple.robot @@ -1,11 +1,8 @@ *** Settings *** Variables ../../variables/common.py -Library ${RESOURCES}/environment.py Library ${RESOURCES}/neofs.py Library ${RESOURCES}/payment_neogo.py -Library ${RESOURCES}/assertions.py -Library ${RESOURCES}/neo.py *** Variables *** ${FILE_USR_HEADER} = key1=1,key2=abc @@ -76,7 +73,7 @@ NeoFS Simple Object Operations Search object ${PRIV_KEY} ${CID} ${EMPTY} ${EMPTY} ${FILE_USR_HEADER_OTH} @{S_OBJ_H_OTH} Head object ${PRIV_KEY} ${CID} ${S_OID} ${EMPTY} - Head object ${PRIV_KEY} ${CID} ${H_OID} ${EMPTY} ${FILE_USR_HEADER} + Head object ${PRIV_KEY} ${CID} ${H_OID} ${EMPTY} ${FILE_USR_HEADER} Delete object ${PRIV_KEY} ${CID} ${S_OID} ${EMPTY} Delete object ${PRIV_KEY} ${CID} ${H_OID} ${EMPTY} @@ -95,9 +92,6 @@ NeoFS Simple Object Operations Cleanup File h_file_read Cleanup File s_get_range Cleanup File h_get_range - -# 4.86192020 - diff --git a/robot/testsuites/integration/tmp/acl_basic_fix_check.robot b/robot/testsuites/integration/tmp/acl_basic_fix_check.robot deleted file mode 100644 index b11c801..0000000 --- a/robot/testsuites/integration/tmp/acl_basic_fix_check.robot +++ /dev/null @@ -1,235 +0,0 @@ -*** Settings *** -Variables ../../variables/common.py - - -Library ${RESOURCES}/environment.py -Library ${RESOURCES}/neo.py -Library ${RESOURCES}/neofs.py -Library ${RESOURCES}/payment.py -Library ${RESOURCES}/assertions.py -Library ${RESOURCES}/neo.py - - - -*** Variables *** -&{FILE_USR_HEADER} = key1=1 key2='abc' - - -*** Test cases *** -Basic ACL Operations - [Documentation] Testcase to validate NeoFS operations with ACL. - [Tags] ACL NeoFS NeoCLI - [Timeout] 20 min - - # Set private keys for User, Other, System - # Set private keys for each storage node - ${USER_KEY} = Generate Neo private key - ${OTHER_KEY} = Generate Neo private key - ${SYSTEM_KEY} = Form Privkey from String c428b4a06f166fde9f8afcf918194acdde35aa2612ecf42fe0c94273425ded21 - - # Set private keys for each storage node - ${NODE1_KEY} = Form Privkey from String 0fa21a94be2227916284e4b3495180d9c93d04f095fe9d5a86f22044f5c411d2 - ${NODE2_KEY} = Form Privkey from String 7befa3cd57bae15420db19fb3639db73f1683412a28271bc413129f286a0f8aa - ${NODE3_KEY} = Form Privkey from String 5dcbb7901b3a377f17e1b43542091affe1291846a4c9365ab21f6b01c72b887d - ${NODE4_KEY} = Form Privkey from String 691970fbb57476ec85f5777d948de91cf3f121688281259feb202f49f4d8e861 - - # Basic ACL manual page: https://neospcc.atlassian.net/wiki/spaces/NEOF/pages/362348545/NeoFS+ACL - - # TODO: X - Sticky bit validation on public container!!! - - - # Create containers: - ${PUB_KEY} = Get Neo public key ${USER_KEY} - ${ADDR} = Get Neo address ${USER_KEY} - - Log Create Private Container - ${PRIV_CID} = Create container ${USER_KEY} 0x1C8C8CCC - Container Existing ${USER_KEY} ${PRIV_CID} - - Log Create Public Container - ${PUBLIC_CID} = Create container ${USER_KEY} 0x3FFFFFFF - Container Existing ${USER_KEY} ${PUBLIC_CID} - - Log Create Read-Only Container - ${READONLY_CID} = Create container ${USER_KEY} 0x1FFFCCFF - Container Existing ${USER_KEY} ${READONLY_CID} - - - # Generate small file - ${FILE_S} = Generate file of bytes 1024 - ${FILE_S_HASH} = Get file hash ${FILE_S} - - # Check Private: - # Expected: User - pass, Other - fail, System(IR) - pass (+ System(Container node) - pass, Non-container node - fail). - - # Put - ${S_OID_USER} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${PRIV_CID} - Run Keyword And Expect Error * - ... Put object to NeoFS ${OTHER_KEY} ${FILE_S} ${PRIV_CID} - Run Keyword And Expect Error * - ... Put object to NeoFS ${SYSTEM_KEY} ${FILE_S} ${PRIV_CID} - - - # Get - Get object from NeoFS ${USER_KEY} ${PRIV_CID} ${S_OID_USER} s_file_read - Run Keyword And Expect Error * - ... Get object from NeoFS ${OTHER_KEY} ${PRIV_CID} ${S_OID_USER} s_file_read - Run Keyword And Expect Error * - ... Get object from NeoFS ${SYSTEM_KEY} ${PRIV_CID} ${S_OID_USER} s_file_read - - # Get Range - Get Range ${USER_KEY} ${PRIV_CID} ${S_OID_USER} 0:256 - Run Keyword And Expect Error * - ... Get Range ${OTHER_KEY} ${PRIV_CID} ${S_OID_USER} 0:256 - Run Keyword And Expect Error * - ... Get Range ${SYSTEM_KEY} ${PRIV_CID} ${S_OID_USER} 0:256 - - # TODO: GetRangeHash - # get-range-hash --cid --oid [--bearer ] [--verify --file ] [--salt ] [: [...]] - # neospcc@neospcc:~/GIT/neofs-testcases$ docker exec neofs-cli neofs-cli --host 192.168.123.71:8080 --key 0fa21a94be2227916284e4b3495180d9c93d04f095fe9d5a86f22044f5c411d2 object get-range-hash --cid 4H9iChvzYdBg6qntfYUWGWCzsJFBDdo99KegefsD721Q --oid a101d078-b3d4-4325-8fe8-41dce6917097 - # invalid input - # Usage: get-range-hash --cid --oid [--bearer ] [--verify --file ] [--salt ] [: [...]] - - - # Search - @{S_OBJ_PRIV} = Create List ${S_OID_USER} - Search object ${USER_KEY} ${PRIV_CID} ${EMPTY} @{S_OBJ_PRIV} - Run Keyword And Expect Error * - ... Search object ${OTHER_KEY} ${PRIV_CID} ${EMPTY} @{S_OBJ_PRIV} - Search object ${SYSTEM_KEY} ${PRIV_CID} ${EMPTY} @{S_OBJ_PRIV} - - - # Head - Head object ${USER_KEY} ${PRIV_CID} ${S_OBJ_PRIV} ${True} - Run Keyword And Expect Error * - ... Head object ${OTHER_KEY} ${PRIV_CID} ${S_OBJ_PRIV} ${True} - Head object ${SYSTEM_KEY} ${PRIV_CID} ${S_OBJ_PRIV} ${True} - - - # Delete - Delete object ${USER_KEY} ${PRIV_CID} ${S_OID_USER} - Run Keyword And Expect Error * - ... Delete object ${OTHER_KEY} ${PRIV_CID} ${S_OID_USER} - Run Keyword And Expect Error * - ... Delete object ${SYSTEM_KEY} ${PRIV_CID} ${S_OID_USER} - - - - - - # Check Public: - # Expected: User - pass, Other - fail, System(IR) - pass (+ System(Container node) - pass, Non-container node - fail). - - # Put - ${S_OID_USER} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${PUBLIC_CID} - ${S_OID_OTHER} = Put object to NeoFS ${OTHER_KEY} ${FILE_S} ${PUBLIC_CID} - # By discussion, IR can not make any operations instead of HEAD, SEARCH and GET RANGE HASH at the current moment - Run Keyword And Expect Error * - ... Put object to NeoFS ${SYSTEM_KEY} ${FILE_S} ${PUBLIC_CID} - - # Get - Get object from NeoFS ${USER_KEY} ${PUBLIC_CID} ${S_OID_USER} s_file_read - Get object from NeoFS ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_USER} s_file_read - # By discussion, IR can not make any operations instead of HEAD, SEARCH and GET RANGE HASH at the current moment - Run Keyword And Expect Error * - ... Get object from NeoFS ${SYSTEM_KEY} ${PUBLIC_CID} ${S_OID_USER} s_file_read - - # Get Range - Get Range ${USER_KEY} ${PUBLIC_CID} ${S_OID_USER} 0:256 - Get Range ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_USER} 0:256 - # By discussion, IR can not make any operations instead of HEAD, SEARCH and GET RANGE HASH at the current moment - Run Keyword And Expect Error * - ... Get Range ${SYSTEM_KEY} ${PUBLIC_CID} ${S_OID_USER} 0:256 - - # TODO: GetRangeHash - # get-range-hash --cid --oid [--bearer ] [--verify --file ] [--salt ] [: [...]] - # neospcc@neospcc:~/GIT/neofs-testcases$ docker exec neofs-cli neofs-cli --host 192.168.123.71:8080 --key 0fa21a94be2227916284e4b3495180d9c93d04f095fe9d5a86f22044f5c411d2 object get-range-hash --cid 4H9iChvzYdBg6qntfYUWGWCzsJFBDdo99KegefsD721Q --oid a101d078-b3d4-4325-8fe8-41dce6917097 - # invalid input - # Usage: get-range-hash --cid --oid [--bearer ] [--verify --file ] [--salt ] [: [...]] - - - # Search - @{S_OBJ_PRIV} = Create List ${S_OID_USER} ${S_OID_OTHER} - Search object ${USER_KEY} ${PUBLIC_CID} ${EMPTY} @{S_OBJ_PRIV} - Search object ${OTHER_KEY} ${PUBLIC_CID} ${EMPTY} @{S_OBJ_PRIV} - Search object ${SYSTEM_KEY} ${PUBLIC_CID} ${EMPTY} @{S_OBJ_PRIV} - - - # Head - Head object ${USER_KEY} ${PUBLIC_CID} ${S_OID_USER} ${True} - Head object ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_USER} ${True} - Head object ${SYSTEM_KEY} ${PUBLIC_CID} ${S_OID_USER} ${True} - - Head object ${USER_KEY} ${PUBLIC_CID} ${S_OID_OTHER} ${True} - Head object ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_OTHER} ${True} - Head object ${SYSTEM_KEY} ${PUBLIC_CID} ${S_OID_OTHER} ${True} - - # Delete - Delete object ${USER_KEY} ${PUBLIC_CID} ${S_OID_USER} - Delete object ${OTHER_KEY} ${PUBLIC_CID} ${S_OID_USER} - Run Keyword And Expect Error * - ... Delete object ${SYSTEM_KEY} ${PUBLIC_CID} ${S_OID_USER} - - - - - - - - # Check Read Only container: - - # Put - ${S_OID_USER} = Put object to NeoFS ${USER_KEY} ${FILE_S} ${READONLY_CID} - Run Keyword And Expect Error * - ... Put object to NeoFS ${OTHER_KEY} ${FILE_S} ${READONLY_CID} - Run Keyword And Expect Error * - ... Put object to NeoFS ${SYSTEM_KEY} ${FILE_S} ${READONLY_CID} - - # Get - Get object from NeoFS ${USER_KEY} ${READONLY_CID} ${S_OID_USER} s_file_read - Get object from NeoFS ${OTHER_KEY} ${READONLY_CID} ${S_OID_USER} s_file_read - # By discussion, IR can not make any operations instead of HEAD, SEARCH and GET RANGE HASH at the current moment - Run Keyword And Expect Error * - ... Get object from NeoFS ${SYSTEM_KEY} ${READONLY_CID} ${S_OID_USER} s_file_read - - # Get Range - Get Range ${USER_KEY} ${READONLY_CID} ${S_OID_USER} 0:256 - Get Range ${OTHER_KEY} ${READONLY_CID} ${S_OID_USER} 0:256 - # By discussion, IR can not make any operations instead of HEAD, SEARCH and GET RANGE HASH at the current moment - Run Keyword And Expect Error * - ... Get Range ${SYSTEM_KEY} ${READONLY_CID} ${S_OID_USER} 0:256 - - # TODO: GetRangeHash - # get-range-hash --cid --oid [--bearer ] [--verify --file ] [--salt ] [: [...]] - # neospcc@neospcc:~/GIT/neofs-testcases$ docker exec neofs-cli neofs-cli --host 192.168.123.71:8080 --key 0fa21a94be2227916284e4b3495180d9c93d04f095fe9d5a86f22044f5c411d2 object get-range-hash --cid 4H9iChvzYdBg6qntfYUWGWCzsJFBDdo99KegefsD721Q --oid a101d078-b3d4-4325-8fe8-41dce6917097 - # invalid input - # Usage: get-range-hash --cid --oid [--bearer ] [--verify --file ] [--salt ] [: [...]] - - - # Search - @{S_OBJ_RO} = Create List ${S_OID_USER} - Search object ${USER_KEY} ${READONLY_CID} ${EMPTY} @{S_OBJ_RO} - Search object ${OTHER_KEY} ${READONLY_CID} ${EMPTY} @{S_OBJ_RO} - Search object ${SYSTEM_KEY} ${READONLY_CID} ${EMPTY} @{S_OBJ_RO} - - - # Head - Head object ${USER_KEY} ${READONLY_CID} ${S_OID_USER} ${True} - Head object ${OTHER_KEY} ${READONLY_CID} ${S_OID_USER} ${True} - Head object ${SYSTEM_KEY} ${READONLY_CID} ${S_OID_USER} ${True} - - # Delete - Delete object ${USER_KEY} ${READONLY_CID} ${S_OID_USER} - Run Keyword And Expect Error * - ... Delete object ${OTHER_KEY} ${READONLY_CID} ${S_OID_USER} - Run Keyword And Expect Error * - ... Delete object ${SYSTEM_KEY} ${READONLY_CID} ${S_OID_USER} - - - - - - - - -