Fix s3 Added Error handling in case of invalid uploadID (#2979)
* Added Error handling in case of invalid uploadID * Linting * added assertions * Linting Co-authored-by: usmankb <usman@krazybee.com> Co-authored-by: Bert Blommers <info@bertblommers.nl>
This commit is contained in:
parent
e73a694219
commit
774a764b69
@ -377,3 +377,12 @@ class NoSystemTags(S3ClientError):
|
|||||||
super(NoSystemTags, self).__init__(
|
super(NoSystemTags, self).__init__(
|
||||||
"InvalidTag", "System tags cannot be added/updated by requester"
|
"InvalidTag", "System tags cannot be added/updated by requester"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class NoSuchUpload(S3ClientError):
|
||||||
|
code = 404
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super(NoSuchUpload, self).__init__(
|
||||||
|
"NoSuchUpload", "The specified multipart upload does not exist."
|
||||||
|
)
|
||||||
|
@ -40,6 +40,7 @@ from .exceptions import (
|
|||||||
NoSuchPublicAccessBlockConfiguration,
|
NoSuchPublicAccessBlockConfiguration,
|
||||||
InvalidPublicAccessBlockConfiguration,
|
InvalidPublicAccessBlockConfiguration,
|
||||||
WrongPublicAccessBlockAccountIdError,
|
WrongPublicAccessBlockAccountIdError,
|
||||||
|
NoSuchUpload,
|
||||||
)
|
)
|
||||||
from .utils import clean_key_name, _VersionedKeyStore
|
from .utils import clean_key_name, _VersionedKeyStore
|
||||||
|
|
||||||
@ -1478,6 +1479,9 @@ class S3Backend(BaseBackend):
|
|||||||
|
|
||||||
def cancel_multipart(self, bucket_name, multipart_id):
|
def cancel_multipart(self, bucket_name, multipart_id):
|
||||||
bucket = self.get_bucket(bucket_name)
|
bucket = self.get_bucket(bucket_name)
|
||||||
|
multipart_data = bucket.multiparts.get(multipart_id, None)
|
||||||
|
if not multipart_data:
|
||||||
|
raise NoSuchUpload()
|
||||||
del bucket.multiparts[multipart_id]
|
del bucket.multiparts[multipart_id]
|
||||||
|
|
||||||
def list_multipart(self, bucket_name, multipart_id):
|
def list_multipart(self, bucket_name, multipart_id):
|
||||||
|
@ -2149,6 +2149,19 @@ def test_boto3_copy_object_with_versioning():
|
|||||||
data.should.equal(b"test2")
|
data.should.equal(b"test2")
|
||||||
|
|
||||||
|
|
||||||
|
@mock_s3
|
||||||
|
def test_s3_abort_multipart_data_with_invalid_upload_and_key():
|
||||||
|
client = boto3.client("s3", region_name=DEFAULT_REGION_NAME)
|
||||||
|
|
||||||
|
client.create_bucket(Bucket="blah")
|
||||||
|
|
||||||
|
with assert_raises(Exception) as err:
|
||||||
|
client.abort_multipart_upload(
|
||||||
|
Bucket="blah", Key="foobar", UploadId="dummy_upload_id"
|
||||||
|
)
|
||||||
|
err.exception.response["Error"]["Code"].should.equal("NoSuchUpload")
|
||||||
|
|
||||||
|
|
||||||
@mock_s3
|
@mock_s3
|
||||||
def test_boto3_copy_object_from_unversioned_to_versioned_bucket():
|
def test_boto3_copy_object_from_unversioned_to_versioned_bucket():
|
||||||
client = boto3.client("s3", region_name=DEFAULT_REGION_NAME)
|
client = boto3.client("s3", region_name=DEFAULT_REGION_NAME)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user