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'))
def setUp(self): self.orm_meta_backend_instance = ORMMetaBackend( model=ProxyStorageModel)
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'))
def setUp(self): self.orm_meta_backend_instance = ORMMetaBackend(model=ProxyStorageModel)
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))
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))
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))
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))
class SimpleORMProxyStorage(ProxyStorageBase): original_storage = FileSystemStorage(location=settings.TEMP_DIR) meta_backend = ORMMetaBackend(model=ProxyStorageModel)