Пример #1
0
    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', file(join(storage_path, 'image.jpg')).read())
        storage.put_crypto(
            'image.jpg'
        )  # Write a file on the file storage containing the security key

        return application
Пример #2
0
 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)
Пример #3
0
 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)
Пример #4
0
 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()
Пример #5
0
 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()
Пример #6
0
 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)
Пример #7
0
 async 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)
     await storage.put(iurl, ibytes)
     await storage.put_crypto(iurl)
     got = await storage.get_crypto(iurl)
     expect(got).to_be_null()
Пример #8
0
 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)
Пример #9
0
 async 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)
     await storage.put(url, image_bytes)
     got = await storage.get(url)
     expect(got).not_to_be_null()
     expect(got).not_to_be_an_error()
Пример #10
0
 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()
Пример #11
0
 async 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)
     await storage.put(iurl, ibytes)
     got = await storage.get(iurl)
     expect(got).not_to_be_null()
     expect(got).not_to_be_an_error()
Пример #12
0
 async 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)
     await storage.put(url, image_bytes)
     got = await storage.get(url)
     expect(got).not_to_be_null()
     expect(got).not_to_be_an_error()
     expect(got).to_equal(image_bytes)
Пример #13
0
 def test_can_store_image_with_spaces(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()
     expect(got).to_equal(image_bytes)
Пример #14
0
 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')
Пример #15
0
 async 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)
     await storage.put(iurl, ibytes)
     await storage.put_detector_data(iurl, "some-data")
     got = await storage.get_detector_data(iurl)
     expect(got).not_to_be_null()
     expect(got).not_to_be_an_error()
     expect(got).to_equal("some-data")
Пример #16
0
 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')
Пример #17
0
 async 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)
     await storage.put(iurl, ibytes)
     await storage.put_crypto(iurl)
     got = await storage.get_crypto(iurl)
     expect(got).not_to_be_null()
     expect(got).not_to_be_an_error()
     expect(got).to_equal("ACME-SEC")
Пример #18
0
    async 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)
        await 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,
        ):
            await storage.put_crypto(iurl)
Пример #19
0
 async 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)
     await 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 = await storage.get(iurl)
     expect(got).to_be_null()
     expect(got).not_to_be_an_error()
Пример #20
0
    async 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")
        await storage.put(other_iurl.replace("999", "998"), ibytes)
        await storage.put(other_iurl, ibytes)

        got = await storage.get(other_iurl)
        expect(got).not_to_be_null()
        expect(got).not_to_be_an_error()
Пример #21
0
    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()
Пример #22
0
 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)
Пример #23
0
 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()
Пример #24
0
 async def test_getting_crypto_for_a_new_image_returns_none(self):
     iurl = self.get_image_url("image_9999.jpg")
     storage = FileStorage(self.context)
     got = await storage.get_crypto(iurl)
     expect(got).to_be_null()
Пример #25
0
 async def test_detector_returns_none_if_no_detector_data(self):
     iurl = self.get_image_url("image_10000.jpg")
     storage = FileStorage(self.context)
     got = await storage.get_detector_data(iurl)
     expect(got).to_be_null()