def test_object_multi_DELETE_quiet(self): self.swift.register('DELETE', '/v1/AUTH_test/bucket/Key1', swob.HTTPNoContent, {}, None) self.swift.register('DELETE', '/v1/AUTH_test/bucket/Key2', swob.HTTPNotFound, {}, None) elem = Element('Delete') SubElement(elem, 'Quiet').text = 'true' for key in ['Key1', 'Key2']: obj = SubElement(elem, 'Object') SubElement(obj, 'Key').text = key body = tostring(elem, use_s3ns=False) content_md5 = md5(body).digest().encode('base64').strip() req = Request.blank('/bucket?delete', environ={'REQUEST_METHOD': 'POST'}, headers={ 'Authorization': 'AWS test:tester:hmac', 'Date': self.get_date_header(), 'Content-MD5': content_md5 }, body=body) status, headers, body = self.call_swift3(req) self.assertEquals(status.split()[0], '200') elem = fromstring(body) self.assertEquals(len(elem.findall('Deleted')), 0)
def test_object_multi_DELETE(self): self.swift.register('DELETE', '/v1/AUTH_test/bucket/Key1', swob.HTTPNoContent, {}, None) self.swift.register('DELETE', '/v1/AUTH_test/bucket/Key2', swob.HTTPNotFound, {}, None) elem = Element('Delete') for key in ['Key1', 'Key2']: obj = SubElement(elem, 'Object') SubElement(obj, 'Key').text = key body = tostring(elem, use_s3ns=False) content_md5 = md5(body).digest().encode('base64').strip() req = Request.blank('/bucket?delete', environ={'REQUEST_METHOD': 'POST'}, headers={'Authorization': 'AWS test:tester:hmac', 'Content-MD5': content_md5}, body=body) req.date = datetime.now() req.content_type = 'text/plain' status, headers, body = self.call_swift3(req) self.assertEquals(status.split()[0], '200') elem = fromstring(body) self.assertEquals(len(elem.findall('Deleted')), 2)
def test_object_multi_DELETE_quiet(self): self.swift.register("DELETE", "/v1/AUTH_test/bucket/Key1", swob.HTTPNoContent, {}, None) self.swift.register("DELETE", "/v1/AUTH_test/bucket/Key2", swob.HTTPNotFound, {}, None) elem = Element("Delete") SubElement(elem, "Quiet").text = "true" for key in ["Key1", "Key2"]: obj = SubElement(elem, "Object") SubElement(obj, "Key").text = key body = tostring(elem, use_s3ns=False) content_md5 = md5(body).digest().encode("base64").strip() req = Request.blank( "/bucket?delete", environ={"REQUEST_METHOD": "POST"}, headers={"Authorization": "AWS test:tester:hmac", "Content-MD5": content_md5}, body=body, ) status, headers, body = self.call_swift3(req) self.assertEquals(status.split()[0], "200") elem = fromstring(body) self.assertEquals(len(elem.findall("Deleted")), 0)
def test_object_multi_DELETE(self): self.swift.register('HEAD', '/v1/AUTH_test/bucket/Key3', swob.HTTPOk, {'x-static-large-object': 'True'}, None) self.swift.register('DELETE', '/v1/AUTH_test/bucket/Key1', swob.HTTPNoContent, {}, None) self.swift.register('DELETE', '/v1/AUTH_test/bucket/Key2', swob.HTTPNotFound, {}, None) self.swift.register('DELETE', '/v1/AUTH_test/bucket/Key3', swob.HTTPOk, {}, None) elem = Element('Delete') for key in ['Key1', 'Key2', 'Key3']: obj = SubElement(elem, 'Object') SubElement(obj, 'Key').text = key body = tostring(elem, use_s3ns=False) content_md5 = md5(body).digest().encode('base64').strip() req = Request.blank('/bucket?delete', environ={'REQUEST_METHOD': 'POST'}, headers={ 'Authorization': 'AWS test:tester:hmac', 'Date': self.get_date_header(), 'Content-MD5': content_md5 }, body=body) req.date = datetime.now() req.content_type = 'text/plain' status, headers, body = self.call_swift3(req) self.assertEquals(status.split()[0], '200') elem = fromstring(body) self.assertEquals(len(elem.findall('Deleted')), 3) _, path, _ = self.swift.calls_with_headers[-1] path, query_string = path.split('?', 1) self.assertEquals(path, '/v1/AUTH_test/bucket/Key3') query = dict(urllib.parse.parse_qsl(query_string)) self.assertEquals(query['multipart-manifest'], 'delete')
def test_object_multi_DELETE(self): self.swift.register('HEAD', '/v1/AUTH_test/bucket/Key3', swob.HTTPOk, {'x-static-large-object': 'True'}, None) self.swift.register('DELETE', '/v1/AUTH_test/bucket/Key1', swob.HTTPNoContent, {}, None) self.swift.register('DELETE', '/v1/AUTH_test/bucket/Key2', swob.HTTPNotFound, {}, None) self.swift.register('DELETE', '/v1/AUTH_test/bucket/Key3', swob.HTTPOk, {}, None) elem = Element('Delete') for key in ['Key1', 'Key2', 'Key3']: obj = SubElement(elem, 'Object') SubElement(obj, 'Key').text = key body = tostring(elem, use_s3ns=False) content_md5 = md5(body).digest().encode('base64').strip() req = Request.blank('/bucket?delete', environ={'REQUEST_METHOD': 'POST'}, headers={'Authorization': 'AWS test:tester:hmac', 'Date': self.get_date_header(), 'Content-MD5': content_md5}, body=body) req.date = datetime.now() req.content_type = 'text/plain' status, headers, body = self.call_swift3(req) self.assertEquals(status.split()[0], '200') elem = fromstring(body) self.assertEquals(len(elem.findall('Deleted')), 3) _, path, _ = self.swift.calls_with_headers[-1] path, query_string = path.split('?', 1) self.assertEquals(path, '/v1/AUTH_test/bucket/Key3') query = dict(urllib.parse.parse_qsl(query_string)) self.assertEquals(query['multipart-manifest'], 'delete')