Merge pull request #55 from bloodeagle40234/add_entity_too_large_error

Add a error of EntityTooLarge
This commit is contained in:
FUJITA Tomonori 2013-07-29 20:23:41 -07:00
commit ce80afdd37
2 changed files with 14 additions and 2 deletions

View File

@ -70,7 +70,8 @@ from swift.common.swob import Request, Response
from swift.common.http import HTTP_OK, HTTP_CREATED, HTTP_ACCEPTED, \
HTTP_NO_CONTENT, HTTP_BAD_REQUEST, HTTP_UNAUTHORIZED, HTTP_FORBIDDEN, \
HTTP_NOT_FOUND, HTTP_CONFLICT, HTTP_UNPROCESSABLE_ENTITY, is_success, \
HTTP_NOT_IMPLEMENTED, HTTP_LENGTH_REQUIRED, HTTP_SERVICE_UNAVAILABLE
HTTP_NOT_IMPLEMENTED, HTTP_LENGTH_REQUIRED, HTTP_SERVICE_UNAVAILABLE, \
HTTP_REQUEST_ENTITY_TOO_LARGE
MAX_BUCKET_LISTING = 1000
@ -108,6 +109,9 @@ def get_err_response(code):
(HTTP_BAD_REQUEST, 'The Content-MD5 you specified was invalid'),
'BadDigest':
(HTTP_BAD_REQUEST, 'The Content-Length you specified was invalid'),
'EntityTooLarge':
(HTTP_BAD_REQUEST, 'Your proposed upload exceeds the maximum '
'allowed object size.'),
'NoSuchBucket':
(HTTP_NOT_FOUND, 'The specified bucket does not exist'),
'SignatureDoesNotMatch':
@ -798,6 +802,8 @@ class ObjectController(WSGIContext):
return get_err_response('NoSuchBucket')
elif status == HTTP_UNPROCESSABLE_ENTITY:
return get_err_response('InvalidDigest')
elif status == HTTP_REQUEST_ENTITY_TOO_LARGE:
return get_err_response('EntityTooLarge')
else:
return get_err_response('InvalidURI')

View File

@ -23,7 +23,7 @@ import simplejson
from swift.common.swob import Request, Response, HTTPUnauthorized, \
HTTPCreated,HTTPNoContent, HTTPAccepted, HTTPBadRequest, HTTPNotFound, \
HTTPConflict, HTTPForbidden
HTTPConflict, HTTPForbidden, HTTPRequestEntityTooLarge
from swift3 import middleware as swift3
@ -167,6 +167,9 @@ class FakeAppObject(FakeApp):
start_response(HTTPForbidden(request=req).status, [])
elif self.status == 404:
start_response(HTTPNotFound(request=req).status, [])
elif self.status == 413:
start_response(HTTPRequestEntityTooLarge(request=req).status,
[])
else:
start_response(HTTPBadRequest(request=req).status, [])
elif env['REQUEST_METHOD'] == 'DELETE':
@ -513,6 +516,9 @@ class TestSwift3(unittest.TestCase):
code = self._test_method_error(FakeAppObject, 'PUT',
'/bucket/object', 404)
self.assertEquals(code, 'NoSuchBucket')
code = self._test_method_error(FakeAppObject, 'PUT',
'/bucket/object', 413)
self.assertEquals(code, 'EntityTooLarge')
code = self._test_method_error(FakeAppObject, 'PUT',
'/bucket/object', 0)
self.assertEquals(code, 'InvalidURI')