pytest: replace @nose.with_setup with fixtures

Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit c80e9d2118)
This commit is contained in:
Casey Bodley 2023-01-20 17:04:30 -05:00 committed by Ali Maredia
parent b6dcf111fa
commit e8d56603a3
3 changed files with 37 additions and 125 deletions

View file

@ -147,6 +147,10 @@ def _clear_custom_headers():
_custom_headers = {} _custom_headers = {}
_remove_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): def _add_custom_headers(headers=None, remove=None):
""" Define header customizations (additions, replacements, removals) """ Define header customizations (additions, replacements, removals)
@ -187,7 +191,6 @@ def tag(*tags):
@attr(assertion='fails 411') @attr(assertion='fails 411')
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.fails_on_dbstore @pytest.mark.fails_on_dbstore
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_contentlength_none(): def test_object_create_bad_contentlength_none():
key = _setup_bad_object(remove=('Content-Length',)) key = _setup_bad_object(remove=('Content-Length',))
@ -202,7 +205,6 @@ def test_object_create_bad_contentlength_none():
@attr(method='put') @attr(method='put')
@attr(operation='create w/content length too long') @attr(operation='create w/content length too long')
@attr(assertion='fails 400') @attr(assertion='fails 400')
@nose.with_setup(teardown=_clear_custom_headers)
@attr('fails_on_rgw') @attr('fails_on_rgw')
@pytest.mark.fails_on_rgw @pytest.mark.fails_on_rgw
def test_object_create_bad_contentlength_mismatch_above(): 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(assertion='fails 403')
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.fails_on_dbstore @pytest.mark.fails_on_dbstore
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_authorization_empty(): def test_object_create_bad_authorization_empty():
key = _setup_bad_object({'Authorization': ''}) key = _setup_bad_object({'Authorization': ''})
@ -245,7 +246,6 @@ def test_object_create_bad_authorization_empty():
@attr(assertion='succeeds') @attr(assertion='succeeds')
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.fails_on_dbstore @pytest.mark.fails_on_dbstore
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_date_and_amz_date(): def test_object_create_date_and_amz_date():
date = formatdate(usegmt=True) date = formatdate(usegmt=True)
key = _setup_bad_object({'Date': date, 'X-Amz-Date': date}) 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(assertion='succeeds')
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.fails_on_dbstore @pytest.mark.fails_on_dbstore
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_amz_date_and_no_date(): def test_object_create_amz_date_and_no_date():
date = formatdate(usegmt=True) date = formatdate(usegmt=True)
key = _setup_bad_object({'X-Amz-Date': date}, ('Date',)) 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(assertion='fails 403')
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.fails_on_dbstore @pytest.mark.fails_on_dbstore
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_authorization_none(): def test_object_create_bad_authorization_none():
key = _setup_bad_object(remove=('Authorization',)) key = _setup_bad_object(remove=('Authorization',))
@ -290,7 +288,6 @@ def test_object_create_bad_authorization_none():
@attr(assertion='succeeds') @attr(assertion='succeeds')
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.fails_on_dbstore @pytest.mark.fails_on_dbstore
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_contentlength_none(): def test_bucket_create_contentlength_none():
_add_custom_headers(remove=('Content-Length',)) _add_custom_headers(remove=('Content-Length',))
get_new_bucket() get_new_bucket()
@ -303,7 +300,6 @@ def test_bucket_create_contentlength_none():
@attr(assertion='succeeds') @attr(assertion='succeeds')
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.fails_on_dbstore @pytest.mark.fails_on_dbstore
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_acl_create_contentlength_none(): def test_object_acl_create_contentlength_none():
bucket = get_new_bucket() bucket = get_new_bucket()
key = bucket.new_key('foo') key = bucket.new_key('foo')
@ -331,7 +327,6 @@ def _create_new_connection():
@attr(method='put') @attr(method='put')
@attr(operation='create w/empty content length') @attr(operation='create w/empty content length')
@attr(assertion='fails 400') @attr(assertion='fails 400')
@nose.with_setup(teardown=_clear_custom_headers)
@attr('fails_on_rgw') @attr('fails_on_rgw')
@pytest.mark.fails_on_rgw @pytest.mark.fails_on_rgw
def test_bucket_create_bad_contentlength_empty(): def test_bucket_create_bad_contentlength_empty():
@ -349,7 +344,6 @@ def test_bucket_create_bad_contentlength_empty():
@attr(assertion='succeeds') @attr(assertion='succeeds')
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.fails_on_dbstore @pytest.mark.fails_on_dbstore
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_contentlength_none(): def test_bucket_create_bad_contentlength_none():
_add_custom_headers(remove=('Content-Length',)) _add_custom_headers(remove=('Content-Length',))
bucket = get_new_bucket() bucket = get_new_bucket()
@ -362,7 +356,6 @@ def test_bucket_create_bad_contentlength_none():
@attr(assertion='fails 403') @attr(assertion='fails 403')
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.fails_on_dbstore @pytest.mark.fails_on_dbstore
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_authorization_empty(): def test_bucket_create_bad_authorization_empty():
_add_custom_headers({'Authorization': ''}) _add_custom_headers({'Authorization': ''})
e = assert_raises(boto.exception.S3ResponseError, get_new_bucket) 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(assertion='fails 403')
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.fails_on_dbstore @pytest.mark.fails_on_dbstore
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_authorization_none(): def test_bucket_create_bad_authorization_none():
_add_custom_headers(remove=('Authorization',)) _add_custom_headers(remove=('Authorization',))
e = assert_raises(boto.exception.S3ResponseError, get_new_bucket) 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(assertion='fails 400')
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.fails_on_dbstore @pytest.mark.fails_on_dbstore
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_contentlength_mismatch_below_aws2(): def test_object_create_bad_contentlength_mismatch_below_aws2():
check_aws2_support() check_aws2_support()
content = 'bar' content = 'bar'
@ -417,7 +408,6 @@ def test_object_create_bad_contentlength_mismatch_below_aws2():
@attr(assertion='fails 403') @attr(assertion='fails 403')
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.fails_on_dbstore @pytest.mark.fails_on_dbstore
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_authorization_incorrect_aws2(): def test_object_create_bad_authorization_incorrect_aws2():
check_aws2_support() check_aws2_support()
key = _setup_bad_object({'Authorization': 'AWS AKIAIGR7ZNNBHC5BKSUB:FWeDfwojDSdS2Ztmpfeubhd9isU='}) key = _setup_bad_object({'Authorization': 'AWS AKIAIGR7ZNNBHC5BKSUB:FWeDfwojDSdS2Ztmpfeubhd9isU='})
@ -428,7 +418,6 @@ def test_object_create_bad_authorization_incorrect_aws2():
@tag('auth_aws2') @tag('auth_aws2')
@nose.with_setup(teardown=_clear_custom_headers)
@attr(resource='object') @attr(resource='object')
@attr(method='put') @attr(method='put')
@attr(operation='create w/invalid authorization') @attr(operation='create w/invalid authorization')
@ -450,7 +439,6 @@ def test_object_create_bad_authorization_invalid_aws2():
@attr(assertion='fails 403') @attr(assertion='fails 403')
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.fails_on_dbstore @pytest.mark.fails_on_dbstore
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_date_none_aws2(): def test_object_create_bad_date_none_aws2():
check_aws2_support() check_aws2_support()
key = _setup_bad_object(remove=('Date',)) key = _setup_bad_object(remove=('Date',))
@ -465,7 +453,6 @@ def test_object_create_bad_date_none_aws2():
@attr(method='put') @attr(method='put')
@attr(operation='create w/invalid authorization') @attr(operation='create w/invalid authorization')
@attr(assertion='fails 400') @attr(assertion='fails 400')
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_authorization_invalid_aws2(): def test_bucket_create_bad_authorization_invalid_aws2():
check_aws2_support() check_aws2_support()
_add_custom_headers({'Authorization': 'AWS HAHAHA'}) _add_custom_headers({'Authorization': 'AWS HAHAHA'})
@ -481,7 +468,6 @@ def test_bucket_create_bad_authorization_invalid_aws2():
@attr(assertion='fails 403') @attr(assertion='fails 403')
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.fails_on_dbstore @pytest.mark.fails_on_dbstore
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_date_none_aws2(): def test_bucket_create_bad_date_none_aws2():
check_aws2_support() check_aws2_support()
_add_custom_headers(remove=('Date',)) _add_custom_headers(remove=('Date',))
@ -508,7 +494,6 @@ def check_aws2_support():
@attr(method='put') @attr(method='put')
@attr(operation='create w/invalid MD5') @attr(operation='create w/invalid MD5')
@attr(assertion='fails 400') @attr(assertion='fails 400')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_md5_invalid_garbage_aws4(): def test_object_create_bad_md5_invalid_garbage_aws4():
check_aws4_support() check_aws4_support()
key = _setup_bad_object({'Content-MD5':'AWS4 HAHAHA'}) 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(method='put')
@attr(operation='create w/content length too short') @attr(operation='create w/content length too short')
@attr(assertion='fails 400') @attr(assertion='fails 400')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_contentlength_mismatch_below_aws4(): def test_object_create_bad_contentlength_mismatch_below_aws4():
check_aws4_support() check_aws4_support()
content = 'bar' content = 'bar'
@ -542,7 +526,6 @@ def test_object_create_bad_contentlength_mismatch_below_aws4():
@attr(method='put') @attr(method='put')
@attr(operation='create w/incorrect authorization') @attr(operation='create w/incorrect authorization')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_authorization_incorrect_aws4(): def test_object_create_bad_authorization_incorrect_aws4():
check_aws4_support() 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='}) 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') @tag('auth_aws4')
@nose.with_setup(teardown=_clear_custom_headers)
@attr(resource='object') @attr(resource='object')
@attr(method='put') @attr(method='put')
@attr(operation='create w/invalid authorization') @attr(operation='create w/invalid authorization')
@ -574,7 +556,6 @@ def test_object_create_bad_authorization_invalid_aws4():
@attr(method='put') @attr(method='put')
@attr(operation='create w/empty user agent') @attr(operation='create w/empty user agent')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_ua_empty_aws4(): def test_object_create_bad_ua_empty_aws4():
check_aws4_support() check_aws4_support()
key = _setup_bad_object({'User-Agent': ''}) key = _setup_bad_object({'User-Agent': ''})
@ -590,7 +571,6 @@ def test_object_create_bad_ua_empty_aws4():
@attr(method='put') @attr(method='put')
@attr(operation='create w/no user agent') @attr(operation='create w/no user agent')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_ua_none_aws4(): def test_object_create_bad_ua_none_aws4():
check_aws4_support() check_aws4_support()
key = _setup_bad_object(remove=('User-Agent',)) key = _setup_bad_object(remove=('User-Agent',))
@ -606,7 +586,6 @@ def test_object_create_bad_ua_none_aws4():
@attr(method='put') @attr(method='put')
@attr(operation='create w/invalid date') @attr(operation='create w/invalid date')
@attr(assertion='succeeds') @attr(assertion='succeeds')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_date_invalid_aws4(): def test_object_create_bad_date_invalid_aws4():
check_aws4_support() check_aws4_support()
key = _setup_bad_object({'Date': 'Bad Date'}) key = _setup_bad_object({'Date': 'Bad Date'})
@ -618,7 +597,6 @@ def test_object_create_bad_date_invalid_aws4():
@attr(method='put') @attr(method='put')
@attr(operation='create w/invalid x-amz-date') @attr(operation='create w/invalid x-amz-date')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_amz_date_invalid_aws4(): def test_object_create_bad_amz_date_invalid_aws4():
check_aws4_support() check_aws4_support()
key = _setup_bad_object({'X-Amz-Date': 'Bad Date'}) 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(method='put')
@attr(operation='create w/empty date') @attr(operation='create w/empty date')
@attr(assertion='succeeds') @attr(assertion='succeeds')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_date_empty_aws4(): def test_object_create_bad_date_empty_aws4():
check_aws4_support() check_aws4_support()
key = _setup_bad_object({'Date': ''}) key = _setup_bad_object({'Date': ''})
@ -646,7 +623,6 @@ def test_object_create_bad_date_empty_aws4():
@attr(method='put') @attr(method='put')
@attr(operation='create w/empty x-amz-date') @attr(operation='create w/empty x-amz-date')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_amz_date_empty_aws4(): def test_object_create_bad_amz_date_empty_aws4():
check_aws4_support() check_aws4_support()
key = _setup_bad_object({'X-Amz-Date': ''}) key = _setup_bad_object({'X-Amz-Date': ''})
@ -662,7 +638,6 @@ def test_object_create_bad_amz_date_empty_aws4():
@attr(method='put') @attr(method='put')
@attr(operation='create w/no date') @attr(operation='create w/no date')
@attr(assertion='succeeds') @attr(assertion='succeeds')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_date_none_aws4(): def test_object_create_bad_date_none_aws4():
check_aws4_support() check_aws4_support()
key = _setup_bad_object(remove=('Date',)) key = _setup_bad_object(remove=('Date',))
@ -674,7 +649,6 @@ def test_object_create_bad_date_none_aws4():
@attr(method='put') @attr(method='put')
@attr(operation='create w/no x-amz-date') @attr(operation='create w/no x-amz-date')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_amz_date_none_aws4(): def test_object_create_bad_amz_date_none_aws4():
check_aws4_support() check_aws4_support()
key = _setup_bad_object(remove=('X-Amz-Date',)) 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(method='put')
@attr(operation='create w/date in past') @attr(operation='create w/date in past')
@attr(assertion='succeeds') @attr(assertion='succeeds')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_date_before_today_aws4(): def test_object_create_bad_date_before_today_aws4():
check_aws4_support() check_aws4_support()
key = _setup_bad_object({'Date': 'Tue, 07 Jul 2010 21:53:04 GMT'}) 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(method='put')
@attr(operation='create w/x-amz-date in past') @attr(operation='create w/x-amz-date in past')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_amz_date_before_today_aws4(): def test_object_create_bad_amz_date_before_today_aws4():
check_aws4_support() check_aws4_support()
key = _setup_bad_object({'X-Amz-Date': '20100707T215304Z'}) 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(method='put')
@attr(operation='create w/date in future') @attr(operation='create w/date in future')
@attr(assertion='succeeds') @attr(assertion='succeeds')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_date_after_today_aws4(): def test_object_create_bad_date_after_today_aws4():
check_aws4_support() check_aws4_support()
key = _setup_bad_object({'Date': 'Tue, 07 Jul 2030 21:53:04 GMT'}) 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(method='put')
@attr(operation='create w/x-amz-date in future') @attr(operation='create w/x-amz-date in future')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_amz_date_after_today_aws4(): def test_object_create_bad_amz_date_after_today_aws4():
check_aws4_support() check_aws4_support()
key = _setup_bad_object({'X-Amz-Date': '20300707T215304Z'}) 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(method='put')
@attr(operation='create w/date before epoch') @attr(operation='create w/date before epoch')
@attr(assertion='succeeds') @attr(assertion='succeeds')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_date_before_epoch_aws4(): def test_object_create_bad_date_before_epoch_aws4():
check_aws4_support() check_aws4_support()
key = _setup_bad_object({'Date': 'Tue, 07 Jul 1950 21:53:04 GMT'}) 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(method='put')
@attr(operation='create w/x-amz-date before epoch') @attr(operation='create w/x-amz-date before epoch')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_amz_date_before_epoch_aws4(): def test_object_create_bad_amz_date_before_epoch_aws4():
check_aws4_support() check_aws4_support()
key = _setup_bad_object({'X-Amz-Date': '19500707T215304Z'}) 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(method='put')
@attr(operation='create w/date after 9999') @attr(operation='create w/date after 9999')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_date_after_end_aws4(): def test_object_create_bad_date_after_end_aws4():
check_aws4_support() check_aws4_support()
key = _setup_bad_object({'Date': 'Tue, 07 Jul 9999 21:53:04 GMT'}) 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(method='put')
@attr(operation='create w/x-amz-date after 9999') @attr(operation='create w/x-amz-date after 9999')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_bad_amz_date_after_end_aws4(): def test_object_create_bad_amz_date_after_end_aws4():
check_aws4_support() check_aws4_support()
key = _setup_bad_object({'X-Amz-Date': '99990707T215304Z'}) 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(method='put')
@attr(operation='create with missing signed custom header') @attr(operation='create with missing signed custom header')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_missing_signed_custom_header_aws4(): def test_object_create_missing_signed_custom_header_aws4():
check_aws4_support() check_aws4_support()
method='PUT' method='PUT'
@ -833,7 +798,6 @@ def test_object_create_missing_signed_custom_header_aws4():
@attr(method='put') @attr(method='put')
@attr(opearation='create with missing signed header') @attr(opearation='create with missing signed header')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_object_create_missing_signed_header_aws4(): def test_object_create_missing_signed_header_aws4():
check_aws4_support() check_aws4_support()
method='PUT' method='PUT'
@ -865,7 +829,6 @@ def test_object_create_missing_signed_header_aws4():
@attr(method='put') @attr(method='put')
@attr(operation='create w/invalid authorization') @attr(operation='create w/invalid authorization')
@attr(assertion='fails 400') @attr(assertion='fails 400')
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_authorization_invalid_aws4(): def test_bucket_create_bad_authorization_invalid_aws4():
check_aws4_support() check_aws4_support()
_add_custom_headers({'Authorization': 'AWS4 HAHAHA'}) _add_custom_headers({'Authorization': 'AWS4 HAHAHA'})
@ -881,7 +844,6 @@ def test_bucket_create_bad_authorization_invalid_aws4():
@attr(method='put') @attr(method='put')
@attr(operation='create w/empty user agent') @attr(operation='create w/empty user agent')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_ua_empty_aws4(): def test_bucket_create_bad_ua_empty_aws4():
check_aws4_support() check_aws4_support()
_add_custom_headers({'User-Agent': ''}) _add_custom_headers({'User-Agent': ''})
@ -896,7 +858,6 @@ def test_bucket_create_bad_ua_empty_aws4():
@attr(method='put') @attr(method='put')
@attr(operation='create w/no user agent') @attr(operation='create w/no user agent')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_ua_none_aws4(): def test_bucket_create_bad_ua_none_aws4():
check_aws4_support() check_aws4_support()
_add_custom_headers(remove=('User-Agent',)) _add_custom_headers(remove=('User-Agent',))
@ -912,7 +873,6 @@ def test_bucket_create_bad_ua_none_aws4():
@attr(method='put') @attr(method='put')
@attr(operation='create w/invalid date') @attr(operation='create w/invalid date')
@attr(assertion='succeeds') @attr(assertion='succeeds')
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_date_invalid_aws4(): def test_bucket_create_bad_date_invalid_aws4():
check_aws4_support() check_aws4_support()
_add_custom_headers({'Date': 'Bad Date'}) _add_custom_headers({'Date': 'Bad Date'})
@ -924,7 +884,6 @@ def test_bucket_create_bad_date_invalid_aws4():
@attr(method='put') @attr(method='put')
@attr(operation='create w/invalid x-amz-date') @attr(operation='create w/invalid x-amz-date')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_amz_date_invalid_aws4(): def test_bucket_create_bad_amz_date_invalid_aws4():
check_aws4_support() check_aws4_support()
_add_custom_headers({'X-Amz-Date': 'Bad Date'}) _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(method='put')
@attr(operation='create w/empty date') @attr(operation='create w/empty date')
@attr(assertion='succeeds') @attr(assertion='succeeds')
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_date_empty_aws4(): def test_bucket_create_bad_date_empty_aws4():
check_aws4_support() check_aws4_support()
_add_custom_headers({'Date': ''}) _add_custom_headers({'Date': ''})
@ -952,7 +910,6 @@ def test_bucket_create_bad_date_empty_aws4():
@attr(method='put') @attr(method='put')
@attr(operation='create w/empty x-amz-date') @attr(operation='create w/empty x-amz-date')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_amz_date_empty_aws4(): def test_bucket_create_bad_amz_date_empty_aws4():
check_aws4_support() check_aws4_support()
_add_custom_headers({'X-Amz-Date': ''}) _add_custom_headers({'X-Amz-Date': ''})
@ -967,7 +924,6 @@ def test_bucket_create_bad_amz_date_empty_aws4():
@attr(method='put') @attr(method='put')
@attr(operation='create w/no date') @attr(operation='create w/no date')
@attr(assertion='succeeds') @attr(assertion='succeeds')
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_date_none_aws4(): def test_bucket_create_bad_date_none_aws4():
check_aws4_support() check_aws4_support()
_add_custom_headers(remove=('Date',)) _add_custom_headers(remove=('Date',))
@ -979,7 +935,6 @@ def test_bucket_create_bad_date_none_aws4():
@attr(method='put') @attr(method='put')
@attr(operation='create w/no x-amz-date') @attr(operation='create w/no x-amz-date')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_amz_date_none_aws4(): def test_bucket_create_bad_amz_date_none_aws4():
check_aws4_support() check_aws4_support()
_add_custom_headers(remove=('X-Amz-Date',)) _add_custom_headers(remove=('X-Amz-Date',))
@ -995,7 +950,6 @@ def test_bucket_create_bad_amz_date_none_aws4():
@attr(method='put') @attr(method='put')
@attr(operation='create w/date in past') @attr(operation='create w/date in past')
@attr(assertion='succeeds') @attr(assertion='succeeds')
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_date_before_today_aws4(): def test_bucket_create_bad_date_before_today_aws4():
check_aws4_support() check_aws4_support()
_add_custom_headers({'Date': 'Tue, 07 Jul 2010 21:53:04 GMT'}) _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(method='put')
@attr(operation='create w/x-amz-date in past') @attr(operation='create w/x-amz-date in past')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_amz_date_before_today_aws4(): def test_bucket_create_bad_amz_date_before_today_aws4():
check_aws4_support() check_aws4_support()
_add_custom_headers({'X-Amz-Date': '20100707T215304Z'}) _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(method='put')
@attr(operation='create w/date in future') @attr(operation='create w/date in future')
@attr(assertion='succeeds') @attr(assertion='succeeds')
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_date_after_today_aws4(): def test_bucket_create_bad_date_after_today_aws4():
check_aws4_support() check_aws4_support()
_add_custom_headers({'Date': 'Tue, 07 Jul 2030 21:53:04 GMT'}) _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(method='put')
@attr(operation='create w/x-amz-date in future') @attr(operation='create w/x-amz-date in future')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_amz_date_after_today_aws4(): def test_bucket_create_bad_amz_date_after_today_aws4():
check_aws4_support() check_aws4_support()
_add_custom_headers({'X-Amz-Date': '20300707T215304Z'}) _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(method='put')
@attr(operation='create w/date before epoch') @attr(operation='create w/date before epoch')
@attr(assertion='succeeds') @attr(assertion='succeeds')
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_date_before_epoch_aws4(): def test_bucket_create_bad_date_before_epoch_aws4():
check_aws4_support() check_aws4_support()
_add_custom_headers({'Date': 'Tue, 07 Jul 1950 21:53:04 GMT'}) _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(method='put')
@attr(operation='create w/x-amz-date before epoch') @attr(operation='create w/x-amz-date before epoch')
@attr(assertion='fails 403') @attr(assertion='fails 403')
@nose.with_setup(teardown=_clear_custom_headers)
def test_bucket_create_bad_amz_date_before_epoch_aws4(): def test_bucket_create_bad_amz_date_before_epoch_aws4():
check_aws4_support() check_aws4_support()
_add_custom_headers({'X-Amz-Date': '19500707T215304Z'}) _add_custom_headers({'X-Amz-Date': '19500707T215304Z'})

