Exemplo n.º 1
0
class ORMMetaBackendTest(TestCase):
    def setUp(self):
        self.orm_meta_backend_instance = ORMMetaBackend(
            model=ProxyStorageModel)

    def test_create__should_create_model_instance_with_data(self):
        data = {
            'path': '/hello/world.txt',
            'some_attr': 'some attr value',
            'another_attr': 'another attr value',
        }
        self.orm_meta_backend_instance.create(data=data)
        self.assertEqual(self.orm_meta_backend_instance.model.objects.count(),
                         1)
        obj = self.orm_meta_backend_instance.model.objects.all()[0]
        self.assertEqual(obj.path, data['path'])
        self.assertEqual(obj.some_attr, data['some_attr'])
        self.assertEqual(obj.another_attr, data['another_attr'])

    def test_create__should_return_meta_backend_object(self):
        data = {
            'path': '/hello/world.txt',
            'some_attr': 'some attr value',
            'another_attr': 'another attr value',
        }
        meta_backend_object = self.orm_meta_backend_instance.create(data=data)
        self.assertIsInstance(meta_backend_object, MetaBackendObject)
        model_obj = self.orm_meta_backend_instance.model.objects.all()[0]
        self.assertEqual(model_obj.id, meta_backend_object.get('id'))
        self.assertEqual(model_obj.path, meta_backend_object.get('path'))
        self.assertEqual(model_obj.some_attr,
                         meta_backend_object.get('some_attr'))
        self.assertEqual(model_obj.another_attr,
                         meta_backend_object.get('another_attr'))

    def test_get__should_return_meta_backend_object(self):
        data = {
            'path': '/hello/world.txt',
            'some_attr': 'some attr value',
            'another_attr': 'another attr value',
        }
        self.orm_meta_backend_instance.create(data=data)
        meta_backend_object = self.orm_meta_backend_instance.get(
            path=data.get('path'))
        self.assertIsInstance(meta_backend_object, MetaBackendObject)
        model_obj = self.orm_meta_backend_instance.model.objects.all()[0]
        self.assertEqual(model_obj.id, meta_backend_object.get('id'))
        self.assertEqual(model_obj.path, meta_backend_object.get('path'))
        self.assertEqual(model_obj.some_attr,
                         meta_backend_object.get('some_attr'))
        self.assertEqual(model_obj.another_attr,
                         meta_backend_object.get('another_attr'))

    def test_get__should_raise_special_exception_if_object_does_not_exist(
            self):
        expected_message = '{0} matching query does not exist.'.format(
            self.orm_meta_backend_instance.model.__name__)
        caught_right_exception = False
        try:
            self.orm_meta_backend_instance.get(path='/some/not/existing/path')
        except MetaBackendObjectDoesNotExist as exc:
            message = str(exc)
            self.assertEqual(expected_message, message)
            caught_right_exception = True
        except Exception:
            pass
        msg = 'Meta backend\'s "get" method should raise MetaBackendObjectDoesNotExist if could not find object'
        self.assertTrue(caught_right_exception, msg)

    def test_update_should_update_data(self):
        data = {
            'path': '/hello/world.txt',
            'some_attr': 'some attr value',
            'another_attr': 'another attr value',
        }
        self.orm_meta_backend_instance.create(data=data)
        update_data = {
            'some_attr': 'some attr value updated',
            'another_attr': 'another attr value updated',
        }
        self.orm_meta_backend_instance.update(path=data['path'],
                                              update_data=update_data)
        meta_backend_object = self.orm_meta_backend_instance.get(
            path=data['path'])
        self.assertEqual(meta_backend_object['some_attr'],
                         update_data['some_attr'])
        self.assertEqual(meta_backend_object['another_attr'],
                         update_data['another_attr'])

    def test_delete__should_delete_model_instance_with_exact_path(self):
        self.orm_meta_backend_instance.model.objects.create(path='/file/one')
        self.orm_meta_backend_instance.model.objects.create(path='/file/two')
        self.assertEqual(self.orm_meta_backend_instance.model.objects.count(),
                         2)
        self.orm_meta_backend_instance.delete(path='/file/one')
        self.assertEqual(self.orm_meta_backend_instance.model.objects.count(),
                         1)
        obj = self.orm_meta_backend_instance.model.objects.all()[0]
        self.assertEqual(obj.path, '/file/two')

    def test_exists__should_return_true__if_object_with_exact_path_exists(
            self):
        path = '/file/one'
        self.orm_meta_backend_instance.model.objects.create(path=path)
        self.assertTrue(self.orm_meta_backend_instance.exists(path))

    def test_exists__should_return_false__if_object_with_exact_path_does_not_exist(
            self):
        path = '/file/one'
        self.orm_meta_backend_instance.model.objects.create(path=path)
        self.assertFalse(self.orm_meta_backend_instance.exists('/file/two'))
Exemplo n.º 2
0
 def setUp(self):
     self.orm_meta_backend_instance = ORMMetaBackend(
         model=ProxyStorageModel)
