From cf748bf7853582b1e58aa0460b8e86893821eaef Mon Sep 17 00:00:00 2001 From: Yulia Kovshova Date: Thu, 13 Oct 2022 19:42:33 +0300 Subject: [PATCH] Fix 'datetime.datetime' is not iterable Signed-off-by: Yulia Kovshova --- pytest_tests/helpers/s3_helper.py | 26 +++++++++++ .../services/s3_gate/test_s3_object.py | 46 ++++--------------- 2 files changed, 35 insertions(+), 37 deletions(-) diff --git a/pytest_tests/helpers/s3_helper.py b/pytest_tests/helpers/s3_helper.py index 5f55a66..21a29bc 100644 --- a/pytest_tests/helpers/s3_helper.py +++ b/pytest_tests/helpers/s3_helper.py @@ -90,3 +90,29 @@ def check_tags_by_bucket( assert_tags( expected_tags=expected_tags, unexpected_tags=unexpected_tags, actual_tags=actual_tags ) + + +def assert_object_lock_mode( + s3_client, + bucket: str, + file_name: str, + object_lock_mode: str, + retain_untile_date, + legal_hold_status: str, +): + object_dict = s3_gate_object.get_object_s3(s3_client, bucket, file_name, full_output=True) + assert ( + object_dict.get("ObjectLockMode") == object_lock_mode + ), f"Expected Object Lock Mode is {object_lock_mode}" + assert ( + object_dict.get("ObjectLockLegalHoldStatus") == legal_hold_status + ), f"Expected Object Lock Legal Hold Status is {legal_hold_status}" + object_retain_date = object_dict.get("ObjectLockRetainUntilDate") + retain_date = ( + object_retain_date + if isinstance(object_retain_date, str) + else object_retain_date.strftime("%Y-%m-%dT%H:%M:%S") + ) + assert str(retain_untile_date.strftime("%Y-%m-%dT%H:%M:%S")) in str( + retain_date + ), f'Expected Object Lock Retain Until Date is {str(retain_untile_date.strftime("%Y-%m-%dT%H:%M:%S"))}' diff --git a/pytest_tests/testsuites/services/s3_gate/test_s3_object.py b/pytest_tests/testsuites/services/s3_gate/test_s3_object.py index 2cc53d0..a217a38 100644 --- a/pytest_tests/testsuites/services/s3_gate/test_s3_object.py +++ b/pytest_tests/testsuites/services/s3_gate/test_s3_object.py @@ -9,7 +9,7 @@ from common import ASSETS_DIR, COMPLEX_OBJ_SIZE, FREE_STORAGE, SIMPLE_OBJ_SIZE from data_formatters import get_wallet_public_key from file_helper import concat_files, generate_file, generate_file_with_content, get_file_hash from python_keywords.payment_neogo import neofs_deposit, transfer_mainnet_gas -from s3_helper import check_objects_in_bucket, set_bucket_versioning +from s3_helper import assert_object_lock_mode, check_objects_in_bucket, set_bucket_versioning from wallet import init_wallet from steps import s3_gate_bucket, s3_gate_object @@ -789,18 +789,9 @@ class TestS3GateObject(TestS3GateBase): ObjectLockRetainUntilDate=date_obj.strftime("%Y-%m-%dT%H:%M:%S"), ObjectLockLegalHoldStatus="OFF", ) - object_4 = s3_gate_object.get_object_s3( - self.s3_client, bucket, file_name, full_output=True + assert_object_lock_mode( + self.s3_client, bucket, file_name, "GOVERNANCE", date_obj, "OFF" ) - assert ( - object_4.get("ObjectLockMode") == "GOVERNANCE" - ), "Expected Object Lock Mode is GOVERNANCE" - assert str(date_obj.strftime("%Y-%m-%dT%H:%M:%S")) in object_4.get( - "ObjectLockRetainUntilDate" - ), f'Expected Object Lock Retain Until Date is {str(date_obj.strftime("%Y-%m-%dT%H:%M:%S"))}' - assert ( - object_4.get("ObjectLockLegalHoldStatus") == "OFF" - ), "Expected Object Lock Legal Hold Status is OFF" with allure.step( "Put new version of object with [--object-lock-mode COMPLIANCE] и [--object-lock-retain-until-date +3days]" @@ -814,18 +805,9 @@ class TestS3GateObject(TestS3GateBase): ObjectLockMode="COMPLIANCE", ObjectLockRetainUntilDate=date_obj, ) - object_4 = s3_gate_object.get_object_s3( - self.s3_client, bucket, file_name, full_output=True + assert_object_lock_mode( + self.s3_client, bucket, file_name, "COMPLIANCE", date_obj, "OFF" ) - assert ( - object_4.get("ObjectLockMode") == "COMPLIANCE" - ), "Expected Object Lock Mode is COMPLIANCE" - assert str(date_obj.strftime("%Y-%m-%dT%H:%M:%S")) in object_4.get( - "ObjectLockRetainUntilDate" - ), f'Expected Object Lock Retain Until Date is {str(date_obj.strftime("%Y-%m-%dT%H:%M:%S"))}' - assert ( - object_4.get("ObjectLockLegalHoldStatus") == "OFF" - ), "Expected Object Lock Legal Hold Status is OFF" with allure.step( "Put new version of object with [--object-lock-mode COMPLIANCE] и [--object-lock-retain-until-date +2days]" @@ -840,18 +822,7 @@ class TestS3GateObject(TestS3GateBase): ObjectLockRetainUntilDate=date_obj, ObjectLockLegalHoldStatus="ON", ) - object_4 = s3_gate_object.get_object_s3( - self.s3_client, bucket, file_name, full_output=True - ) - assert ( - object_4.get("ObjectLockMode") == "COMPLIANCE" - ), "Expected Object Lock Mode is COMPLIANCE" - assert str(date_obj.strftime("%Y-%m-%dT%H:%M:%S")) in object_4.get( - "ObjectLockRetainUntilDate" - ), f'Expected Object Lock Retain Until Date is {str(date_obj.strftime("%Y-%m-%dT%H:%M:%S"))}' - assert ( - object_4.get("ObjectLockLegalHoldStatus") == "ON" - ), "Expected Object Lock Legal Hold Status is ON" + assert_object_lock_mode(self.s3_client, bucket, file_name, "COMPLIANCE", date_obj, "ON") with allure.step("Put object with lock-mode"): with pytest.raises( @@ -893,18 +864,19 @@ class TestS3GateObject(TestS3GateBase): generate_file_with_content(file_path=file_path_2) bucket = s3_gate_bucket.create_bucket_s3(self.s3_client) set_bucket_versioning(self.s3_client, bucket, s3_gate_bucket.VersioningStatus.ENABLED) + # TODO: return ACL, when https://github.com/nspcc-dev/neofs-s3-gw/issues/685 will be closed if sync_type == "sync": self.s3_client.sync( bucket_name=bucket, dir_path=os.path.dirname(file_path_1), - ACL="public-read-write", + # ACL="public-read-write", Metadata=object_metadata, ) elif sync_type == "cp": self.s3_client.cp( bucket_name=bucket, dir_path=os.path.dirname(file_path_1), - ACL="public-read-write", + # ACL="public-read-write", Metadata=object_metadata, )