Skip to content
This repository has been archived by the owner on May 10, 2024. It is now read-only.

Commit

Permalink
Merge pull request #1763 from mshang/develop
Browse files Browse the repository at this point in the history
Do not validate bucket on copy key. Fixes #1763.
  • Loading branch information
danielgtaylor committed Oct 14, 2013
2 parents a6bf794 + e5bcf79 commit 5505113
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 1 deletion.
3 changes: 2 additions & 1 deletion boto/s3/bucket.py
Original file line number Diff line number Diff line change
Expand Up @@ -694,7 +694,8 @@ def copy_key(self, new_key_name, src_bucket_name,
if self.name == src_bucket_name:
src_bucket = self
else:
src_bucket = self.connection.get_bucket(src_bucket_name)
src_bucket = self.connection.get_bucket(
src_bucket_name, validate=False)
acl = src_bucket.get_xml_acl(src_key_name)
if encrypt_key:
headers[provider.server_side_encryption_header] = 'AES256'
Expand Down
20 changes: 20 additions & 0 deletions tests/unit/s3/test_bucket.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
from mock import patch

from tests.unit import unittest
from tests.unit import AWSMockServiceTestCase

Expand Down Expand Up @@ -98,3 +100,21 @@ def test__get_all_query_args(self):
qa,
'initial=1&bar=%E2%98%83&max-keys=0&foo=true&some-other=thing'
)

@patch.object(Bucket, 'get_all_keys')
def test_bucket_copy_key_no_validate(self, mock_get_all_keys):
self.set_http_response(status_code=200)
bucket = self.service_connection.create_bucket('mybucket')

self.assertFalse(mock_get_all_keys.called)
self.service_connection.get_bucket('mybucket', validate=True)
self.assertTrue(mock_get_all_keys.called)

mock_get_all_keys.reset_mock()
self.assertFalse(mock_get_all_keys.called)
try:
bucket.copy_key('newkey', 'srcbucket', 'srckey', preserve_acl=True)
except:
# Will throw because of empty response.
pass
self.assertFalse(mock_get_all_keys.called)

0 comments on commit 5505113

Please sign in to comment.