Merge "bulk delete bug with trailing whitespace"
This commit is contained in:
commit
5eea524d3e
|
@ -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:
|
||||
|
|
|
@ -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 = []
|
||||
|
|
Loading…
Reference in New Issue