Merge pull request #600 from CloverHealth/key_head_version_support
Add S3 versioned bucket support to key head requests.
This commit is contained in:
commit
03903800ff
@ -372,7 +372,7 @@ class ResponseObject(_TemplateEnvironmentMixin):
|
||||
elif method == 'PUT':
|
||||
return self._key_response_put(request, body, bucket_name, query, key_name, headers)
|
||||
elif method == 'HEAD':
|
||||
return self._key_response_head(bucket_name, key_name, headers)
|
||||
return self._key_response_head(bucket_name, query, key_name, headers)
|
||||
elif method == 'DELETE':
|
||||
return self._key_response_delete(bucket_name, query, key_name, headers)
|
||||
elif method == 'POST':
|
||||
@ -468,8 +468,9 @@ class ResponseObject(_TemplateEnvironmentMixin):
|
||||
headers.update(new_key.response_dict)
|
||||
return 200, headers, template.render(key=new_key)
|
||||
|
||||
def _key_response_head(self, bucket_name, key_name, headers):
|
||||
key = self.backend.get_key(bucket_name, key_name)
|
||||
def _key_response_head(self, bucket_name, query, key_name, headers):
|
||||
version_id = query.get('versionId', [None])[0]
|
||||
key = self.backend.get_key(bucket_name, key_name, version_id=version_id)
|
||||
if key:
|
||||
headers.update(key.metadata)
|
||||
headers.update(key.response_dict)
|
||||
|
@ -1000,6 +1000,28 @@ def test_boto3_head_object():
|
||||
s3.Object('blah', 'hello2.txt').meta.client.head_object(Bucket='blah', Key='hello_bad.txt')
|
||||
|
||||
|
||||
@mock_s3
|
||||
def test_boto3_head_object_with_versioning():
|
||||
s3 = boto3.resource('s3', region_name='us-east-1')
|
||||
bucket = s3.create_bucket(Bucket='blah')
|
||||
bucket.Versioning().enable()
|
||||
|
||||
old_content = 'some text'
|
||||
new_content = 'some new text'
|
||||
s3.Object('blah', 'hello.txt').put(Body=old_content)
|
||||
s3.Object('blah', 'hello.txt').put(Body=new_content)
|
||||
|
||||
head_object = s3.Object('blah', 'hello.txt').meta.client.head_object(
|
||||
Bucket='blah', Key='hello.txt')
|
||||
head_object['VersionId'].should.equal('1')
|
||||
head_object['ContentLength'].should.equal(len(new_content))
|
||||
|
||||
old_head_object = s3.Object('blah', 'hello.txt').meta.client.head_object(
|
||||
Bucket='blah', Key='hello.txt', VersionId='0')
|
||||
old_head_object['VersionId'].should.equal('0')
|
||||
old_head_object['ContentLength'].should.equal(len(old_content))
|
||||
|
||||
|
||||
TEST_XML = """\
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ns0:WebsiteConfiguration xmlns:ns0="http://s3.amazonaws.com/doc/2006-03-01/">
|
||||
|
Loading…
Reference in New Issue
Block a user