diff --git a/s3tests/functional/test_s3.py b/s3tests/functional/test_s3.py index ec69393..752534f 100644 --- a/s3tests/functional/test_s3.py +++ b/s3tests/functional/test_s3.py @@ -5074,6 +5074,50 @@ def test_ranged_request_response_code(): eq(fetched_content, content[4:8]) eq(status, 206) +@attr(resource='object') +@attr(method='get') +@attr(operation='range') +@attr(assertion='returns correct data, 206') +def test_ranged_request_skip_leading_bytes_response_code(): + content = 'testcontent' + + bucket = get_new_bucket() + key = bucket.new_key('testobj') + key.set_contents_from_string(content) + + # test trailing bytes + key.open('r', headers={'Range': 'bytes=4-'}) + status = key.resp.status + fetched_content = '' + for data in key: + fetched_content += data; + key.close() + + eq(fetched_content, content[4:]) + eq(status, 206) + +@attr(resource='object') +@attr(method='get') +@attr(operation='range') +@attr(assertion='returns correct data, 206') +def test_ranged_request_return_trailing_bytes_response_code(): + content = 'testcontent' + + bucket = get_new_bucket() + key = bucket.new_key('testobj') + key.set_contents_from_string(content) + + # test leading bytes + key.open('r', headers={'Range': 'bytes=-7'}) + status = key.resp.status + fetched_content = '' + for data in key: + fetched_content += data; + key.close() + + eq(fetched_content, content[-7:]) + eq(status, 206) + def check_can_test_multiregion(): if not targets.main.master or len(targets.main.secondaries) == 0: raise SkipTest