From c80e9d2118ca5bcdec5285898a532f8e18faa6b6 Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Fri, 20 Jan 2023 17:04:30 -0500 Subject: [PATCH] pytest: replace @nose.with_setup with fixtures Signed-off-by: Casey Bodley --- s3tests/functional/test_headers.py | 59 ++------------------ s3tests/functional/test_s3_website.py | 79 +++++++-------------------- s3tests_boto3/functional/test_s3.py | 24 ++++---- 3 files changed, 37 insertions(+), 125 deletions(-) diff --git a/s3tests/functional/test_headers.py b/s3tests/functional/test_headers.py index c9ba342..ecc90ae 100644 --- a/s3tests/functional/test_headers.py +++ b/s3tests/functional/test_headers.py @@ -147,6 +147,10 @@ def _clear_custom_headers(): _custom_headers = {} _remove_headers = [] +@pytest.fixture(autouse=True) +def clear_custom_headers(setup_teardown): + yield + _clear_custom_headers() # clear headers before teardown() def _add_custom_headers(headers=None, remove=None): """ Define header customizations (additions, replacements, removals) @@ -187,7 +191,6 @@ def tag(*tags): @attr(assertion='fails 411') @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_contentlength_none(): key = _setup_bad_object(remove=('Content-Length',)) @@ -202,7 +205,6 @@ def test_object_create_bad_contentlength_none(): @attr(method='put') @attr(operation='create w/content length too long') @attr(assertion='fails 400') -@nose.with_setup(teardown=_clear_custom_headers) @attr('fails_on_rgw') @pytest.mark.fails_on_rgw def test_object_create_bad_contentlength_mismatch_above(): @@ -229,7 +231,6 @@ def test_object_create_bad_contentlength_mismatch_above(): @attr(assertion='fails 403') @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_authorization_empty(): key = _setup_bad_object({'Authorization': ''}) @@ -245,7 +246,6 @@ def test_object_create_bad_authorization_empty(): @attr(assertion='succeeds') @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_date_and_amz_date(): date = formatdate(usegmt=True) key = _setup_bad_object({'Date': date, 'X-Amz-Date': date}) @@ -258,7 +258,6 @@ def test_object_create_date_and_amz_date(): @attr(assertion='succeeds') @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_amz_date_and_no_date(): date = formatdate(usegmt=True) key = _setup_bad_object({'X-Amz-Date': date}, ('Date',)) @@ -273,7 +272,6 @@ def test_object_create_amz_date_and_no_date(): @attr(assertion='fails 403') @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_authorization_none(): key = _setup_bad_object(remove=('Authorization',)) @@ -290,7 +288,6 @@ def test_object_create_bad_authorization_none(): @attr(assertion='succeeds') @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_contentlength_none(): _add_custom_headers(remove=('Content-Length',)) get_new_bucket() @@ -303,7 +300,6 @@ def test_bucket_create_contentlength_none(): @attr(assertion='succeeds') @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(teardown=_clear_custom_headers) def test_object_acl_create_contentlength_none(): bucket = get_new_bucket() key = bucket.new_key('foo') @@ -331,7 +327,6 @@ def _create_new_connection(): @attr(method='put') @attr(operation='create w/empty content length') @attr(assertion='fails 400') -@nose.with_setup(teardown=_clear_custom_headers) @attr('fails_on_rgw') @pytest.mark.fails_on_rgw def test_bucket_create_bad_contentlength_empty(): @@ -349,7 +344,6 @@ def test_bucket_create_bad_contentlength_empty(): @attr(assertion='succeeds') @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_contentlength_none(): _add_custom_headers(remove=('Content-Length',)) bucket = get_new_bucket() @@ -362,7 +356,6 @@ def test_bucket_create_bad_contentlength_none(): @attr(assertion='fails 403') @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_authorization_empty(): _add_custom_headers({'Authorization': ''}) e = assert_raises(boto.exception.S3ResponseError, get_new_bucket) @@ -379,7 +372,6 @@ def test_bucket_create_bad_authorization_empty(): @attr(assertion='fails 403') @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_authorization_none(): _add_custom_headers(remove=('Authorization',)) e = assert_raises(boto.exception.S3ResponseError, get_new_bucket) @@ -398,7 +390,6 @@ def test_bucket_create_bad_authorization_none(): @attr(assertion='fails 400') @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_contentlength_mismatch_below_aws2(): check_aws2_support() content = 'bar' @@ -417,7 +408,6 @@ def test_object_create_bad_contentlength_mismatch_below_aws2(): @attr(assertion='fails 403') @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_authorization_incorrect_aws2(): check_aws2_support() key = _setup_bad_object({'Authorization': 'AWS AKIAIGR7ZNNBHC5BKSUB:FWeDfwojDSdS2Ztmpfeubhd9isU='}) @@ -428,7 +418,6 @@ def test_object_create_bad_authorization_incorrect_aws2(): @tag('auth_aws2') -@nose.with_setup(teardown=_clear_custom_headers) @attr(resource='object') @attr(method='put') @attr(operation='create w/invalid authorization') @@ -450,7 +439,6 @@ def test_object_create_bad_authorization_invalid_aws2(): @attr(assertion='fails 403') @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_date_none_aws2(): check_aws2_support() key = _setup_bad_object(remove=('Date',)) @@ -465,7 +453,6 @@ def test_object_create_bad_date_none_aws2(): @attr(method='put') @attr(operation='create w/invalid authorization') @attr(assertion='fails 400') -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_authorization_invalid_aws2(): check_aws2_support() _add_custom_headers({'Authorization': 'AWS HAHAHA'}) @@ -481,7 +468,6 @@ def test_bucket_create_bad_authorization_invalid_aws2(): @attr(assertion='fails 403') @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_date_none_aws2(): check_aws2_support() _add_custom_headers(remove=('Date',)) @@ -508,7 +494,6 @@ def check_aws2_support(): @attr(method='put') @attr(operation='create w/invalid MD5') @attr(assertion='fails 400') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_md5_invalid_garbage_aws4(): check_aws4_support() key = _setup_bad_object({'Content-MD5':'AWS4 HAHAHA'}) @@ -524,7 +509,6 @@ def test_object_create_bad_md5_invalid_garbage_aws4(): @attr(method='put') @attr(operation='create w/content length too short') @attr(assertion='fails 400') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_contentlength_mismatch_below_aws4(): check_aws4_support() content = 'bar' @@ -542,7 +526,6 @@ def test_object_create_bad_contentlength_mismatch_below_aws4(): @attr(method='put') @attr(operation='create w/incorrect authorization') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_authorization_incorrect_aws4(): check_aws4_support() key = _setup_bad_object({'Authorization': 'AWS4-HMAC-SHA256 Credential=AKIAIGR7ZNNBHC5BKSUB/20150930/us-east-1/s3/aws4_request,SignedHeaders=host;user-agent,Signature=FWeDfwojDSdS2Ztmpfeubhd9isU='}) @@ -554,7 +537,6 @@ def test_object_create_bad_authorization_incorrect_aws4(): @tag('auth_aws4') -@nose.with_setup(teardown=_clear_custom_headers) @attr(resource='object') @attr(method='put') @attr(operation='create w/invalid authorization') @@ -574,7 +556,6 @@ def test_object_create_bad_authorization_invalid_aws4(): @attr(method='put') @attr(operation='create w/empty user agent') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_ua_empty_aws4(): check_aws4_support() key = _setup_bad_object({'User-Agent': ''}) @@ -590,7 +571,6 @@ def test_object_create_bad_ua_empty_aws4(): @attr(method='put') @attr(operation='create w/no user agent') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_ua_none_aws4(): check_aws4_support() key = _setup_bad_object(remove=('User-Agent',)) @@ -606,7 +586,6 @@ def test_object_create_bad_ua_none_aws4(): @attr(method='put') @attr(operation='create w/invalid date') @attr(assertion='succeeds') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_date_invalid_aws4(): check_aws4_support() key = _setup_bad_object({'Date': 'Bad Date'}) @@ -618,7 +597,6 @@ def test_object_create_bad_date_invalid_aws4(): @attr(method='put') @attr(operation='create w/invalid x-amz-date') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_amz_date_invalid_aws4(): check_aws4_support() key = _setup_bad_object({'X-Amz-Date': 'Bad Date'}) @@ -634,7 +612,6 @@ def test_object_create_bad_amz_date_invalid_aws4(): @attr(method='put') @attr(operation='create w/empty date') @attr(assertion='succeeds') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_date_empty_aws4(): check_aws4_support() key = _setup_bad_object({'Date': ''}) @@ -646,7 +623,6 @@ def test_object_create_bad_date_empty_aws4(): @attr(method='put') @attr(operation='create w/empty x-amz-date') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_amz_date_empty_aws4(): check_aws4_support() key = _setup_bad_object({'X-Amz-Date': ''}) @@ -662,7 +638,6 @@ def test_object_create_bad_amz_date_empty_aws4(): @attr(method='put') @attr(operation='create w/no date') @attr(assertion='succeeds') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_date_none_aws4(): check_aws4_support() key = _setup_bad_object(remove=('Date',)) @@ -674,7 +649,6 @@ def test_object_create_bad_date_none_aws4(): @attr(method='put') @attr(operation='create w/no x-amz-date') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_amz_date_none_aws4(): check_aws4_support() key = _setup_bad_object(remove=('X-Amz-Date',)) @@ -690,7 +664,6 @@ def test_object_create_bad_amz_date_none_aws4(): @attr(method='put') @attr(operation='create w/date in past') @attr(assertion='succeeds') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_date_before_today_aws4(): check_aws4_support() key = _setup_bad_object({'Date': 'Tue, 07 Jul 2010 21:53:04 GMT'}) @@ -702,7 +675,6 @@ def test_object_create_bad_date_before_today_aws4(): @attr(method='put') @attr(operation='create w/x-amz-date in past') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_amz_date_before_today_aws4(): check_aws4_support() key = _setup_bad_object({'X-Amz-Date': '20100707T215304Z'}) @@ -718,7 +690,6 @@ def test_object_create_bad_amz_date_before_today_aws4(): @attr(method='put') @attr(operation='create w/date in future') @attr(assertion='succeeds') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_date_after_today_aws4(): check_aws4_support() key = _setup_bad_object({'Date': 'Tue, 07 Jul 2030 21:53:04 GMT'}) @@ -730,7 +701,6 @@ def test_object_create_bad_date_after_today_aws4(): @attr(method='put') @attr(operation='create w/x-amz-date in future') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_amz_date_after_today_aws4(): check_aws4_support() key = _setup_bad_object({'X-Amz-Date': '20300707T215304Z'}) @@ -746,7 +716,6 @@ def test_object_create_bad_amz_date_after_today_aws4(): @attr(method='put') @attr(operation='create w/date before epoch') @attr(assertion='succeeds') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_date_before_epoch_aws4(): check_aws4_support() key = _setup_bad_object({'Date': 'Tue, 07 Jul 1950 21:53:04 GMT'}) @@ -758,7 +727,6 @@ def test_object_create_bad_date_before_epoch_aws4(): @attr(method='put') @attr(operation='create w/x-amz-date before epoch') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_amz_date_before_epoch_aws4(): check_aws4_support() key = _setup_bad_object({'X-Amz-Date': '19500707T215304Z'}) @@ -774,7 +742,6 @@ def test_object_create_bad_amz_date_before_epoch_aws4(): @attr(method='put') @attr(operation='create w/date after 9999') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_date_after_end_aws4(): check_aws4_support() key = _setup_bad_object({'Date': 'Tue, 07 Jul 9999 21:53:04 GMT'}) @@ -786,7 +753,6 @@ def test_object_create_bad_date_after_end_aws4(): @attr(method='put') @attr(operation='create w/x-amz-date after 9999') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_amz_date_after_end_aws4(): check_aws4_support() key = _setup_bad_object({'X-Amz-Date': '99990707T215304Z'}) @@ -802,7 +768,6 @@ def test_object_create_bad_amz_date_after_end_aws4(): @attr(method='put') @attr(operation='create with missing signed custom header') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_missing_signed_custom_header_aws4(): check_aws4_support() method='PUT' @@ -833,7 +798,6 @@ def test_object_create_missing_signed_custom_header_aws4(): @attr(method='put') @attr(opearation='create with missing signed header') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_object_create_missing_signed_header_aws4(): check_aws4_support() method='PUT' @@ -865,7 +829,6 @@ def test_object_create_missing_signed_header_aws4(): @attr(method='put') @attr(operation='create w/invalid authorization') @attr(assertion='fails 400') -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_authorization_invalid_aws4(): check_aws4_support() _add_custom_headers({'Authorization': 'AWS4 HAHAHA'}) @@ -881,7 +844,6 @@ def test_bucket_create_bad_authorization_invalid_aws4(): @attr(method='put') @attr(operation='create w/empty user agent') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_ua_empty_aws4(): check_aws4_support() _add_custom_headers({'User-Agent': ''}) @@ -896,7 +858,6 @@ def test_bucket_create_bad_ua_empty_aws4(): @attr(method='put') @attr(operation='create w/no user agent') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_ua_none_aws4(): check_aws4_support() _add_custom_headers(remove=('User-Agent',)) @@ -912,7 +873,6 @@ def test_bucket_create_bad_ua_none_aws4(): @attr(method='put') @attr(operation='create w/invalid date') @attr(assertion='succeeds') -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_date_invalid_aws4(): check_aws4_support() _add_custom_headers({'Date': 'Bad Date'}) @@ -924,7 +884,6 @@ def test_bucket_create_bad_date_invalid_aws4(): @attr(method='put') @attr(operation='create w/invalid x-amz-date') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_amz_date_invalid_aws4(): check_aws4_support() _add_custom_headers({'X-Amz-Date': 'Bad Date'}) @@ -940,7 +899,6 @@ def test_bucket_create_bad_amz_date_invalid_aws4(): @attr(method='put') @attr(operation='create w/empty date') @attr(assertion='succeeds') -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_date_empty_aws4(): check_aws4_support() _add_custom_headers({'Date': ''}) @@ -952,7 +910,6 @@ def test_bucket_create_bad_date_empty_aws4(): @attr(method='put') @attr(operation='create w/empty x-amz-date') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_amz_date_empty_aws4(): check_aws4_support() _add_custom_headers({'X-Amz-Date': ''}) @@ -967,7 +924,6 @@ def test_bucket_create_bad_amz_date_empty_aws4(): @attr(method='put') @attr(operation='create w/no date') @attr(assertion='succeeds') -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_date_none_aws4(): check_aws4_support() _add_custom_headers(remove=('Date',)) @@ -979,7 +935,6 @@ def test_bucket_create_bad_date_none_aws4(): @attr(method='put') @attr(operation='create w/no x-amz-date') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_amz_date_none_aws4(): check_aws4_support() _add_custom_headers(remove=('X-Amz-Date',)) @@ -995,7 +950,6 @@ def test_bucket_create_bad_amz_date_none_aws4(): @attr(method='put') @attr(operation='create w/date in past') @attr(assertion='succeeds') -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_date_before_today_aws4(): check_aws4_support() _add_custom_headers({'Date': 'Tue, 07 Jul 2010 21:53:04 GMT'}) @@ -1007,7 +961,6 @@ def test_bucket_create_bad_date_before_today_aws4(): @attr(method='put') @attr(operation='create w/x-amz-date in past') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_amz_date_before_today_aws4(): check_aws4_support() _add_custom_headers({'X-Amz-Date': '20100707T215304Z'}) @@ -1023,7 +976,6 @@ def test_bucket_create_bad_amz_date_before_today_aws4(): @attr(method='put') @attr(operation='create w/date in future') @attr(assertion='succeeds') -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_date_after_today_aws4(): check_aws4_support() _add_custom_headers({'Date': 'Tue, 07 Jul 2030 21:53:04 GMT'}) @@ -1035,7 +987,6 @@ def test_bucket_create_bad_date_after_today_aws4(): @attr(method='put') @attr(operation='create w/x-amz-date in future') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_amz_date_after_today_aws4(): check_aws4_support() _add_custom_headers({'X-Amz-Date': '20300707T215304Z'}) @@ -1051,7 +1002,6 @@ def test_bucket_create_bad_amz_date_after_today_aws4(): @attr(method='put') @attr(operation='create w/date before epoch') @attr(assertion='succeeds') -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_date_before_epoch_aws4(): check_aws4_support() _add_custom_headers({'Date': 'Tue, 07 Jul 1950 21:53:04 GMT'}) @@ -1063,7 +1013,6 @@ def test_bucket_create_bad_date_before_epoch_aws4(): @attr(method='put') @attr(operation='create w/x-amz-date before epoch') @attr(assertion='fails 403') -@nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_amz_date_before_epoch_aws4(): check_aws4_support() _add_custom_headers({'X-Amz-Date': '19500707T215304Z'}) diff --git a/s3tests/functional/test_s3_website.py b/s3tests/functional/test_s3_website.py index 79646c0..7d5cd99 100644 --- a/s3tests/functional/test_s3_website.py +++ b/s3tests/functional/test_s3_website.py @@ -46,37 +46,27 @@ ERRORDOC_TEMPLATE = '

