def test_serving_files_content_disposition(self): app = self.make_app() new_file = app.post('/create_file', params={'lang': 'ru'}).json uploaded_file = app.get(DepotManager.url_for('%(uploaded_to)s/%(last)s' % new_file)) content_disposition = uploaded_file.headers['Content-Disposition'] assert content_disposition == "inline;filename=Krupnyi;filename*=utf-8''%D0%9A%D1%80%D1%83%D0%BF%D0%BD%D1%8B%D0%B9", content_disposition new_file = app.post('/create_file', params={'lang': 'it'}).json uploaded_file = app.get(DepotManager.url_for('%(uploaded_to)s/%(last)s' % new_file)) content_disposition = uploaded_file.headers['Content-Disposition'] _, asciiname, uniname = content_disposition.split(';') assert asciiname == 'filename=aeiou', asciiname assert u_(unquote(uniname[17:])) == u_('àèìòù'), unquote(uniname[17:])
def test_serving_files_content_disposition(self): app = self.make_app() new_file = app.post('/create_file', params={'lang': 'ru'}).json uploaded_file = app.get(DepotManager.url_for('%(uploaded_to)s/%(last)s' % new_file)) content_disposition = uploaded_file.headers['Content-Disposition'] assert content_disposition == "inline;filename=\"Krupnyi\";filename*=utf-8''%D0%9A%D1%80%D1%83%D0%BF%D0%BD%D1%8B%D0%B9", content_disposition new_file = app.post('/create_file', params={'lang': 'it'}).json uploaded_file = app.get(DepotManager.url_for('%(uploaded_to)s/%(last)s' % new_file)) content_disposition = uploaded_file.headers['Content-Disposition'] _, asciiname, uniname = content_disposition.split(';') assert asciiname == 'filename="aeiou"', asciiname assert u_(unquote(uniname[17:])) == u_('àèìòù'), unquote(uniname[17:])
def test_serving_files_with_wsgifilewrapper(self): app = self.make_app(replace_wsgi_filewrapper=True) new_file = app.post('/create_file').json uploaded_file = app.get(DepotManager.url_for('%(uploaded_to)s/%(last)s' % new_file)) assert uploaded_file.body == FILE_CONTENT assert uploaded_file.request.environ['wsgi.file_wrapper'] is _FileIter
def test_public_url_gets_redirect(self): try: global S3Storage from depot.io.awss3 import S3Storage except ImportError: raise SkipTest('Boto not installed') env = os.environ access_key_id = env.get('AWS_ACCESS_KEY_ID') secret_access_key = env.get('AWS_SECRET_ACCESS_KEY') if access_key_id is None or secret_access_key is None: raise SkipTest('Amazon S3 credentials not available') PID = os.getpid() NODE = str(uuid.uuid1()).rsplit('-', 1)[-1] # Travis runs multiple tests concurrently default_bucket_name = 'filedepot-%s' % (access_key_id.lower(), ) cred = (access_key_id, secret_access_key) bucket_name = 'filedepot-testfs-%s-%s-%s' % (access_key_id.lower(), NODE, PID) DepotManager.configure('awss3', {'depot.backend': 'depot.io.awss3.S3Storage', 'depot.access_key_id': access_key_id, 'depot.secret_access_key': secret_access_key, 'depot.bucket': bucket_name}) DepotManager.set_default('awss3') app = self.make_app() new_file = app.post('/create_file').json file_path = DepotManager.url_for('%(uploaded_to)s/%(last)s' % new_file) uploaded_file = app.get(file_path) assert uploaded_file.body == FILE_CONTENT, uploaded_file
def test_serving_files(self): app = self.make_app() new_file = app.post('/create_file').json uploaded_file = app.get( DepotManager.url_for('%(uploaded_to)s/%(last)s' % new_file)) assert uploaded_file.body == FILE_CONTENT
def test_post_is_forwarded_to_app(self): app = self.make_app() new_file = app.post('/create_file').json file_path = DepotManager.url_for('%(uploaded_to)s/%(last)s' % new_file) uploaded_file = app.post(file_path, status=404) assert 'Not Found' in uploaded_file.status, uploaded_file
def test_headers_are_there(self): app = self.make_app() new_file = app.post('/create_file').json uploaded_file = app.get(DepotManager.url_for('%(uploaded_to)s/%(last)s' % new_file)) assert uploaded_file.headers['Content-Type'] == 'text/plain' assert 'ETag' in uploaded_file.headers assert 'Last-Modified' in uploaded_file.headers assert 'Expires' in uploaded_file.headers
def test_public_url_gets_redirect(self): app = self.make_app() new_file = app.post('/create_file').json file_path = DepotManager.url_for('%(uploaded_to)s/%(last)s' % new_file) uploaded_file = app.get(file_path, status=301) location = uploaded_file.headers['Location'] assert 'https://filedepot-testfs-' in location assert 's3.amazonaws.com' in location
def test_invalid_unmodified_header(self): app = self.make_app() new_file = app.post('/create_file').json uploaded_file = app.get(DepotManager.url_for('%(uploaded_to)s/%(last)s' % new_file)) unmodified_file = app.get('/depot/default/%(last)s' % new_file, headers=[('If-Modified-Since', 'HELLO WORLD')], status=400) assert 'Bad Request' in unmodified_file.status, unmodified_file
def test_caching_etag(self): app = self.make_app() new_file = app.post('/create_file').json uploaded_file = app.get(DepotManager.url_for('%(uploaded_to)s/%(last)s' % new_file)) etag = uploaded_file.headers['ETag'] unmodified_file = app.get('/depot/default/%(last)s' % new_file, headers=[('If-None-Match', etag)], status=304) assert 'Not Modified' in unmodified_file.status, unmodified_file
def test_caching_unmodified(self): app = self.make_app() new_file = app.post('/create_file').json uploaded_file = app.get(DepotManager.url_for('%(uploaded_to)s/%(last)s' % new_file)) last_modified = uploaded_file.headers['Last-Modified'] unmodified_file = app.get('/depot/default/%(last)s' % new_file, headers=[('If-Modified-Since', last_modified)], status=304) assert 'Not Modified' in unmodified_file.status, unmodified_file
def picture(self): if self.user.profile_pic: redirect(DepotManager.url_for(self.user.profile_pic.path)) else: redirect(url('/img/default_user.png'))
def test_serving_files(self): app = self.make_app() new_file = app.post('/create_file').json uploaded_file = app.get(DepotManager.url_for('%(uploaded_to)s/%(last)s' % new_file)) assert uploaded_file.body == FILE_CONTENT
def picture(self): redirect(DepotManager.url_for(self.user.profile_pic.path))