Exemplo n.º 3
0
class ORMMetaBackendTest(TestCase):
    def setUp(self):
        self.orm_meta_backend_instance = ORMMetaBackend(model=ProxyStorageModel)

    def test_create__should_create_model_instance_with_data(self):
        data = {
            'path': '/hello/world.txt',
            'some_attr': 'some attr value',
            'another_attr': 'another attr value',
        }
        self.orm_meta_backend_instance.create(data=data)
        self.assertEqual(self.orm_meta_backend_instance.model.objects.count(), 1)
        obj = self.orm_meta_backend_instance.model.objects.all()[0]
        self.assertEqual(obj.path, data['path'])
        self.assertEqual(obj.some_attr, data['some_attr'])
        self.assertEqual(obj.another_attr, data['another_attr'])

    def test_create__should_return_meta_backend_object(self):
        data = {
            'path': '/hello/world.txt',
            'some_attr': 'some attr value',
            'another_attr': 'another attr value',
        }
        meta_backend_object = self.orm_meta_backend_instance.create(data=data)
        self.assertIsInstance(meta_backend_object, MetaBackendObject)
        model_obj = self.orm_meta_backend_instance.model.objects.all()[0]
        self.assertEqual(model_obj.id, meta_backend_object.get('id'))
        self.assertEqual(model_obj.path, meta_backend_object.get('path'))
        self.assertEqual(model_obj.some_attr, meta_backend_object.get('some_attr'))
        self.assertEqual(model_obj.another_attr, meta_backend_object.get('another_attr'))

    def test_get__should_return_meta_backend_object(self):
        data = {
            'path': '/hello/world.txt',
            'some_attr': 'some attr value',
            'another_attr': 'another attr value',
        }
        self.orm_meta_backend_instance.create(data=data)
        meta_backend_object = self.orm_meta_backend_instance.get(path=data.get('path'))
        self.assertIsInstance(meta_backend_object, MetaBackendObject)
        model_obj = self.orm_meta_backend_instance.model.objects.all()[0]
        self.assertEqual(model_obj.id, meta_backend_object.get('id'))
        self.assertEqual(model_obj.path, meta_backend_object.get('path'))
        self.assertEqual(model_obj.some_attr, meta_backend_object.get('some_attr'))
        self.assertEqual(model_obj.another_attr, meta_backend_object.get('another_attr'))

    def test_get__should_raise_special_exception_if_object_does_not_exist(self):
        expected_message = '{0} matching query does not exist.'.format(
            self.orm_meta_backend_instance.model.__name__
        )
        caught_right_exception = False
        try:
            self.orm_meta_backend_instance.get(path='/some/not/existing/path')
        except MetaBackendObjectDoesNotExist as exc:
            message = str(exc)
            self.assertEqual(expected_message, message)
            caught_right_exception = True
        except Exception:
            pass
        msg = 'Meta backend\'s "get" method should raise MetaBackendObjectDoesNotExist if could not find object'
        self.assertTrue(caught_right_exception, msg)

    def test_update_should_update_data(self):
        data = {
            'path': '/hello/world.txt',
            'some_attr': 'some attr value',
            'another_attr': 'another attr value',
        }
        self.orm_meta_backend_instance.create(data=data)
        update_data = {
            'some_attr': 'some attr value updated',
            'another_attr': 'another attr value updated',
        }
        self.orm_meta_backend_instance.update(path=data['path'], update_data=update_data)
        meta_backend_object = self.orm_meta_backend_instance.get(path=data['path'])
        self.assertEqual(meta_backend_object['some_attr'], update_data['some_attr'])
        self.assertEqual(meta_backend_object['another_attr'], update_data['another_attr'])

    def test_delete__should_delete_model_instance_with_exact_path(self):
        self.orm_meta_backend_instance.model.objects.create(path='/file/one')
        self.orm_meta_backend_instance.model.objects.create(path='/file/two')
        self.assertEqual(self.orm_meta_backend_instance.model.objects.count(), 2)
        self.orm_meta_backend_instance.delete(path='/file/one')
        self.assertEqual(self.orm_meta_backend_instance.model.objects.count(), 1)
        obj = self.orm_meta_backend_instance.model.objects.all()[0]
        self.assertEqual(obj.path, '/file/two')

    def test_exists__should_return_true__if_object_with_exact_path_exists(self):
        path = '/file/one'
        self.orm_meta_backend_instance.model.objects.create(path=path)
        self.assertTrue(self.orm_meta_backend_instance.exists(path))

    def test_exists__should_return_false__if_object_with_exact_path_does_not_exist(self):
        path = '/file/one'
        self.orm_meta_backend_instance.model.objects.create(path=path)
        self.assertFalse(self.orm_meta_backend_instance.exists('/file/two'))
Exemplo n.º 4
0
 def setUp(self):
     self.orm_meta_backend_instance = ORMMetaBackend(model=ProxyStorageModel)
