def test_expire_disabled_should_not_tell_when_expired(self): topic = Storage( Context(config=Config(RESULT_STORAGE_EXPIRATION_SECONDS=0))) key = { 'LastModified': (datetime.now(tzutc()) - timedelta(seconds=3601)), 'Body': 'foobar', } self.assertFalse(topic.is_expired(key))
def topic(self): self.conn = S3Connection() self.conn.create_bucket(s3_bucket) config = Config(RESULT_STORAGE_BUCKET=s3_bucket, RESULT_STORAGE_AWS_STORAGE_ROOT_PATH='tata') ctx = Context(config=config, server=get_server('ACME-SEC')) storage = Storage(ctx) return storage.normalize_path('toto')
def topic(self): self.conn = S3Connection() self.conn.create_bucket(s3_bucket) config = Config(TC_AWS_RESULT_STORAGE_BUCKET=s3_bucket, TC_AWS_RESULT_STORAGE_ROOT_PATH='tata') ctx = Context(config=config, server=get_server('ACME-SEC')) storage = Storage(ctx) return storage._normalize_path('toto')
def test_should_check_invalid_key(self): config = Config(TC_AWS_RESULT_STORAGE_BUCKET=s3_bucket, TC_AWS_RESULT_STORAGE_ROOT_PATH='tata') ctx = Context(config=config, server=get_server('ACME-SEC')) storage = Storage(ctx) topic = storage._normalize_path('toto') self.assertEqual(topic, "tata/toto")
def topic(self, callback): self.conn = S3Connection() self.conn.create_bucket(s3_bucket) config = Config(TC_AWS_RESULT_STORAGE_BUCKET=s3_bucket) ctx = Context(config=config, server=get_server('ACME-SEC')) ctx.request = Request ctx.request.url = 'my-image.jpg' storage = Storage(ctx) storage.put(IMAGE_BYTES, callback=callback)
def test_can_get_image(self): config = Config(TC_AWS_RESULT_STORAGE_BUCKET=s3_bucket) ctx = Context(config=config, server=get_server('ACME-SEC')) ctx.request = Request ctx.request.url = 'my-image-2.jpg' storage = Storage(ctx) yield storage.put(IMAGE_BYTES) topic = yield storage.get() self.assertEqual(topic.buffer, IMAGE_BYTES)
def topic(self): self.conn = S3Connection() self.conn.create_bucket(s3_bucket) config = Config(RESULT_STORAGE_BUCKET=s3_bucket) ctx = Context(config=config, server=get_server('ACME-SEC')) ctx.request = Request ctx.request.url = 'my-image.jpg' storage = Storage(ctx) path = storage.put(IMAGE_BYTES) return path
def test_can_store_image(self): config = Config(TC_AWS_RESULT_STORAGE_BUCKET=s3_bucket) ctx = Context(config=config, server=get_server('ACME-SEC')) ctx.request = Request ctx.request.url = 'foo/my-image.jpg' storage = Storage(ctx) yield storage.put(IMAGE_BYTES) client = botocore.session.get_session().create_client('s3') response = client.get_object(Bucket=s3_bucket, Key="foo/my-image.jpg") self.assertEqual(response['Body'].read(), IMAGE_BYTES)
def topic(self, callback): self.conn = S3Connection() self.conn.create_bucket(s3_bucket) config = Config(TC_AWS_RESULT_STORAGE_BUCKET=s3_bucket, TC_AWS_STORE_METADATA=True) ctx = Context(config=config, server=get_server('ACME-SEC')) ctx.headers = {'Content-Type': 'image/webp', 'Some-Other-Header': 'doge-header'} ctx.request = Request ctx.request.url = 'my-image-meta.jpg' storage = Storage(ctx) storage.put(IMAGE_BYTES) file_abspath = storage._normalize_path(ctx.request.url) storage.storage.get(file_abspath, callback=callback)
def topic(self): self.conn = S3Connection() self.conn.create_bucket(s3_bucket) config = Config(RESULT_STORAGE_BUCKET=s3_bucket, RESULT_STORAGE_S3_STORE_METADATA=True) ctx = Context(config=config, server=get_server('ACME-SEC')) ctx.request_handler = RequestHandler() ctx.request = Request ctx.request.url = 'my-image-meta.jpg' storage = Storage(ctx) storage.put(IMAGE_BYTES) file_abspath = storage.normalize_path(ctx.request.url) file_key = storage.storage.get_key(file_abspath) return file_key.content_type, file_key.metadata, file_key.read()
def topic(self): self.conn = S3Connection() self.conn.create_bucket(s3_bucket) config = Config(RESULT_STORAGE_BUCKET=s3_bucket, RESULT_STORAGE_S3_STORE_METADATA=True) ctx = Context(config=config, server=get_server('ACME-SEC')) ctx.headers = { 'Content-Type': 'image/webp', 'Some-Other-Header': 'doge-header' } ctx.request = Request ctx.request.url = 'my-image-meta.jpg' storage = Storage(ctx) storage.put(IMAGE_BYTES) file_abspath = storage.normalize_path(ctx.request.url) file_key = storage.storage.get_key(file_abspath) return file_key.content_type, file_key.metadata, file_key.read()
def test_can_store_image_randomly(self): config = Config(TC_AWS_RESULT_STORAGE_BUCKET=s3_bucket, TC_AWS_RANDOMIZE_KEYS=True) ctx = Context(config=config, server=get_server('ACME-SEC')) ctx.request = Request ctx.request.url = 'foo/my-image.jpg' storage = Storage(ctx) yield storage.put(IMAGE_BYTES) expected_path = '/'.join([ sha1("foo/my-image.jpg".encode('utf-8')).hexdigest(), 'foo/my-image.jpg' ]) client = botocore.session.get_session().create_client('s3') response = client.get_object(Bucket=s3_bucket, Key=expected_path) self.assertEqual(response['Body'].read(), IMAGE_BYTES)
def test_can_get_image_with_metadata(self): config = Config(TC_AWS_RESULT_STORAGE_BUCKET=s3_bucket, TC_AWS_STORE_METADATA=True) ctx = Context(config=config, server=get_server('ACME-SEC')) ctx.headers = { 'Content-Type': 'image/webp', 'Some-Other-Header': 'doge-header' } ctx.request = Request ctx.request.url = 'my-image-meta.jpg' storage = Storage(ctx) yield storage.put(IMAGE_BYTES) file_abspath = storage._normalize_path(ctx.request.url) topic = yield storage.get(file_abspath) self.assertIn('Some-Other-Header', topic.metadata['Metadata']) self.assertEqual(topic.metadata['Metadata']['Content-Type'], 'image/webp') self.assertEqual(topic.buffer, IMAGE_BYTES)
def topic(self): return Storage( Context(config=Config( RESULT_STORAGE_EXPIRATION_SECONDS=0)))
def expired_enabled(self): return Storage( Context(config=Config(RESULT_STORAGE_EXPIRATION_SECONDS=3600)))