View file

@ -46,38 +46,28 @@ ERRORDOC_TEMPLATE = '<html><h1>ErrorDoc</h1><body>{random}</body></html>'
CAN_WEBSITE = None CAN_WEBSITE = None
@pytest.fixture(autouse=True, scope="module")
def check_can_test_website(): 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() bucket = get_new_bucket()
try: try:
wsconf = bucket.get_website_configuration() wsconf = bucket.get_website_configuration()
CAN_WEBSITE = True return True
except boto.exception.S3ResponseError as e: except boto.exception.S3ResponseError as e:
if e.status == 404 and e.reason == 'Not Found' and e.error_code in ['NoSuchWebsiteConfiguration', 'NoSuchKey']: if e.status == 404 and e.reason == 'Not Found' and e.error_code in ['NoSuchWebsiteConfiguration', 'NoSuchKey']:
CAN_WEBSITE = True return True
elif e.status == 405 and e.reason == 'Method Not Allowed' and e.error_code == 'MethodNotAllowed': elif e.status == 405 and e.reason == 'Method Not Allowed' and e.error_code == 'MethodNotAllowed':
# rgw_enable_static_website is false # rgw_enable_static_website is false
CAN_WEBSITE = False raise SkipTest
elif e.status == 403 and e.reason == 'SignatureDoesNotMatch' and e.error_code == 'Forbidden': elif e.status == 403 and e.reason == 'SignatureDoesNotMatch' and e.error_code == 'Forbidden':
# This is older versions that do not support the website code # This is older versions that do not support the website code
CAN_WEBSITE = False raise SkipTest
elif e.status == 501 and e.error_code == 'NotImplemented': elif e.status == 501 and e.error_code == 'NotImplemented':
CAN_WEBSITE = False raise SkipTest
else: else:
raise RuntimeError("Unknown response in checking if WebsiteConf is supported", e) raise RuntimeError("Unknown response in checking if WebsiteConf is supported", e)
finally: finally:
bucket.delete() bucket.delete()
if CAN_WEBSITE is True:
return True
elif CAN_WEBSITE is False:
raise SkipTest
else:
raise RuntimeError("Unknown cached response in checking if WebsiteConf is supported")
def make_website_config(xml_fragment): def make_website_config(xml_fragment):
""" """
Take the tedious stuff out of the config Take the tedious stuff out of the config
@ -257,7 +247,6 @@ def _website_request(bucket_name, path, connect_hostname=None, method='GET', tim
@pytest.mark.s3website @pytest.mark.s3website
@attr('fails_on_rgw') @attr('fails_on_rgw')
@pytest.mark.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(): def test_website_nonexistant_bucket_s3():
bucket_name = get_new_bucket_name() bucket_name = get_new_bucket_name()
res = _website_request(bucket_name, '') res = _website_request(bucket_name, '')
@ -274,7 +263,6 @@ def test_website_nonexistant_bucket_s3():
@pytest.mark.fails_on_s3 @pytest.mark.fails_on_s3
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_nonexistant_bucket_rgw():
bucket_name = get_new_bucket_name() bucket_name = get_new_bucket_name()
res = _website_request(bucket_name, '') res = _website_request(bucket_name, '')
@ -290,7 +278,6 @@ def test_website_nonexistant_bucket_rgw():
@pytest.mark.s3website @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.fails_on_dbstore @pytest.mark.fails_on_dbstore
@nose.with_setup(setup=check_can_test_website, teardown=common.teardown)
@timed(10) @timed(10)
def test_website_public_bucket_list_public_index(): def test_website_public_bucket_list_public_index():
bucket = get_new_bucket() bucket = get_new_bucket()
@ -321,7 +308,6 @@ def test_website_public_bucket_list_public_index():
@pytest.mark.s3website @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_private_bucket_list_public_index():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc']) f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc'])
@ -354,7 +340,6 @@ def test_website_private_bucket_list_public_index():
@pytest.mark.s3website @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_private_bucket_list_empty():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc']) f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc'])
@ -373,7 +358,6 @@ def test_website_private_bucket_list_empty():
@pytest.mark.s3website @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_public_bucket_list_empty():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc']) f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc'])
@ -391,7 +375,6 @@ def test_website_public_bucket_list_empty():
@pytest.mark.s3website @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_public_bucket_list_private_index():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc']) f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc'])
@ -419,7 +402,6 @@ def test_website_public_bucket_list_private_index():
@pytest.mark.s3website @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_private_bucket_list_private_index():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc']) f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc'])
@ -448,7 +430,6 @@ def test_website_private_bucket_list_private_index():
@pytest.mark.s3website @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_private_bucket_list_empty_missingerrordoc():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc'])
@ -467,7 +448,6 @@ def test_website_private_bucket_list_empty_missingerrordoc():
@pytest.mark.s3website @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_public_bucket_list_empty_missingerrordoc():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc'])
@ -485,7 +465,6 @@ def test_website_public_bucket_list_empty_missingerrordoc():
@pytest.mark.s3website @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_public_bucket_list_private_index_missingerrordoc():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) 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 @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_private_bucket_list_private_index_missingerrordoc():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) 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 @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_private_bucket_list_empty_blockederrordoc():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc'])
@ -571,7 +548,6 @@ def test_website_private_bucket_list_empty_blockederrordoc():
@pytest.mark.s3website @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_public_bucket_list_pubilc_errordoc():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc'])
@ -625,7 +601,6 @@ def test_website_public_bucket_list_pubilc_errordoc():
@pytest.mark.s3website @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_public_bucket_list_empty_blockederrordoc():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc'])
@ -655,7 +630,6 @@ def test_website_public_bucket_list_empty_blockederrordoc():
@pytest.mark.s3website @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_public_bucket_list_private_index_blockederrordoc():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) 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 @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_private_bucket_list_private_index_blockederrordoc():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) 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(assertion='empty private buckets via s3website return a 403 for /, good errordoc')
@attr('s3website') @attr('s3website')
@pytest.mark.s3website @pytest.mark.s3website
@nose.with_setup(setup=check_can_test_website, teardown=common.teardown)
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.fails_on_dbstore @pytest.mark.fails_on_dbstore
def test_website_private_bucket_list_empty_gooderrordoc(): def test_website_private_bucket_list_empty_gooderrordoc():
@ -754,7 +726,6 @@ def test_website_private_bucket_list_empty_gooderrordoc():
@pytest.mark.s3website @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_public_bucket_list_empty_gooderrordoc():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc'])
@ -781,7 +752,6 @@ def test_website_public_bucket_list_empty_gooderrordoc():
@pytest.mark.s3website @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_public_bucket_list_private_index_gooderrordoc():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) 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 @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_private_bucket_list_private_index_gooderrordoc():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) 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 @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_bucket_private_redirectall_base():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['RedirectAll']) f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['RedirectAll'])
@ -866,7 +834,6 @@ def test_website_bucket_private_redirectall_base():
@pytest.mark.s3website @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_bucket_private_redirectall_path():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['RedirectAll']) f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['RedirectAll'])
@ -888,7 +855,6 @@ def test_website_bucket_private_redirectall_path():
@pytest.mark.s3website @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_bucket_private_redirectall_path_upgrade():
bucket = get_new_bucket() bucket = get_new_bucket()
x = string.Template(WEBSITE_CONFIGS_XMLFRAG['RedirectAll+Protocol']).safe_substitute(RedirectAllRequestsTo_Protocol='https') 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 @pytest.mark.s3website_redirect_location
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.fails_on_dbstore @pytest.mark.fails_on_dbstore
@nose.with_setup(setup=check_can_test_website, teardown=common.teardown)
def test_website_xredirect_nonwebsite(): def test_website_xredirect_nonwebsite():
bucket = get_new_bucket() bucket = get_new_bucket()
#f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['RedirectAll']) #f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['RedirectAll'])
@ -950,7 +915,6 @@ def test_website_xredirect_nonwebsite():
@pytest.mark.s3website_redirect_location @pytest.mark.s3website_redirect_location
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_xredirect_public_relative():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc']) f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc'])
@ -981,7 +945,6 @@ def test_website_xredirect_public_relative():
@pytest.mark.s3website_redirect_location @pytest.mark.s3website_redirect_location
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_xredirect_public_abs():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc']) f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc'])
@ -1012,7 +975,6 @@ def test_website_xredirect_public_abs():
@pytest.mark.s3website_redirect_location @pytest.mark.s3website_redirect_location
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_xredirect_private_relative():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc']) f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc'])
@ -1043,7 +1005,6 @@ def test_website_xredirect_private_relative():
@pytest.mark.s3website_redirect_location @pytest.mark.s3website_redirect_location
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.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(): def test_website_xredirect_private_abs():
bucket = get_new_bucket() bucket = get_new_bucket()
f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc']) f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDoc'])
@ -1268,7 +1229,6 @@ def routing_teardown(**kwargs):
print('Deleting', str(o)) print('Deleting', str(o))
o.delete() o.delete()
@common.with_setup_kwargs(setup=routing_setup, teardown=routing_teardown)
#@timed(10) #@timed(10)
def routing_check(*args, **kwargs): def routing_check(*args, **kwargs):
bucket = kwargs['bucket'] bucket = kwargs['bucket']
@ -1310,7 +1270,6 @@ def routing_check(*args, **kwargs):
@pytest.mark.s3website @pytest.mark.s3website
@attr('fails_on_dbstore') @attr('fails_on_dbstore')
@pytest.mark.fails_on_dbstore @pytest.mark.fails_on_dbstore
@nose.with_setup(setup=check_can_test_website, teardown=common.teardown)
def test_routing_generator(): def test_routing_generator():
for t in ROUTING_RULES_TESTS: for t in ROUTING_RULES_TESTS:
if 'xml' in t and 'RoutingRules' in t['xml'] and len(t['xml']['RoutingRules']) > 0: if 'xml' in t and 'RoutingRules' in t['xml'] and len(t['xml']['RoutingRules']) > 0:

