Skip to content

Commit 7de9aad

Browse files
committed
Add copy_object to MockS3Client for tests
1 parent d2cdebb commit 7de9aad

2 files changed

Lines changed: 13 additions & 1 deletion

File tree

taiga2/tests/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def app(request, mock_s3, mock_sts, tmpdir):
7070
# Monkey patch S3
7171
g._s3_resource = mock_s3
7272

73-
g._s3_client = MockS3Client()
73+
g._s3_client = MockS3Client(mock_s3)
7474

7575
g._sts_client = mock_sts
7676

taiga2/tests/mock_s3.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,21 @@ def download_as_bytes(self):
101101

102102

103103
class MockS3Client:
104+
def __init__(self, mock_s3=None):
105+
self._mock_s3 = mock_s3
106+
104107
def generate_presigned_url(self, ClientMethod, Params):
105108
return "https://mocks3/{}/{}?signed=Y".format(Params["Bucket"], Params["Key"])
106109

110+
def copy_object(self, Bucket, Key, CopySource, **kwargs):
111+
if self._mock_s3 is None:
112+
raise RuntimeError("MockS3Client needs a MockS3 reference to perform copy_object")
113+
src_bucket = CopySource["Bucket"]
114+
src_key = CopySource["Key"]
115+
src_path = self._mock_s3.file_per_key[(src_bucket, src_key)]
116+
with open(src_path, "rb") as f:
117+
self._mock_s3.Bucket(Bucket).put_object(Key=Key, Body=f)
118+
107119

108120
def parse_presigned_url(url):
109121
g = re.match("https://mocks3/([^/]+)/([^?]+)\\?signed=Y", url)

0 commit comments

Comments
 (0)