Merge "bulk delete bug with trailing whitespace"

This commit is contained in:
Jenkins 2013-09-29 03:15:10 +00:00 committed by Gerrit Code Review
commit 5eea524d3e
2 changed files with 9 additions and 7 deletions

View File

@ -241,6 +241,7 @@ class Bulk(object):
while data_remaining:
if '\n' in line:
obj_to_delete, line = line.split('\n', 1)
obj_to_delete = obj_to_delete.strip()
objs_to_delete.append(
{'name': unquote(obj_to_delete)})
else:
@ -249,9 +250,10 @@ class Bulk(object):
line += data
else:
data_remaining = False
if line.strip():
obj_to_delete = line.strip()
if obj_to_delete:
objs_to_delete.append(
{'name': unquote(line)})
{'name': unquote(obj_to_delete)})
if len(objs_to_delete) > self.max_deletes_per_request:
raise HTTPRequestEntityTooLarge(
'Maximum Bulk Deletes: %d per request' %
@ -308,7 +310,7 @@ class Bulk(object):
separator = '\r\n\r\n'
last_yield = time()
yield ' '
obj_name = obj_to_delete['name'].strip()
obj_name = obj_to_delete['name']
if not obj_name:
continue
if len(failed_files) >= self.max_failed_deletes:

View File

@ -553,18 +553,18 @@ class TestDelete(unittest.TestCase):
req.method = 'DELETE'
req.headers['Transfer-Encoding'] = 'chunked'
req.headers['Accept'] = 'application/json'
req.environ['wsgi.input'] = StringIO('/c/f')
req.environ['wsgi.input'] = StringIO('/c/f%20')
list(self.bulk(req.environ, fake_start_response)) # iterate over resp
self.assertEquals(
self.app.delete_paths, ['/delete_works/AUTH_Acc/c/f'])
self.app.delete_paths, ['/delete_works/AUTH_Acc/c/f '])
self.assertEquals(self.app.calls, 1)
def test_bulk_delete_get_objs(self):
req = Request.blank('/delete_works/AUTH_Acc', body='1\r\n2\r\n')
req = Request.blank('/delete_works/AUTH_Acc', body='1%20\r\n2\r\n')
req.method = 'DELETE'
with patch.object(self.bulk, 'max_deletes_per_request', 2):
results = self.bulk.get_objs_to_delete(req)
self.assertEquals(results, [{'name': '1\r'}, {'name': '2\r'}])
self.assertEquals(results, [{'name': '1 '}, {'name': '2'}])
with patch.object(bulk, 'MAX_PATH_LENGTH', 2):
results = []