diff --git a/s3tests/functional/test_headers.py b/s3tests/functional/test_headers.py index 3bf107cfc..f877d9326 100644 --- a/s3tests/functional/test_headers.py +++ b/s3tests/functional/test_headers.py @@ -218,6 +218,7 @@ def test_object_create_bad_md5_empty(): eq(e.error_code, 'InvalidDigest') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='create w/non-graphics in MD5') @@ -244,6 +245,7 @@ def test_object_create_bad_md5_none(): # strangely, amazon doesn't report an error with a non-expect 100 also, our # error comes back as html, and not xml as I normally expect +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='create w/Expect 200') @@ -257,6 +259,7 @@ def test_object_create_bad_expect_mismatch(): # this is a really long test, and I don't know if it's valid... # again, accepts this with no troubles +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='create w/empty expect') @@ -284,6 +287,7 @@ def test_object_create_bad_expect_none(): @attr(assertion='garbage, but S3 succeeds!') @nose.with_setup(teardown=_clear_custom_headers) @attr('fails_on_rgw') +@attr('fails_on_s3proxy') def test_object_create_bad_expect_unreadable(): key = _setup_bad_object({'Expect': '\x07'}) key.set_contents_from_string('bar') @@ -295,6 +299,7 @@ def test_object_create_bad_expect_unreadable(): @attr(assertion='fails 400') @nose.with_setup(teardown=_clear_custom_headers) @attr('fails_on_rgw') +@attr('fails_on_s3proxy') def test_object_create_bad_contentlength_empty(): key = _setup_bad_object({'Content-Length': ''}) @@ -331,6 +336,7 @@ def test_object_create_bad_contentlength_none(): eq(e.reason, 'Length Required') eq(e.error_code,'MissingContentLength') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='create w/non-graphic content length') @@ -422,6 +428,7 @@ def test_object_create_bad_contenttype_none(): @attr(assertion='fails 403') @nose.with_setup(teardown=_clear_custom_headers) @attr('fails_on_rgw') +@attr('fails_on_s3proxy') def test_object_create_bad_contenttype_unreadable(): key = _setup_bad_object({'Content-Type': '\x08'}) @@ -441,6 +448,7 @@ def test_object_create_bad_ua_empty(): key.set_contents_from_string('bar') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='create w/non-graphic user agent') @@ -482,6 +490,7 @@ def test_object_create_bad_authorization_invalid(): @attr(assertion='fails 403') @nose.with_setup(teardown=_clear_custom_headers) @attr('fails_on_rgw') +@attr('fails_on_s3proxy') def test_object_create_bad_authorization_unreadable(): key = _setup_bad_object({'Authorization': '\x07'}) @@ -562,6 +571,7 @@ def test_object_create_bad_date_empty(): eq(e.error_code, 'AccessDenied') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='create w/non-graphic date') @@ -655,6 +665,7 @@ def test_bucket_create_contentlength_none(): _add_custom_headers(remove=('Content-Length',)) get_new_bucket() +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='acls') @attr(operation='set w/no content length') @@ -668,6 +679,7 @@ def test_object_acl_create_contentlength_none(): _add_custom_headers(remove=('Content-Length',)) key.set_acl('public-read') +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='acls') @attr(operation='set w/invalid permission') @@ -684,6 +696,7 @@ def test_bucket_put_bad_canned_acl(): # strangely, amazon doesn't report an error with a non-expect 100 also, our # error comes back as html, and not xml as I normally expect +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='put') @attr(operation='create w/expect 200') @@ -697,6 +710,7 @@ def test_bucket_create_bad_expect_mismatch(): # this is a really long test, and I don't know if it's valid... # again, accepts this with no troubles +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='put') @attr(operation='create w/expect empty') @@ -706,6 +720,7 @@ def test_bucket_create_bad_expect_empty(): _add_custom_headers({'Expect': ''}) bucket = get_new_bucket() +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='put') @attr(operation='create w/expect nongraphic') @@ -738,6 +753,7 @@ def _create_new_connection(): @attr(assertion='fails 400') @nose.with_setup(teardown=_clear_custom_headers) @attr('fails_on_rgw') +@attr('fails_on_s3proxy') def test_bucket_create_bad_contentlength_empty(): _add_custom_headers({'Content-Length': ''}) e = assert_raises(boto.exception.S3ResponseError, get_new_bucket) @@ -769,6 +785,7 @@ def test_bucket_create_bad_contentlength_none(): bucket = get_new_bucket() +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='put') @attr(operation='create w/non-graphic content length') @@ -794,6 +811,7 @@ def test_bucket_create_bad_ua_empty(): bucket = get_new_bucket() +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='put') @attr(operation='create w/non-graphic user agent') @@ -835,6 +853,7 @@ def test_bucket_create_bad_authorization_invalid(): @attr(assertion='fails 403') @nose.with_setup(teardown=_clear_custom_headers) @attr('fails_on_rgw') +@attr('fails_on_s3proxy') def test_bucket_create_bad_authorization_unreadable(): _add_custom_headers({'Authorization': '\x07'}) e = assert_raises(boto.exception.S3ResponseError, get_new_bucket) @@ -900,6 +919,7 @@ def test_bucket_create_bad_date_empty(): eq(e.error_code, 'AccessDenied') +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='put') @attr(operation='create w/non-graphic date') diff --git a/s3tests/functional/test_s3.py b/s3tests/functional/test_s3.py index 5af84e97e..16178ed84 100644 --- a/s3tests/functional/test_s3.py +++ b/s3tests/functional/test_s3.py @@ -234,6 +234,7 @@ def test_bucket_list_delimiter_prefix(): marker = validate_bucket_list(bucket, prefix, delim, '', 2, False, ['boo/bar'], ['boo/baz/'], None) +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='get') @attr(operation='list') @@ -255,6 +256,7 @@ def test_bucket_list_delimiter_alt(): eq(prefix_names, ['ba', 'ca']) +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='get') @attr(operation='list') @@ -341,6 +343,7 @@ def test_bucket_list_prefix_basic(): # just testing that we can do the delimeter and prefix logic on non-slashes +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='get') @attr(operation='list under prefix') @@ -406,6 +409,7 @@ def test_bucket_list_prefix_not_exist(): eq(prefixes, []) +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='get') @attr(operation='list under prefix') @@ -441,6 +445,7 @@ def test_bucket_list_prefix_delimiter_basic(): eq(prefix_names, ['foo/baz/']) +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='get') @attr(operation='list under prefix w/delimiter') @@ -564,6 +569,7 @@ def test_bucket_list_maxkeys_invalid(): @attr('fails_on_rgw') +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='get') @attr(operation='list all keys') @@ -607,6 +613,7 @@ def test_bucket_list_marker_empty(): eq(names, key_names) +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='get') @attr(operation='list all keys') @@ -850,6 +857,7 @@ def test_object_create_special_characters(): # While the test itself passes, there's a SAX parser error during teardown. It # seems to be a boto bug. It happens with both amazon and dho. # http://code.google.com/p/boto/issues/detail?id=501 +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='write to non-printing key') @@ -994,6 +1002,7 @@ def test_object_set_get_unicode_metadata(): @attr(operation='metadata write/re-write') @attr(assertion='non-UTF-8 values detected, but preserved') @attr('fails_strict_rfc2616') +@attr('fails_on_s3proxy') def test_object_set_get_non_utf8_metadata(): bucket = get_new_bucket() key = boto.s3.key.Key(bucket) @@ -1021,6 +1030,7 @@ def _set_get_metadata_unreadable(metadata, bucket=None): @attr(method='put') @attr(operation='metadata write') @attr(assertion='non-priting prefixes noted and preserved') +@attr('fails_on_s3proxy') @attr('fails_strict_rfc2616') def test_object_set_get_metadata_empty_to_unreadable_prefix(): metadata = '\x04w' @@ -1032,6 +1042,7 @@ def test_object_set_get_metadata_empty_to_unreadable_prefix(): @attr(method='put') @attr(operation='metadata write') @attr(assertion='non-priting suffixes noted and preserved') +@attr('fails_on_s3proxy') @attr('fails_strict_rfc2616') def test_object_set_get_metadata_empty_to_unreadable_suffix(): metadata = 'h\x04' @@ -1039,6 +1050,7 @@ def test_object_set_get_metadata_empty_to_unreadable_suffix(): eq(got, [(metadata, 'utf-8')]) +@attr('fails_on_s3proxy') @attr(resource='object.metadata') @attr(method='put') @attr(operation='metadata write') @@ -1049,6 +1061,7 @@ def test_object_set_get_metadata_empty_to_unreadable_infix(): eq(got, [(metadata, 'utf-8')]) +@attr('fails_on_s3proxy') @attr(resource='object.metadata') @attr(method='put') @attr(operation='metadata re-write') @@ -1063,6 +1076,7 @@ def test_object_set_get_metadata_overwrite_to_unreadable_prefix(): eq(got2, [(metadata2, 'utf-8')]) +@attr('fails_on_s3proxy') @attr(resource='object.metadata') @attr(method='put') @attr(operation='metadata re-write') @@ -1077,6 +1091,7 @@ def test_object_set_get_metadata_overwrite_to_unreadable_suffix(): eq(got2, [(metadata2, 'utf-8')]) +@attr('fails_on_s3proxy') @attr(resource='object.metadata') @attr(method='put') @attr(operation='metadata re-write') @@ -1134,6 +1149,7 @@ def _get_post_url(conn, bucket): host=conn.host, port=conn.port, bucket=bucket.name) return url +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='anonymous browser based upload via POST request') @@ -1153,6 +1169,7 @@ def test_post_object_anonymous_request(): eq(got, 'bar') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1194,6 +1211,7 @@ def test_post_object_authenticated_request(): @attr(method='post') @attr(operation='authenticated browser based upload via POST request, bad access key') @attr(assertion='fails') +@attr('fails_on_s3proxy') def test_post_object_authenticated_request_bad_access_key(): bucket = get_new_bucket() bucket.set_acl('public-read-write') @@ -1226,6 +1244,7 @@ def test_post_object_authenticated_request_bad_access_key(): eq(r.status_code, 403) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='anonymous browser based upload via POST request') @@ -1245,6 +1264,7 @@ def test_post_object_set_success_code(): eq(message.text,'foo.txt') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='anonymous browser based upload via POST request') @@ -1263,6 +1283,7 @@ def test_post_object_set_invalid_success_code(): eq(r.content,'') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1303,6 +1324,7 @@ def test_post_object_upload_larger_than_chunk(): eq(got, foo_string) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1341,6 +1363,7 @@ def test_post_object_set_key_from_filename(): eq(got, 'bar') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1376,6 +1399,7 @@ def test_post_object_ignored_header(): eq(r.status_code, 204) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1411,6 +1435,7 @@ def test_post_object_case_insensitive_condition_fields(): eq(r.status_code, 204) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1449,6 +1474,7 @@ def test_post_object_escaped_field_values(): eq(got, 'bar') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1493,6 +1519,7 @@ def test_post_object_success_redirect_action(): key = key.name, etag = key.etag.strip('"'))) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1528,6 +1555,7 @@ def test_post_object_invalid_signature(): eq(r.status_code, 403) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1563,6 +1591,7 @@ def test_post_object_invalid_access_key(): eq(r.status_code, 403) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1598,6 +1627,7 @@ def test_post_object_invalid_date_format(): eq(r.status_code, 400) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1632,6 +1662,7 @@ def test_post_object_no_key_specified(): eq(r.status_code, 400) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1667,6 +1698,7 @@ def test_post_object_missing_signature(): eq(r.status_code, 400) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1701,6 +1733,7 @@ def test_post_object_missing_policy_condition(): eq(r.status_code, 403) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1739,6 +1772,7 @@ def test_post_object_user_specified_header(): eq(key.get_metadata('foo'), 'barclamp') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1775,6 +1809,7 @@ def test_post_object_request_missing_policy_specified_field(): eq(r.status_code, 403) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1810,6 +1845,7 @@ def test_post_object_condition_is_case_sensitive(): eq(r.status_code, 400) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1845,6 +1881,7 @@ def test_post_object_expires_is_case_sensitive(): eq(r.status_code, 400) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1880,6 +1917,7 @@ def test_post_object_expired_policy(): eq(r.status_code, 403) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1916,6 +1954,7 @@ def test_post_object_invalid_request_field_value(): eq(r.status_code, 403) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1951,6 +1990,7 @@ def test_post_object_missing_expires_condition(): eq(r.status_code, 400) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -1979,6 +2019,7 @@ def test_post_object_missing_conditions_list(): eq(r.status_code, 400) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -2014,6 +2055,7 @@ def test_post_object_upload_size_limit_exceeded(): eq(r.status_code, 400) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -2049,6 +2091,7 @@ def test_post_object_missing_content_length_argument(): eq(r.status_code, 400) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -2084,6 +2127,7 @@ def test_post_object_invalid_content_length_argument(): eq(r.status_code, 400) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='post') @attr(operation='authenticated browser based upload via POST request') @@ -2119,6 +2163,7 @@ def test_post_object_upload_size_below_minimum(): eq(r.status_code, 400) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='data re-write w/ If-Match: the latest ETag') @@ -2136,6 +2181,7 @@ def test_put_object_ifmatch_good(): eq(got_new_data, 'zar') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='data re-write w/ If-Match: outdated ETag') @@ -2158,6 +2204,7 @@ def test_put_object_ifmatch_failed(): eq(got_old_data, 'bar') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='overwrite existing object w/ If-Match: *') @@ -2175,6 +2222,7 @@ def test_put_object_ifmatch_overwrite_existed_good(): eq(got_new_data, 'zar') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='overwrite non-existing object w/ If-Match: *') @@ -2193,6 +2241,7 @@ def test_put_object_ifmatch_nonexisted_failed(): eq(e.reason, 'Not Found') eq(e.error_code, 'NoSuchKey') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='overwrite existing object w/ If-None-Match: outdated ETag') @@ -2210,6 +2259,7 @@ def test_put_object_ifnonmatch_good(): eq(got_new_data, 'zar') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='overwrite existing object w/ If-None-Match: the latest ETag') @@ -2231,6 +2281,7 @@ def test_put_object_ifnonmatch_failed(): got_old_data = key.get_contents_as_string() eq(got_old_data, 'bar') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='overwrite non-existing object w/ If-None-Match: *') @@ -2244,6 +2295,7 @@ def test_put_object_ifnonmatch_nonexisted_good(): eq(got_data, 'bar') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='overwrite existing object w/ If-None-Match: *') @@ -2343,6 +2395,7 @@ def _make_bucket_request(method, bucket, body=None, authenticated=False, expires return res +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='get') @attr(operation='publically readable bucket') @@ -2354,6 +2407,7 @@ def test_object_raw_get(): eq(res.reason, 'OK') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='get') @attr(operation='deleted object and bucket') @@ -2382,6 +2436,7 @@ def test_object_delete_key_bucket_gone(): eq(e.reason, 'Not Found') eq(e.error_code, 'NoSuchBucket') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='get') @attr(operation='deleted object') @@ -2446,6 +2501,7 @@ def test_bucket_head_extended(): assert result.get('x-rgw-bytes-used', 9) > 0 +@attr('fails_on_s3proxy') @attr(resource='bucket.acl') @attr(method='get') @attr(operation='unauthenticated on private bucket') @@ -2458,6 +2514,7 @@ def test_object_raw_get_bucket_acl(): eq(res.reason, 'OK') +@attr('fails_on_s3proxy') @attr(resource='object.acl') @attr(method='get') @attr(operation='unauthenticated on private object') @@ -2470,6 +2527,7 @@ def test_object_raw_get_object_acl(): eq(res.reason, 'Forbidden') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='ACLs') @attr(operation='authenticated on public bucket/object') @@ -2482,6 +2540,7 @@ def test_object_raw_authenticated(): eq(res.reason, 'OK') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='get') @attr(operation='authenticated on private bucket/private object with modified response headers') @@ -2511,6 +2570,7 @@ def test_object_raw_response_headers(): eq(res.getheader('cache-control'), 'no-cache') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='ACLs') @attr(operation='authenticated on private bucket/public object') @@ -2523,6 +2583,7 @@ def test_object_raw_authenticated_bucket_acl(): eq(res.reason, 'OK') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='ACLs') @attr(operation='authenticated on public bucket/private object') @@ -2535,6 +2596,7 @@ def test_object_raw_authenticated_object_acl(): eq(res.reason, 'OK') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='get') @attr(operation='authenticated on deleted object and bucket') @@ -2549,6 +2611,7 @@ def test_object_raw_authenticated_bucket_gone(): eq(res.reason, 'Not Found') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='get') @attr(operation='authenticated on deleted object') @@ -2562,6 +2625,7 @@ def test_object_raw_authenticated_object_gone(): eq(res.reason, 'Not Found') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='unauthenticated, no object acls') @@ -2575,6 +2639,7 @@ def test_object_raw_put(): eq(res.reason, 'Forbidden') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='unauthenticated, publically writable object') @@ -2589,6 +2654,7 @@ def test_object_raw_put_write_access(): eq(res.reason, 'OK') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='authenticated, no object acls') @@ -2602,6 +2668,7 @@ def test_object_raw_put_authenticated(): eq(res.reason, 'OK') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='authenticated, no object acls') @@ -2629,6 +2696,7 @@ def check_bad_bucket_name(name): # AWS does not enforce all documented bucket restrictions. # http://docs.amazonwebservices.com/AmazonS3/2006-03-01/dev/index.html?BucketRestrictions.html @attr('fails_on_aws') +@attr('fails_on_s3proxy') # Breaks DNS with SubdomainCallingFormat @attr('fails_with_subdomain') @attr(resource='bucket') @@ -2795,6 +2863,7 @@ def test_bucket_list_long_name(): # AWS does not enforce all documented bucket restrictions. # http://docs.amazonwebservices.com/AmazonS3/2006-03-01/dev/index.html?BucketRestrictions.html @attr('fails_on_aws') +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='put') @attr(operation='create w/ip address for name') @@ -2901,6 +2970,7 @@ def test_bucket_get_location(): eq(actual_location, expected_location) +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='put') @attr(operation='re-create by non-owner') @@ -2915,6 +2985,7 @@ def test_bucket_create_exists_nonowner(): eq(e.error_code, 'BucketAlreadyExists') +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='del') @attr(operation='delete by non-owner') @@ -2924,6 +2995,7 @@ def test_bucket_delete_nonowner(): check_access_denied(s3.alt.delete_bucket, bucket.name) +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='get') @attr(operation='default acl') @@ -2950,6 +3022,7 @@ def test_bucket_acl_default(): ) +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='get') @attr(operation='public-read acl') @@ -2981,6 +3054,7 @@ def test_bucket_acl_canned_during_create(): ], ) +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='put') @attr(operation='acl: public-read,private') @@ -3032,6 +3106,7 @@ def test_bucket_acl_canned(): ) +@attr('fails_on_s3proxy') @attr(resource='bucket.acls') @attr(method='put') @attr(operation='acl: public-read-write') @@ -3072,6 +3147,7 @@ def test_bucket_acl_canned_publicreadwrite(): ) +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='put') @attr(operation='acl: authenticated-read') @@ -3104,6 +3180,7 @@ def test_bucket_acl_canned_authenticatedread(): ) +@attr('fails_on_s3proxy') @attr(resource='object.acls') @attr(method='get') @attr(operation='default acl') @@ -3129,6 +3206,7 @@ def test_object_acl_default(): ) +@attr('fails_on_s3proxy') @attr(resource='object.acls') @attr(method='put') @attr(operation='acl public-read,private') @@ -3182,6 +3260,7 @@ def test_object_acl_canned(): ) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='acl public-read-write') @@ -3224,6 +3303,7 @@ def test_object_acl_canned_publicreadwrite(): ) +@attr('fails_on_s3proxy') @attr(resource='object.acls') @attr(method='put') @attr(operation='acl authenticated-read') @@ -3258,6 +3338,7 @@ def test_object_acl_canned_authenticatedread(): ) +@attr('fails_on_s3proxy') @attr(resource='object.acls') @attr(method='put') @attr(operation='acl bucket-owner-read') @@ -3302,6 +3383,7 @@ def test_object_acl_canned_bucketownerread(): bucket.delete() +@attr('fails_on_s3proxy') @attr(resource='object.acls') @attr(method='put') @attr(operation='acl bucket-owner-read') @@ -3345,6 +3427,7 @@ def test_object_acl_canned_bucketownerfullcontrol(): key.delete() bucket.delete() +@attr('fails_on_s3proxy') @attr(resource='object.acls') @attr(method='put') @attr(operation='set write-acp') @@ -3366,6 +3449,7 @@ def test_object_acl_full_control_verify_owner(): eq(policy.owner.id, config.main.user_id) +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='ACLs') @attr(operation='set acl private') @@ -3411,6 +3495,7 @@ def _build_bucket_acl_xml(permission, bucket=None): ) +@attr('fails_on_s3proxy') @attr(resource='bucket.acls') @attr(method='ACLs') @attr(operation='set acl FULL_CONTROL (xml)') @@ -3419,6 +3504,7 @@ def test_bucket_acl_xml_fullcontrol(): _build_bucket_acl_xml('FULL_CONTROL') +@attr('fails_on_s3proxy') @attr(resource='bucket.acls') @attr(method='ACLs') @attr(operation='set acl WRITE (xml)') @@ -3427,6 +3513,7 @@ def test_bucket_acl_xml_write(): _build_bucket_acl_xml('WRITE') +@attr('fails_on_s3proxy') @attr(resource='bucket.acls') @attr(method='ACLs') @attr(operation='set acl WRITE_ACP (xml)') @@ -3435,6 +3522,7 @@ def test_bucket_acl_xml_writeacp(): _build_bucket_acl_xml('WRITE_ACP') +@attr('fails_on_s3proxy') @attr(resource='bucket.acls') @attr(method='ACLs') @attr(operation='set acl READ (xml)') @@ -3443,6 +3531,7 @@ def test_bucket_acl_xml_read(): _build_bucket_acl_xml('READ') +@attr('fails_on_s3proxy') @attr(resource='bucket.acls') @attr(method='ACLs') @attr(operation='set acl READ_ACP (xml)') @@ -3481,6 +3570,7 @@ def _build_object_acl_xml(permission): ) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='ACLs') @attr(operation='set acl FULL_CONTROL (xml)') @@ -3489,6 +3579,7 @@ def test_object_acl_xml(): _build_object_acl_xml('FULL_CONTROL') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='ACLs') @attr(operation='set acl WRITE (xml)') @@ -3497,6 +3588,7 @@ def test_object_acl_xml_write(): _build_object_acl_xml('WRITE') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='ACLs') @attr(operation='set acl WRITE_ACP (xml)') @@ -3505,6 +3597,7 @@ def test_object_acl_xml_writeacp(): _build_object_acl_xml('WRITE_ACP') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='ACLs') @attr(operation='set acl READ (xml)') @@ -3513,6 +3606,7 @@ def test_object_acl_xml_read(): _build_object_acl_xml('READ') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='ACLs') @attr(operation='set acl READ_ACP (xml)') @@ -3621,6 +3715,7 @@ def _check_bucket_acl_grant_cant_writeacp(bucket): check_access_denied(bucket2.set_acl, 'public-read') +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='ACLs') @attr(operation='set acl w/userid FULL_CONTROL') @@ -3644,6 +3739,7 @@ def test_bucket_acl_grant_userid_fullcontrol(): eq(policy.owner.display_name, config.main.display_name) +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='ACLs') @attr(operation='set acl w/userid READ') @@ -3661,6 +3757,7 @@ def test_bucket_acl_grant_userid_read(): _check_bucket_acl_grant_cant_writeacp(bucket) +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='ACLs') @attr(operation='set acl w/userid READ_ACP') @@ -3678,6 +3775,7 @@ def test_bucket_acl_grant_userid_readacp(): #_check_bucket_acl_grant_cant_writeacp_can_readacp(bucket) _check_bucket_acl_grant_cant_writeacp(bucket) +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='ACLs') @attr(operation='set acl w/userid WRITE') @@ -3695,6 +3793,7 @@ def test_bucket_acl_grant_userid_write(): _check_bucket_acl_grant_cant_writeacp(bucket) +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='ACLs') @attr(operation='set acl w/userid WRITE_ACP') @@ -3712,6 +3811,7 @@ def test_bucket_acl_grant_userid_writeacp(): _check_bucket_acl_grant_can_writeacp(bucket) +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='ACLs') @attr(operation='set acl w/invalid userid') @@ -3729,6 +3829,7 @@ def test_bucket_acl_grant_nonexist_user(): eq(e.error_code, 'InvalidArgument') +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='ACLs') @attr(operation='revoke all ACLs') @@ -3777,6 +3878,7 @@ def _get_acl_header(user=None, perms=None): return headers +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='PUT') @attr(operation='add all grants to user through headers') @@ -3836,6 +3938,7 @@ def test_object_header_acl_grants(): ) +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='PUT') @attr(operation='add all grants to user through headers') @@ -3901,6 +4004,7 @@ def test_bucket_header_acl_grants(): # This test will fail on DH Objects. DHO allows multiple users with one account, which # would violate the uniqueness requirement of a user's email. As such, DHO users are # created without an email. +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='ACLs') @attr(operation='add second FULL_CONTROL user') @@ -3940,6 +4044,7 @@ def test_bucket_acl_grant_email(): key.set_contents_from_string('bar') +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='ACLs') @attr(operation='add acl for nonexistent user') @@ -3955,6 +4060,7 @@ def test_bucket_acl_grant_email_notexist(): eq(e.error_code, 'UnresolvableGrantByEmailAddress') +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='ACLs') @attr(operation='revoke all ACLs') @@ -3971,6 +4077,7 @@ def test_bucket_acl_revoke_all(): # TODO rgw log_bucket.set_as_logging_target() gives 403 Forbidden # http://tracker.newdream.net/issues/984 +@attr('fails_on_s3proxy') @attr(resource='bucket.log') @attr(method='put') @attr(operation='set/enable/disable logging target') @@ -4015,6 +4122,7 @@ def get_bucket_key_names(bucket): return frozenset(k.name for k in bucket.list()) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='ACLs') @attr(operation='set bucket/object acls: private/private') @@ -4037,6 +4145,7 @@ def test_access_bucket_private_object_private(): check_access_denied(obj.new.set_contents_from_string, 'newcontent') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='ACLs') @attr(operation='set bucket/object acls: private/public-read') @@ -4052,6 +4161,7 @@ def test_access_bucket_private_object_publicread(): check_access_denied(obj.new.set_contents_from_string, 'newcontent') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='ACLs') @attr(operation='set bucket/object acls: private/public-read/write') @@ -4068,6 +4178,7 @@ def test_access_bucket_private_object_publicreadwrite(): check_access_denied(obj.new.set_contents_from_string, 'newcontent') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='ACLs') @attr(operation='set bucket/object acls: public-read/private') @@ -4083,6 +4194,7 @@ def test_access_bucket_publicread_object_private(): check_access_denied(obj.new.set_contents_from_string, 'newcontent') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='ACLs') @attr(operation='set bucket/object acls: public-read/public-read') @@ -4098,6 +4210,7 @@ def test_access_bucket_publicread_object_publicread(): check_access_denied(obj.new.set_contents_from_string, 'newcontent') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='ACLs') @attr(operation='set bucket/object acls: public-read/public-read-write') @@ -4114,6 +4227,7 @@ def test_access_bucket_publicread_object_publicreadwrite(): check_access_denied(obj.new.set_contents_from_string, 'newcontent') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='ACLs') @attr(operation='set bucket/object acls: public-read-write/private') @@ -4129,6 +4243,7 @@ def test_access_bucket_publicreadwrite_object_private(): obj.new.set_contents_from_string('newcontent') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='ACLs') @attr(operation='set bucket/object acls: public-read-write/public-read') @@ -4143,6 +4258,7 @@ def test_access_bucket_publicreadwrite_object_publicread(): eq(get_bucket_key_names(obj.bucket2), frozenset(['foo', 'bar'])) obj.new.set_contents_from_string('newcontent') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='ACLs') @attr(operation='set bucket/object acls: public-read-write/public-read-write') @@ -4157,6 +4273,7 @@ def test_access_bucket_publicreadwrite_object_publicreadwrite(): eq(get_bucket_key_names(obj.bucket2), frozenset(['foo', 'bar'])) obj.new.set_contents_from_string('newcontent') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='set object acls') @@ -4168,6 +4285,7 @@ def test_object_set_valid_acl(): key.set_contents_from_string('bar') key.set_xml_acl(XML_1) +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='set object acls') @@ -4216,6 +4334,7 @@ def _create_connection_bad_auth(aws_access_key_id='badauth'): @attr(operation='list all buckets (anonymous)') @attr(assertion='succeeds') @attr('fails_on_aws') +@attr('fails_on_s3proxy') def test_list_buckets_anonymous(): # Get a connection with bad authorization, then change it to be our new Anonymous auth mechanism, # emulating standard HTTP access. @@ -4341,6 +4460,7 @@ def test_object_copy_same_bucket(): key2 = bucket.get_key('bar321foo') eq(key2.get_contents_as_string(), 'foo') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='copy object to itself') @@ -4400,6 +4520,7 @@ def test_object_copy_not_owned_bucket(): except AttributeError: pass +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='copy object and change acl') @@ -4640,6 +4761,7 @@ def test_abort_multipart_upload_not_found(): eq(e.reason, 'Not Found') eq(e.error_code, 'NoSuchUpload') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='concurrent multi-part uploads') @@ -4706,6 +4828,7 @@ def _simple_http_req_100_cont(host, port, is_secure, method, resource): @attr(assertion='succeeds if object is public-read-write') @attr('100_continue') @attr('fails_on_mod_proxy_fcgi') +@attr('fails_on_s3proxy') def test_100_continue(): bucket = get_new_bucket() objname = 'testobj' @@ -4727,6 +4850,7 @@ def _test_bucket_acls_changes_persistent(bucket): for p in perms: _build_bucket_acl_xml(p, bucket) +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='put') @attr(operation='acl set') @@ -4735,6 +4859,7 @@ def test_bucket_acls_changes_persistent(): bucket = get_new_bucket() _test_bucket_acls_changes_persistent(bucket); +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='put') @attr(operation='repeated acl set') @@ -4744,6 +4869,7 @@ def test_stress_bucket_acls_changes(): for i in xrange(10): _test_bucket_acls_changes_persistent(bucket); +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='put') @attr(operation='set cors') @@ -4787,6 +4913,7 @@ def _cors_request_and_check(func, url, headers, expect_status, expect_allow_orig +@attr('fails_on_s3proxy') @attr(resource='bucket') @attr(method='get') @attr(operation='check cors response when origin header set') @@ -5169,6 +5296,7 @@ def _test_atomic_dual_conditional_write(file_size): # verify the file _verify_atomic_key_data(key, file_size, 'B') +@attr('fails_on_s3proxy') @attr(resource='object') @attr(method='put') @attr(operation='write one or the other') @@ -5454,6 +5582,7 @@ def check_configure_versioning_retry(bucket, status, expected_string): @attr(operation='create versioned bucket') @attr(assertion='can create and suspend bucket versioning') @attr('versioning') +@attr('fails_on_s3proxy') def test_versioning_bucket_create_suspend(): bucket = get_new_bucket() check_versioning(bucket, None) @@ -5593,6 +5722,7 @@ def _do_test_create_remove_versions_and_head(bucket, objname, num_versions, num_ @attr(operation='create and remove versioned object') @attr(assertion='can create access and remove appropriate versions') @attr('versioning') +@attr('fails_on_s3proxy') def test_versioning_obj_create_read_remove(): bucket = get_new_bucket() objname = 'testobj' @@ -5610,6 +5740,7 @@ def test_versioning_obj_create_read_remove(): @attr(operation='create and remove versioned object and head') @attr(assertion='can create access and remove appropriate versions') @attr('versioning') +@attr('fails_on_s3proxy') def test_versioning_obj_create_read_remove_head(): bucket = get_new_bucket() objname = 'testobj' @@ -5661,6 +5792,7 @@ def overwrite_suspended_versioning_obj(bucket, objname, k, c, content): @attr(operation='suspend versioned bucket') @attr(assertion='suspended versioning behaves correctly') @attr('versioning') +@attr('fails_on_s3proxy') def test_versioning_obj_suspend_versions(): bucket = get_new_bucket() check_versioning(bucket, None) @@ -5697,6 +5829,7 @@ def test_versioning_obj_suspend_versions(): @attr(operation='suspend versioned bucket') @attr(assertion='suspended versioning behaves correctly') @attr('versioning') +@attr('fails_on_s3proxy') def test_versioning_obj_suspend_versions_simple(): bucket = get_new_bucket() check_versioning(bucket, None) @@ -5730,6 +5863,7 @@ def test_versioning_obj_suspend_versions_simple(): @attr(operation='create and remove versions') @attr(assertion='everything works') @attr('versioning') +@attr('fails_on_s3proxy') def test_versioning_obj_create_versions_remove_all(): bucket = get_new_bucket() check_versioning(bucket, None) @@ -5752,6 +5886,7 @@ def test_versioning_obj_create_versions_remove_all(): @attr(operation='create and test multipart object') @attr(assertion='everything works') @attr('versioning') +@attr('fails_on_s3proxy') def test_versioning_obj_create_overwrite_multipart(): bucket = get_new_bucket() check_configure_versioning_retry(bucket, True, "Enabled") @@ -5785,6 +5920,7 @@ def test_versioning_obj_create_overwrite_multipart(): @attr(operation='list versioned objects') @attr(assertion='everything works') @attr('versioning') +@attr('fails_on_s3proxy') def test_versioning_obj_list_marker(): bucket = get_new_bucket() check_configure_versioning_retry(bucket, True, "Enabled") @@ -5822,6 +5958,7 @@ def test_versioning_obj_list_marker(): @attr(operation='create and test versioned object copying') @attr(assertion='everything works') @attr('versioning') +@attr('fails_on_s3proxy') def test_versioning_copy_obj_version(): bucket = get_new_bucket() @@ -5862,6 +5999,7 @@ def _count_bucket_versioned_objs(bucket): @attr(operation='delete multiple versions') @attr(assertion='deletes multiple versions of an object with a single call') @attr('versioning') +@attr('fails_on_s3proxy') def test_versioning_multi_object_delete(): bucket = get_new_bucket() @@ -5898,6 +6036,7 @@ def test_versioning_multi_object_delete(): @attr(operation='delete multiple versions') @attr(assertion='deletes multiple versions of an object and delete marker with a single call') @attr('versioning') +@attr('fails_on_s3proxy') def test_versioning_multi_object_delete_with_marker(): bucket = get_new_bucket() @@ -5944,6 +6083,7 @@ def test_versioning_multi_object_delete_with_marker(): @attr(operation='multi delete create marker') @attr(assertion='returns correct marker version id') @attr('versioning') +@attr('fails_on_s3proxy') def test_versioning_multi_object_delete_with_marker_create(): bucket = get_new_bucket() @@ -5975,6 +6115,7 @@ def test_versioning_multi_object_delete_with_marker_create(): @attr(operation='change acl on an object version changes specific version') @attr(assertion='works') @attr('versioning') +@attr('fails_on_s3proxy') def test_versioned_object_acl(): bucket = get_new_bucket() @@ -6073,6 +6214,7 @@ def _do_wait_completion(t): @attr(operation='concurrent creation of objects, concurrent removal') @attr(assertion='works') @attr('versioning') +@attr('fails_on_s3proxy') def test_versioned_concurrent_object_create_concurrent_remove(): bucket = get_new_bucket() @@ -6100,6 +6242,7 @@ def test_versioned_concurrent_object_create_concurrent_remove(): @attr(operation='concurrent creation and removal of objects') @attr(assertion='works') @attr('versioning') +@attr('fails_on_s3proxy') def test_versioned_concurrent_object_create_and_remove(): bucket = get_new_bucket()