def get_app(self): cfg = Config(SECURITY_KEY='MYKEY') cfg.LOADER = "thumbor.loaders.file_loader" cfg.FILE_LOADER_ROOT_PATH = storage_path cfg.ALLOW_UNSAFE_URL = False cfg.ALLOW_OLD_URLS = True cfg.STORES_CRYPTO_KEY_FOR_EACH_IMAGE = True importer = Importer(cfg) importer.import_modules() server = ServerParameters(8891, 'localhost', 'thumbor.conf', None, 'info', None) server.security_key = 'MYKEY' ctx = Context(server, cfg, importer) application = ThumborServiceApp(ctx) storage = FileStorage(Context(config=cfg, server=server)) # Store fixtures (image.jpg and image.txt) into the file storage storage.put('image.jpg', open(join(storage_path, 'image.jpg')).read()) storage.put_crypto( 'image.jpg' ) # Write a file on the file storage containing the security key return application
def topic(self): config = Config( FILE_STORAGE_ROOT_PATH="/tmp/thumbor/file_storage/") storage = FileStorage( Context(config=config, server=get_server('ACME-SEC'))) storage.put(IMAGE_URL % 1, IMAGE_BYTES) return storage.get(IMAGE_URL % 1)
def topic(self): config = Config( FILE_STORAGE_ROOT_PATH="/tmp/thumbor/file_storage/", STORES_CRYPTO_KEY_FOR_EACH_IMAGE=True) storage = FileStorage( Context(config=config, server=get_server('ACME-SEC'))) return storage.get_crypto(IMAGE_URL % 9999)
def test_can_get_if_expire_set_to_none(self): iurl = self.get_image_url('image_2.jpg') ibytes = self.get_image_bytes('image.jpg') storage = FileStorage(self.context) storage.put(iurl, ibytes) got = yield storage.get(iurl) expect(got).not_to_be_null() expect(got).not_to_be_an_error()
def test_can_store_image_should_be_in_catalog(self): url = self.get_image_url('image.jpg') image_bytes = self.get_image_bytes('image.jpg') storage = FileStorage(self.context) storage.put(url, image_bytes) got = yield storage.get(url) expect(got).not_to_be_null() expect(got).not_to_be_an_error()
def topic(self): config = Config( FILE_STORAGE_ROOT_PATH="/tmp/thumbor/file_storage/", STORES_CRYPTO_KEY_FOR_EACH_IMAGE=True) storage = FileStorage( Context(config=config, server=get_server(''))) storage.put(IMAGE_URL % 3, IMAGE_BYTES) storage.put_crypto(IMAGE_URL % 3)
def topic(self): config = Config( FILE_STORAGE_ROOT_PATH="/tmp/thumbor/file_storage/%s" % random.randint(1, 10000000)) storage = FileStorage( Context(config=config, server=get_server('ACME-SEC'))) storage.ensure_dir(config.FILE_STORAGE_ROOT_PATH) return exists(config.FILE_STORAGE_ROOT_PATH)
def test_can_store_image_with_spaces_encoded(self): url = self.get_image_url('image%20.jpg') image_bytes = self.get_image_bytes('image .jpg') storage = FileStorage(self.context) storage.put(url, image_bytes) got = yield storage.get(url) expect(got).not_to_be_null() expect(got).not_to_be_an_error() expect(got).to_equal(image_bytes)
def test_should_be_an_error(self): iurl = self.get_image_url('image_3.jpg') ibytes = self.get_image_bytes('image.jpg') storage = FileStorage(self.context) storage.put(iurl, ibytes) with expect.error_to_happen( RuntimeError, message="STORES_CRYPTO_KEY_FOR_EACH_IMAGE can't be True if no SECURITY_KEY specified" ): storage.put_crypto(iurl)
def test_should_be_an_error(self): iurl = self.get_image_url('image_3.jpg') ibytes = self.get_image_bytes('image.jpg') storage = FileStorage(self.context) storage.put(iurl, ibytes) msg = "STORES_CRYPTO_KEY_FOR_EACH_IMAGE can't be True if no SECURITY_KEY specified" with expect.error_to_happen( RuntimeError, message=msg, ): storage.put_crypto(iurl)
def test_cannot_get_expired_1_day_old_image(self): iurl = self.get_image_url('image_2.jpg') ibytes = self.get_image_bytes('image.jpg') storage = FileStorage(self.context) storage.put(iurl, ibytes) current_timestamp = (datetime.utcnow() - datetime(1970, 1, 1)).total_seconds() new_mtime = current_timestamp - 60 * 60 * 24 with mock.patch('thumbor.storages.file_storage.getmtime', return_value=new_mtime): got = yield storage.get(iurl) expect(got).to_be_null() expect(got).not_to_be_an_error()
def test_cannot_get_expired_1_day_old_image(self): iurl = self.get_image_url('image_2.jpg') ibytes = self.get_image_bytes('image.jpg') storage = FileStorage(self.context) storage.put(iurl, ibytes) current_timestamp = ( datetime.utcnow() - datetime(1970, 1, 1)).total_seconds() new_mtime = current_timestamp - 60 * 60 * 24 with mock.patch( 'thumbor.storages.file_storage.getmtime', return_value=new_mtime): got = yield storage.get(iurl) expect(got).to_be_null() expect(got).not_to_be_an_error()
def topic(self): config = Config(FILE_STORAGE_ROOT_PATH="/tmp/thumbor/file_storage/", STORES_CRYPTO_KEY_FOR_EACH_IMAGE=True) storage = FileStorage(Context(config=config, server=get_server('ACME-SEC'))) storage.put(IMAGE_URL % 6, IMAGE_BYTES) storage.put_crypto(IMAGE_URL % 6) return storage.get_crypto(IMAGE_URL % 6)
def get_app(self): cfg = Config(SECURITY_KEY='MYKEY') cfg.LOADER = "thumbor.loaders.file_loader" cfg.FILE_LOADER_ROOT_PATH = storage_path cfg.ALLOW_UNSAFE_URL = False cfg.ALLOW_OLD_URLS = True cfg.STORES_CRYPTO_KEY_FOR_EACH_IMAGE = True importer = Importer(cfg) importer.import_modules() server = ServerParameters(8891, 'localhost', 'thumbor.conf', None, 'info', None) server.security_key = 'MYKEY' ctx = Context(server, cfg, importer) application = ThumborServiceApp(ctx) storage = FileStorage(Context(config=cfg, server=server)) # Store fixtures (image.jpg and image.txt) into the file storage storage.put('image.jpg', open(join(storage_path, 'image.jpg')).read()) storage.put_crypto('image.jpg') # Write a file on the file storage containing the security key return application
def test_does_not_store_if_config_says_not_to(self): iurl = self.get_image_url('image_5.jpg') ibytes = self.get_image_bytes('image.jpg') storage = FileStorage(self.context) storage.put(iurl, ibytes) storage.put_crypto(iurl) got = yield storage.get_crypto(iurl) expect(got).to_be_null()
def get_app(self): cfg = Config(SECURITY_KEY="MYKEY") cfg.LOADER = "thumbor.loaders.file_loader" cfg.FILE_LOADER_ROOT_PATH = storage_path cfg.ALLOW_UNSAFE_URL = False cfg.ALLOW_OLD_URLS = True cfg.STORES_CRYPTO_KEY_FOR_EACH_IMAGE = True importer = Importer(cfg) importer.import_modules() server = ServerParameters(8891, "localhost", "thumbor.conf", None, "info", None) server.security_key = "MYKEY" ctx = Context(server, cfg, importer) application = ThumborServiceApp(ctx) logger.exception = Mock() storage = FileStorage(Context(config=cfg, server=server)) # Store fixtures (image.jpg and image.txt) into the file storage storage.put_crypto("image.jpg") # Write a file on the file storage containing the security key return application
def test_detector_can_store_detector_data(self): iurl = self.get_image_url('image_7.jpg') ibytes = self.get_image_bytes('image.jpg') storage = FileStorage(self.context) storage.put(iurl, ibytes) storage.put_detector_data(iurl, 'some-data') got = yield storage.get_detector_data(iurl) expect(got).not_to_be_null() expect(got).not_to_be_an_error() expect(got).to_equal('some-data')
def test_can_store_crypto(self): iurl = self.get_image_url('image_6.jpg') ibytes = self.get_image_bytes('image.jpg') storage = FileStorage(self.context) storage.put(iurl, ibytes) storage.put_crypto(iurl) got = yield storage.get_crypto(iurl) expect(got).not_to_be_null() expect(got).not_to_be_an_error() expect(got).to_equal('ACME-SEC')
def test_can_store_images_in_same_folder(self): iurl = self.get_image_url('image_999.jpg') other_iurl = iurl.replace('/some/', '/some_other/') root_path = join(self.config.FILE_STORAGE_ROOT_PATH, dirname(other_iurl)) if exists(root_path): shutil.rmtree(root_path) storage = FileStorage(self.context) ibytes = self.get_image_bytes('image.jpg') storage.put(other_iurl.replace('999', '998'), ibytes) storage.put(other_iurl, ibytes) got = yield storage.get(other_iurl) expect(got).not_to_be_null() expect(got).not_to_be_an_error()
os.unlink(cachefile) print "\tRemoved" else: print "\tNot in cache" if (len(sys.argv) != 2): print 'Usage: ' + sys.argv[0] + ' url/file' exit(1) server_parameters = get_server_parameters() lookup_paths = ['/etc/'] config = Config.load(server_parameters.config_path, conf_name='thumbor.conf', lookup_paths=lookup_paths) importer = None context = Context(server=server_parameters, config=config, importer=importer) storage = Storage(context) if os.path.exists(sys.argv[1]): with open(sys.argv[1]) as f: for url in f: flush(url.rstrip()) else: flush(sys.argv[1]) print 'All cache files removed'
def test_detector_returns_none_if_no_detector_data(self): iurl = self.get_image_url('image_10000.jpg') storage = FileStorage(self.context) got = yield storage.get_detector_data(iurl) expect(got).to_be_null()
def topic(self): config = Config( FILE_STORAGE_ROOT_PATH="/tmp/thumbor/file_storage/") storage = FileStorage( Context(config=config, server=get_server('ACME-SEC'))) return storage.get_detector_data(IMAGE_URL % 10000)
def test_creates_root_path_if_none_found(self): storage = FileStorage(self.context) storage.ensure_dir(self.config.FILE_STORAGE_ROOT_PATH) expect(exists(self.config.FILE_STORAGE_ROOT_PATH)).to_be_true()
def test_getting_crypto_for_a_new_image_returns_none(self): iurl = self.get_image_url('image_9999.jpg') storage = FileStorage(self.context) got = yield storage.get_crypto(iurl) expect(got).to_be_null()
def topic(self): config = Config(FILE_STORAGE_ROOT_PATH="/tmp/thumbor/file_storage/") storage = FileStorage(Context(config=config, server=get_server('ACME-SEC'))) storage.put(IMAGE_URL % 5, IMAGE_BYTES) storage.put_crypto(IMAGE_URL % 5) return storage.get_crypto(IMAGE_URL % 5)
def topic(self): config = Config(FILE_STORAGE_ROOT_PATH="/tmp/thumbor/file_storage/") storage = FileStorage(Context(config=config, server=get_server('ACME-SEC'))) return storage.get_detector_data(IMAGE_URL % 10000)
def topic(self): config = Config(FILE_STORAGE_ROOT_PATH="/tmp/thumbor/file_storage/%s" % random.randint(1, 10000000)) storage = FileStorage(Context(config=config, server=get_server('ACME-SEC'))) storage.ensure_dir(config.FILE_STORAGE_ROOT_PATH) return exists(config.FILE_STORAGE_ROOT_PATH)
def topic(self): config = Config(FILE_STORAGE_ROOT_PATH="/tmp/thumbor/file_storage/", STORAGE_EXPIRATION_SECONDS=None) storage = FileStorage(Context(config=config, server=get_server('ACME-SEC'))) storage.put(IMAGE_URL % 2, IMAGE_BYTES) return storage.get(IMAGE_URL % 2)
async def test_creates_root_path_if_none_found(self): storage = FileStorage(self.context) storage.ensure_dir(self.config.FILE_STORAGE_ROOT_PATH) expect(exists(self.config.FILE_STORAGE_ROOT_PATH)).to_be_true()