def test_upload(self): container = self.containers.first() obj = self.objects.first() OBJECT_DATA = 'objectData' temp_file = tempfile.TemporaryFile() temp_file.write(OBJECT_DATA) temp_file.flush() temp_file.seek(0) self.mox.StubOutWithMock(api, 'swift_upload_object') api.swift_upload_object(IsA(http.HttpRequest), container.name, obj.name, IsA(InMemoryUploadedFile)).AndReturn(obj) self.mox.ReplayAll() upload_url = reverse('horizon:project:containers:object_upload', args=[container.name]) res = self.client.get(upload_url) self.assertTemplateUsed(res, 'project/containers/upload.html') res = self.client.get(upload_url) self.assertContains(res, 'enctype="multipart/form-data"') formData = { 'method': forms.UploadObject.__name__, 'container_name': container.name, 'name': obj.name, 'object_file': temp_file } res = self.client.post(upload_url, formData) index_url = reverse('horizon:project:containers:index', args=[wrap_delimiter(container.name)]) self.assertRedirectsNoFollow(res, index_url) # Test invalid filename formData['name'] = "contains/a/slash" res = self.client.post(upload_url, formData) self.assertNoMessages() self.assertContains(res, "Slash is not an allowed character.")
def test_upload(self): container = self.containers.first() obj = self.objects.first() OBJECT_DATA = 'objectData' temp_file = tempfile.TemporaryFile() temp_file.write(OBJECT_DATA) temp_file.flush() temp_file.seek(0) self.mox.StubOutWithMock(api, 'swift_upload_object') api.swift_upload_object(IsA(http.HttpRequest), container.name, obj.name, IsA(InMemoryUploadedFile)).AndReturn(obj) self.mox.ReplayAll() upload_url = reverse('horizon:project:containers:object_upload', args=[container.name]) res = self.client.get(upload_url) self.assertTemplateUsed(res, 'project/containers/upload.html') res = self.client.get(upload_url) self.assertContains(res, 'enctype="multipart/form-data"') formData = {'method': forms.UploadObject.__name__, 'container_name': container.name, 'name': obj.name, 'object_file': temp_file} res = self.client.post(upload_url, formData) index_url = reverse('horizon:project:containers:index', args=[wrap_delimiter(container.name)]) self.assertRedirectsNoFollow(res, index_url) # Test invalid filename formData['name'] = "contains/a/slash" res = self.client.post(upload_url, formData) self.assertNoMessages() self.assertContains(res, "Slash is not an allowed character.")
def test_swift_upload_object(self): container = self.containers.first() obj = self.objects.first() fake_name = 'fake_object.jpg' class FakeFile(object): def __init__(self): self.name = fake_name self.data = obj.data self.size = len(obj.data) headers = {'X-Object-Meta-Orig-Filename': fake_name} swift_api = self.stub_swiftclient() swift_api.put_object(container.name, obj.name, IsA(FakeFile), headers=headers) self.mox.ReplayAll() api.swift_upload_object(self.request, container.name, obj.name, FakeFile())
def handle(self, request, data): object_file = self.files['object_file'] if data['path']: object_path = "/".join([data['path'].rstrip("/"), data['name']]) else: object_path = data['name'] try: obj = api.swift_upload_object(request, data['container_name'], object_path, object_file) messages.success(request, _("Object was successfully uploaded.")) return obj except: exceptions.handle(request, _("Unable to upload object."))