import os import allure import pytest from python_keywords.container import list_containers from steps import s3_gate_bucket from steps.aws_cli_client import AwsCliClient class TestS3GateBase: s3_client = None @pytest.fixture(scope='class', autouse=True) @allure.title('[Class/Autouse]: Create S3 client') def s3_client(self, prepare_wallet_and_deposit, request): wallet = prepare_wallet_and_deposit s3_bearer_rules_file = f"{os.getcwd()}/robot/resources/files/s3_bearer_rules.json" cid, bucket, access_key_id, secret_access_key, owner_private_key = \ s3_gate_bucket.init_s3_credentials( wallet, s3_bearer_rules_file=s3_bearer_rules_file) containers_list = list_containers(wallet) assert cid in containers_list, f'Expected cid {cid} in {containers_list}' if request.param == 'aws cli': try: client = AwsCliClient(access_key_id, secret_access_key) except Exception as err: if 'command was not found or was not executable' in str(err): pytest.skip('AWS CLI was not found') else: raise RuntimeError( 'Error on creating instance for AwsCliClient') from err else: client = s3_gate_bucket.config_s3_client( access_key_id, secret_access_key) TestS3GateBase.s3_client = client TestS3GateBase.wallet = wallet