191 lines
6.9 KiB
Python
191 lines
6.9 KiB
Python
import tempfile
|
|
|
|
from django.core.urlresolvers import reverse
|
|
from django_openstack import api
|
|
from django_openstack.tests.view_tests import base
|
|
|
|
|
|
class ObjectViewTests(base.BaseViewTests):
|
|
CONTAINER_NAME = 'containerName'
|
|
|
|
def setUp(self):
|
|
super(ObjectViewTests, self).setUp()
|
|
swift_object = self.mox.CreateMock(api.SwiftObject)
|
|
self.swift_objects = [swift_object]
|
|
|
|
def test_index(self):
|
|
self.mox.StubOutWithMock(api, 'swift_get_objects')
|
|
api.swift_get_objects(
|
|
self.CONTAINER_NAME).AndReturn(self.swift_objects)
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
res = self.client.get(reverse('dash_objects',
|
|
args=[self.TEST_TENANT,
|
|
self.CONTAINER_NAME]))
|
|
self.assertTemplateUsed(res, 'dash_objects.html')
|
|
self.assertItemsEqual(res.context['objects'], self.swift_objects)
|
|
|
|
self.mox.VerifyAll()
|
|
|
|
def test_upload_index(self):
|
|
res = self.client.get(reverse('dash_objects_upload',
|
|
args=[self.TEST_TENANT,
|
|
self.CONTAINER_NAME]))
|
|
|
|
self.assertTemplateUsed(res, 'dash_objects_upload.html')
|
|
|
|
def test_upload(self):
|
|
OBJECT_DATA = 'objectData'
|
|
OBJECT_FILE = tempfile.TemporaryFile()
|
|
OBJECT_FILE.write(OBJECT_DATA)
|
|
OBJECT_FILE.flush()
|
|
OBJECT_FILE.seek(0)
|
|
OBJECT_NAME = 'objectName'
|
|
|
|
formData = {'method': 'UploadObject',
|
|
'container_name': self.CONTAINER_NAME,
|
|
'name': OBJECT_NAME,
|
|
'object_file': OBJECT_FILE}
|
|
|
|
self.mox.StubOutWithMock(api, 'swift_upload_object')
|
|
api.swift_upload_object(unicode(self.CONTAINER_NAME),
|
|
unicode(OBJECT_NAME),
|
|
OBJECT_DATA)
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
res = self.client.post(reverse('dash_objects_upload',
|
|
args=[self.TEST_TENANT,
|
|
self.CONTAINER_NAME]),
|
|
formData)
|
|
|
|
self.assertRedirectsNoFollow(res, reverse('dash_objects_upload',
|
|
args=[self.TEST_TENANT,
|
|
self.CONTAINER_NAME]))
|
|
|
|
self.mox.VerifyAll()
|
|
|
|
def test_delete(self):
|
|
OBJECT_NAME = 'objectName'
|
|
formData = {'method': 'DeleteObject',
|
|
'container_name': self.CONTAINER_NAME,
|
|
'object_name': OBJECT_NAME}
|
|
|
|
self.mox.StubOutWithMock(api, 'swift_delete_object')
|
|
api.swift_delete_object(self.CONTAINER_NAME, OBJECT_NAME)
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
res = self.client.post(reverse('dash_objects',
|
|
args=[self.TEST_TENANT,
|
|
self.CONTAINER_NAME]),
|
|
formData)
|
|
|
|
self.assertRedirectsNoFollow(res, reverse('dash_objects',
|
|
args=[self.TEST_TENANT,
|
|
self.CONTAINER_NAME]))
|
|
|
|
self.mox.VerifyAll()
|
|
|
|
def test_download(self):
|
|
OBJECT_DATA = 'objectData'
|
|
OBJECT_NAME = 'objectName'
|
|
|
|
self.mox.StubOutWithMock(api, 'swift_get_object_data')
|
|
api.swift_get_object_data(unicode(self.CONTAINER_NAME),
|
|
unicode(OBJECT_NAME)).AndReturn(OBJECT_DATA)
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
res = self.client.get(reverse('dash_objects_download',
|
|
args=[self.TEST_TENANT,
|
|
self.CONTAINER_NAME,
|
|
OBJECT_NAME]))
|
|
|
|
self.assertEqual(res.content, OBJECT_DATA)
|
|
self.assertTrue(res.has_header('Content-Disposition'))
|
|
|
|
self.mox.VerifyAll()
|
|
|
|
def test_copy_index(self):
|
|
OBJECT_NAME = 'objectName'
|
|
|
|
container = self.mox.CreateMock(api.Container)
|
|
container.name = self.CONTAINER_NAME
|
|
|
|
self.mox.StubOutWithMock(api, 'swift_get_containers')
|
|
api.swift_get_containers().AndReturn([container])
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
res = self.client.get(reverse('dash_object_copy',
|
|
args=[self.TEST_TENANT,
|
|
self.CONTAINER_NAME,
|
|
OBJECT_NAME]))
|
|
|
|
self.assertTemplateUsed(res, 'dash_object_copy.html')
|
|
|
|
self.mox.VerifyAll()
|
|
|
|
def test_copy(self):
|
|
NEW_CONTAINER_NAME = self.CONTAINER_NAME
|
|
NEW_OBJECT_NAME = 'newObjectName'
|
|
ORIG_CONTAINER_NAME = 'origContainerName'
|
|
ORIG_OBJECT_NAME = 'origObjectName'
|
|
|
|
formData = {'method': 'CopyObject',
|
|
'new_container_name': NEW_CONTAINER_NAME,
|
|
'new_object_name': NEW_OBJECT_NAME,
|
|
'orig_container_name': ORIG_CONTAINER_NAME,
|
|
'orig_object_name': ORIG_OBJECT_NAME}
|
|
|
|
container = self.mox.CreateMock(api.Container)
|
|
container.name = self.CONTAINER_NAME
|
|
|
|
self.mox.StubOutWithMock(api, 'swift_get_containers')
|
|
api.swift_get_containers().AndReturn([container])
|
|
|
|
self.mox.StubOutWithMock(api, 'swift_copy_object')
|
|
api.swift_copy_object(ORIG_CONTAINER_NAME, ORIG_OBJECT_NAME,
|
|
NEW_CONTAINER_NAME, NEW_OBJECT_NAME)
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
res = self.client.post(reverse('dash_object_copy',
|
|
args=[self.TEST_TENANT,
|
|
ORIG_CONTAINER_NAME,
|
|
ORIG_OBJECT_NAME]),
|
|
formData)
|
|
|
|
self.assertRedirectsNoFollow(res, reverse('dash_object_copy',
|
|
args=[self.TEST_TENANT,
|
|
ORIG_CONTAINER_NAME,
|
|
ORIG_OBJECT_NAME]))
|
|
|
|
self.mox.VerifyAll()
|
|
|
|
def test_filter(self):
|
|
PREFIX = 'prefix'
|
|
|
|
formData = {'method': 'FilterObjects',
|
|
'container_name': self.CONTAINER_NAME,
|
|
'object_prefix': PREFIX,
|
|
}
|
|
|
|
self.mox.StubOutWithMock(api, 'swift_get_objects')
|
|
api.swift_get_objects(unicode(self.CONTAINER_NAME),
|
|
prefix=unicode(PREFIX)
|
|
).AndReturn(self.swift_objects)
|
|
|
|
self.mox.ReplayAll()
|
|
|
|
res = self.client.post(reverse('dash_objects',
|
|
args=[self.TEST_TENANT,
|
|
self.CONTAINER_NAME]),
|
|
formData)
|
|
|
|
self.assertTemplateUsed(res, 'dash_objects.html')
|
|
|
|
self.mox.VerifyAll()
|