def test_rrs_put(self): with mockup_s3_server(TEST_BUCKET) as (server, uri): StoreManager.register( 's3', functools.partial(create_s3_store, base_url=uri), default=True ) class Thumbnail(BaseThumbnail): __reproducible__ = True class Image(BaseImage): __thumbnail_type__ = Thumbnail class Person(self.Base): __tablename__ = 'person' id = Column(Integer, primary_key=True) image = Column(Image.as_mutable(Json)) session = self.create_all_and_get_session() person1 = Person() self.assertIsNone(person1.image) with StoreManager(session): person1 = Person() person1.image = Image.create_from(self.dog_jpeg) self.assertIsInstance(person1.image, Image) thumbnail = person1.image.get_thumbnail( width=100, auto_generate=True ) self.assertIsInstance(thumbnail, Thumbnail) self.assertTrue(thumbnail.reproducible, True)
def test_cdn_url_with_prefix(self): prefix = 'media' cdn_url = 'http//test.sqlalchemy-media.com' with mockup_s3_server(TEST_BUCKET) as (server, uri): StoreManager.register( 's3', functools.partial( create_s3_store, prefix=prefix, base_url=uri, cdn_url=cdn_url ), default=True ) class Person(self.Base): __tablename__ = 'person' id = Column(Integer, primary_key=True) file = Column(File.as_mutable(Json)) session = self.create_all_and_get_session() person1 = Person() self.assertIsNone(person1.file) sample_content = b'Simple text.' with StoreManager(session): person1 = Person() person1.file = File.create_from(io.BytesIO(sample_content), content_type='text/plain', extension='.txt') self.assertIsInstance(person1.file, File) self.assertEqual(person1.file.locate(), '%s/%s/%s?_ts=%s' % ( cdn_url, prefix, person1.file.path, person1.file.timestamp) )
def test_public_base_url_strip(self): with mockup_s3_server(TEST_BUCKET) as (server, uri): base_url = '%s/' % uri StoreManager.register( 's3', functools.partial(create_s3_store, base_url=base_url), default=True ) class Person(self.Base): __tablename__ = 'person' id = Column(Integer, primary_key=True) file = Column(File.as_mutable(Json)) session = self.create_all_and_get_session() person1 = Person() self.assertIsNone(person1.file) sample_content = b'Simple text.' with StoreManager(session): person1 = Person() person1.file = File.create_from(io.BytesIO(sample_content), content_type='text/plain', extension='.txt') self.assertIsInstance(person1.file, File) self.assertEqual(person1.file.locate(), '%s%s?_ts=%s' % ( base_url, person1.file.path, person1.file.timestamp))
def test_public_base_url_strip(self): public_base_url = 'http://test.sqlalchemy.media/' StoreManager.register( 's3', lambda: _get_s3_store(public_base_url=public_base_url), default=True) class Person(self.Base): __tablename__ = 'person' id = Column(Integer, primary_key=True) file = Column(File.as_mutable(Json)) session = self.create_all_and_get_session() person1 = Person() self.assertIsNone(person1.file) sample_content = b'Simple text.' with StoreManager(session): person1 = Person() person1.file = File.create_from(io.BytesIO(sample_content), content_type='text/plain', extension='.txt') self.assertIsInstance(person1.file, File) self.assertEqual( person1.file.locate(), '%s/%s?_ts=%s' % (public_base_url.rstrip('/'), person1.file.path, person1.file.timestamp))
def test_prefix(self): prefix = 'test' StoreManager.register('s3', lambda: _get_s3_store(prefix=prefix), default=True) class Person(self.Base): __tablename__ = 'person' id = Column(Integer, primary_key=True) file = Column(File.as_mutable(Json)) session = self.create_all_and_get_session() person1 = Person() self.assertIsNone(person1.file) sample_content = b'Simple text.' with StoreManager(session): person1 = Person() person1.file = File.create_from(io.BytesIO(sample_content), content_type='text/plain', extension='.txt') self.assertIsInstance(person1.file, File) self.assertEqual( person1.file.locate(), '%s/%s/%s?_ts=%s' % (TEST_SERVER_URL, prefix, person1.file.path, person1.file.timestamp))
def setUp(self): StoreManager.register('dummy', DummyStore, default=True)