Exemplo n.º 5
0
from proxy_storage.storages.fallback import FallbackProxyStorageMixin
from proxy_storage.testutils import create_test_cases_for_proxy_storage

from tests_app.models import (
    ProxyStorageModelWithOriginalStorageName, )
from .base_test_cases import (
    TestFallbackToMongoFSMixin, )


class FileSystemProxyStorageWithFallbackToMongoFS(FallbackProxyStorageMixin,
                                                  ProxyStorageBase):
    pass


test_case_bases = [
    (TestFallbackToMongoFSMixin, TestCase),
]

meta_backend_instances = [
    ORMMetaBackend(model=ProxyStorageModelWithOriginalStorageName),
    MongoMetaBackend(database=MongoClient(
        'localhost',
        settings.MONGO_DATABASE_PORT)[settings.MONGO_DATABASE_NAME],
                     collection=settings.MONGO_META_BACKEND_COLLECTION_NAME)
]

# test simple proxy storage
locals().update(
    create_test_cases_for_proxy_storage(
        FileSystemProxyStorageWithFallbackToMongoFS, test_case_bases,
        meta_backend_instances))
Exemplo n.º 6
0
from proxy_storage.meta_backends.orm import ORMMetaBackend
from proxy_storage.meta_backends.mongo import MongoMetaBackend
from proxy_storage.testutils import create_test_cases_for_proxy_storage
from proxy_storage.storages.base import ProxyStorageBase

from tests_app.models import (
    ProxyStorageModelWithContentObjectField, )

from .base_test_cases import (ProxyStorageFileFieldTestMixin)


class ProxyStorageForResume(ProxyStorageBase):
    pass


test_case_bases = [
    (ProxyStorageFileFieldTestMixin, TestCase),
]

meta_backend_instances = [
    ORMMetaBackend(model=ProxyStorageModelWithContentObjectField),
    MongoMetaBackend(database=MongoClient(
        'localhost',
        settings.MONGO_DATABASE_PORT)[settings.MONGO_DATABASE_NAME],
                     collection=settings.MONGO_META_BACKEND_COLLECTION_NAME)
]

# test simple proxy storage
locals().update(
    create_test_cases_for_proxy_storage(ProxyStorageForResume, test_case_bases,
                                        meta_backend_instances))
Exemplo n.º 7
0
        self.content_file = ContentFile(self.content)
        self.file_full_path = os.path.join(self.temp_dir, self.file_name)
        self.proxy_storage.original_storage = FileSystemStorage(
            location=self.temp_dir)

    def tearDown(self):
        shutil.rmtree(self.temp_dir)


test_case_bases = [(TestExistsMixin, PrepareMixin, TestCase),
                   (TestSaveMixin, PrepareMixin, TestCase),
                   (TestDeleteMixin, PrepareMixin, TestCase),
                   (TestOpenMixin, PrepareMixin, TestCase)]

meta_backend_instances = [
    ORMMetaBackend(model=ProxyStorageModel),
    ORMMetaBackend(model=ProxyStorageModelWithContentObjectField),
    ORMMetaBackend(model=ProxyStorageModelWithOriginalStorageName),
    ORMMetaBackend(
        model=ProxyStorageModelWithContentObjectFieldAndOriginalStorageName),
    MongoMetaBackend(database=MongoClient(
        'localhost',
        settings.MONGO_DATABASE_PORT)[settings.MONGO_DATABASE_NAME],
                     collection=settings.MONGO_META_BACKEND_COLLECTION_NAME)
]

# test simple proxy storage
locals().update(
    create_test_cases_for_proxy_storage(SimpleFileSystemProxyStorage,
                                        test_case_bases,
                                        meta_backend_instances))
Exemplo n.º 8
0
from proxy_storage.meta_backends.mongo import MongoMetaBackend
from proxy_storage.storages.base import ProxyStorageBase
from proxy_storage.testutils import create_test_cases_for_proxy_storage

from tests_app.models import (
    ProxyStorageModel, )
from .base_test_cases import (
    TestMigrationToProxyStorageMixin, )


class FileSystemProxyStorage(ProxyStorageBase):
    pass


test_case_bases = [
    (TestMigrationToProxyStorageMixin, TestCase),
]

meta_backend_instances = [
    ORMMetaBackend(model=ProxyStorageModel),
    MongoMetaBackend(database=MongoClient(
        'localhost',
        settings.MONGO_DATABASE_PORT)[settings.MONGO_DATABASE_NAME],
                     collection=settings.MONGO_META_BACKEND_COLLECTION_NAME)
]

# test simple proxy storage
locals().update(
    create_test_cases_for_proxy_storage(FileSystemProxyStorage,
                                        test_case_bases,
                                        meta_backend_instances))
Exemplo n.º 9
0
class SimpleORMProxyStorage(ProxyStorageBase):
    original_storage = FileSystemStorage(location=settings.TEMP_DIR)
    meta_backend = ORMMetaBackend(model=ProxyStorageModel)