ErrorDoc

{random}' CAN_WEBSITE = None +@pytest.fixture(autouse=True, scope="module") def check_can_test_website(): - global CAN_WEBSITE - # This is a bit expensive, so we cache this - if CAN_WEBSITE is None: - bucket = get_new_bucket() - try: - wsconf = bucket.get_website_configuration() - CAN_WEBSITE = True - except boto.exception.S3ResponseError as e: - if e.status == 404 and e.reason == 'Not Found' and e.error_code in ['NoSuchWebsiteConfiguration', 'NoSuchKey']: - CAN_WEBSITE = True - elif e.status == 405 and e.reason == 'Method Not Allowed' and e.error_code == 'MethodNotAllowed': - # rgw_enable_static_website is false - CAN_WEBSITE = False - elif e.status == 403 and e.reason == 'SignatureDoesNotMatch' and e.error_code == 'Forbidden': - # This is older versions that do not support the website code - CAN_WEBSITE = False - elif e.status == 501 and e.error_code == 'NotImplemented': - CAN_WEBSITE = False - else: - raise RuntimeError("Unknown response in checking if WebsiteConf is supported", e) - finally: - bucket.delete() - - if CAN_WEBSITE is True: + bucket = get_new_bucket() + try: + wsconf = bucket.get_website_configuration() return True - elif CAN_WEBSITE is False: - raise SkipTest - else: - raise RuntimeError("Unknown cached response in checking if WebsiteConf is supported") - + except boto.exception.S3ResponseError as e: + if e.status == 404 and e.reason == 'Not Found' and e.error_code in ['NoSuchWebsiteConfiguration', 'NoSuchKey']: + return True + elif e.status == 405 and e.reason == 'Method Not Allowed' and e.error_code == 'MethodNotAllowed': + # rgw_enable_static_website is false + raise SkipTest + elif e.status == 403 and e.reason == 'SignatureDoesNotMatch' and e.error_code == 'Forbidden': + # This is older versions that do not support the website code + raise SkipTest + elif e.status == 501 and e.error_code == 'NotImplemented': + raise SkipTest + else: + raise RuntimeError("Unknown response in checking if WebsiteConf is supported", e) + finally: + bucket.delete() def make_website_config(xml_fragment): """ @@ -257,7 +247,6 @@ def _website_request(bucket_name, path, connect_hostname=None, method='GET', tim @pytest.mark.s3website @attr('fails_on_rgw') @pytest.mark.fails_on_rgw -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_nonexistant_bucket_s3(): bucket_name = get_new_bucket_name() res = _website_request(bucket_name, '') @@ -274,7 +263,6 @@ def test_website_nonexistant_bucket_s3(): @pytest.mark.fails_on_s3 @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_nonexistant_bucket_rgw(): bucket_name = get_new_bucket_name() res = _website_request(bucket_name, '') @@ -290,7 +278,6 @@ def test_website_nonexistant_bucket_rgw(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) @timed(10) def test_website_public_bucket_list_public_index(): bucket = get_new_bucket() @@ -321,7 +308,6 @@ def test_website_public_bucket_list_public_index(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_private_bucket_list_public_index(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc']) @@ -354,7 +340,6 @@ def test_website_private_bucket_list_public_index(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_private_bucket_list_empty(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc']) @@ -373,7 +358,6 @@ def test_website_private_bucket_list_empty(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_public_bucket_list_empty(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc']) @@ -391,7 +375,6 @@ def test_website_public_bucket_list_empty(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_public_bucket_list_private_index(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc']) @@ -419,7 +402,6 @@ def test_website_public_bucket_list_private_index(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_private_bucket_list_private_index(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc']) @@ -448,7 +430,6 @@ def test_website_private_bucket_list_private_index(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_private_bucket_list_empty_missingerrordoc(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) @@ -467,7 +448,6 @@ def test_website_private_bucket_list_empty_missingerrordoc(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_public_bucket_list_empty_missingerrordoc(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) @@ -485,7 +465,6 @@ def test_website_public_bucket_list_empty_missingerrordoc(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_public_bucket_list_private_index_missingerrordoc(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) @@ -512,7 +491,6 @@ def test_website_public_bucket_list_private_index_missingerrordoc(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_private_bucket_list_private_index_missingerrordoc(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) @@ -540,7 +518,6 @@ def test_website_private_bucket_list_private_index_missingerrordoc(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_private_bucket_list_empty_blockederrordoc(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) @@ -571,7 +548,6 @@ def test_website_private_bucket_list_empty_blockederrordoc(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_public_bucket_list_pubilc_errordoc(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) @@ -625,7 +601,6 @@ def test_website_public_bucket_list_pubilc_errordoc(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_public_bucket_list_empty_blockederrordoc(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) @@ -655,7 +630,6 @@ def test_website_public_bucket_list_empty_blockederrordoc(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_public_bucket_list_private_index_blockederrordoc(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) @@ -691,7 +665,6 @@ def test_website_public_bucket_list_private_index_blockederrordoc(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_private_bucket_list_private_index_blockederrordoc(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) @@ -726,7 +699,6 @@ def test_website_private_bucket_list_private_index_blockederrordoc(): @attr(assertion='empty private buckets via s3website return a 403 for /, good errordoc') @attr('s3website') @pytest.mark.s3website -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore def test_website_private_bucket_list_empty_gooderrordoc(): @@ -754,7 +726,6 @@ def test_website_private_bucket_list_empty_gooderrordoc(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_public_bucket_list_empty_gooderrordoc(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) @@ -781,7 +752,6 @@ def test_website_public_bucket_list_empty_gooderrordoc(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_public_bucket_list_private_index_gooderrordoc(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) @@ -813,7 +783,6 @@ def test_website_public_bucket_list_private_index_gooderrordoc(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_private_bucket_list_private_index_gooderrordoc(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) @@ -846,7 +815,6 @@ def test_website_private_bucket_list_private_index_gooderrordoc(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_bucket_private_redirectall_base(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['RedirectAll']) @@ -866,7 +834,6 @@ def test_website_bucket_private_redirectall_base(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_bucket_private_redirectall_path(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['RedirectAll']) @@ -888,7 +855,6 @@ def test_website_bucket_private_redirectall_path(): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_bucket_private_redirectall_path_upgrade(): bucket = get_new_bucket() x = string.Template(WEBSITE_CONFIGS_XMLFRAG['RedirectAll+Protocol']).safe_substitute(RedirectAllRequestsTo_Protocol='https') @@ -914,7 +880,6 @@ def test_website_bucket_private_redirectall_path_upgrade(): @pytest.mark.s3website_redirect_location @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_xredirect_nonwebsite(): bucket = get_new_bucket() #f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['RedirectAll']) @@ -950,7 +915,6 @@ def test_website_xredirect_nonwebsite(): @pytest.mark.s3website_redirect_location @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_xredirect_public_relative(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc']) @@ -981,7 +945,6 @@ def test_website_xredirect_public_relative(): @pytest.mark.s3website_redirect_location @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_xredirect_public_abs(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc']) @@ -1012,7 +975,6 @@ def test_website_xredirect_public_abs(): @pytest.mark.s3website_redirect_location @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_xredirect_private_relative(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc']) @@ -1043,7 +1005,6 @@ def test_website_xredirect_private_relative(): @pytest.mark.s3website_redirect_location @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_xredirect_private_abs(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc']) @@ -1268,7 +1229,6 @@ def routing_teardown(**kwargs): print('Deleting', str(o)) o.delete() -@common.with_setup_kwargs(setup=routing_setup, teardown=routing_teardown) #@timed(10) def routing_check(*args, **kwargs): bucket = kwargs['bucket'] @@ -1310,7 +1270,6 @@ def routing_check(*args, **kwargs): @pytest.mark.s3website @attr('fails_on_dbstore') @pytest.mark.fails_on_dbstore -@nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_routing_generator(): for t in ROUTING_RULES_TESTS: if 'xml' in t and 'RoutingRules' in t['xml'] and len(t['xml']['RoutingRules']) > 0: diff --git a/s3tests_boto3/functional/test_s3.py b/s3tests_boto3/functional/test_s3.py index ce96155..665528a 100644 --- a/s3tests_boto3/functional/test_s3.py +++ b/s3tests_boto3/functional/test_s3.py @@ -6235,30 +6235,34 @@ def test_list_buckets_bad_auth(): eq(status, 403) eq(error_code, 'SignatureDoesNotMatch') +@pytest.fixture +def override_prefix_a(): + nuke_prefixed_buckets(prefix='a'+get_prefix()) + yield + nuke_prefixed_buckets(prefix='a'+get_prefix()) + @attr(resource='bucket') @attr(method='put') @attr(operation='create bucket') @attr(assertion='name starts with alphabetic works') # this test goes outside the user-configure prefix because it needs to # control the initial character of the bucket name -@nose.with_setup( - setup=lambda: nuke_prefixed_buckets(prefix='a'+get_prefix()), - teardown=lambda: nuke_prefixed_buckets(prefix='a'+get_prefix()), - ) -def test_bucket_create_naming_good_starts_alpha(): +def test_bucket_create_naming_good_starts_alpha(override_prefix_a): check_good_bucket_name('foo', _prefix='a'+get_prefix()) +@pytest.fixture +def override_prefix_0(): + nuke_prefixed_buckets(prefix='0'+get_prefix()) + yield + nuke_prefixed_buckets(prefix='0'+get_prefix()) + @attr(resource='bucket') @attr(method='put') @attr(operation='create bucket') @attr(assertion='name starts with numeric works') # this test goes outside the user-configure prefix because it needs to # control the initial character of the bucket name -@nose.with_setup( - setup=lambda: nuke_prefixed_buckets(prefix='0'+get_prefix()), - teardown=lambda: nuke_prefixed_buckets(prefix='0'+get_prefix()), - ) -def test_bucket_create_naming_good_starts_digit(): +def test_bucket_create_naming_good_starts_digit(override_prefix_0): check_good_bucket_name('foo', _prefix='0'+get_prefix()) @attr(resource='bucket')