View file

@ -6235,30 +6235,34 @@ def test_list_buckets_bad_auth():
eq(status, 403) eq(status, 403)
eq(error_code, 'SignatureDoesNotMatch') 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(resource='bucket')
@attr(method='put') @attr(method='put')
@attr(operation='create bucket') @attr(operation='create bucket')
@attr(assertion='name starts with alphabetic works') @attr(assertion='name starts with alphabetic works')
# this test goes outside the user-configure prefix because it needs to # this test goes outside the user-configure prefix because it needs to
# control the initial character of the bucket name # control the initial character of the bucket name
@nose.with_setup( def test_bucket_create_naming_good_starts_alpha(override_prefix_a):
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():
check_good_bucket_name('foo', _prefix='a'+get_prefix()) 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(resource='bucket')
@attr(method='put') @attr(method='put')
@attr(operation='create bucket') @attr(operation='create bucket')
@attr(assertion='name starts with numeric works') @attr(assertion='name starts with numeric works')
# this test goes outside the user-configure prefix because it needs to # this test goes outside the user-configure prefix because it needs to
# control the initial character of the bucket name # control the initial character of the bucket name
@nose.with_setup( def test_bucket_create_naming_good_starts_digit(override_prefix_0):
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():
check_good_bucket_name('foo', _prefix='0'+get_prefix()) check_good_bucket_name('foo', _prefix='0'+get_prefix())
@attr(resource='bucket') @attr(resource='bucket')