def test_load_exceptions(self, data_folder, upload): remove(upload.path) with raises(IOError): Upload.load(data_folder, USER_ID, upload.id) remove(join(upload.folder, 'name.txt')) with raises(IOError): Upload.load(data_folder, USER_ID, upload.id)
def test_spawn_random_folder(self, data_folder): with raises(BadPath): Upload.spawn_folder(data_folder, ID_LENGTH, owner_id='../1') folder = Upload.spawn_folder(data_folder, ID_LENGTH, USER_ID) assert len(basename(folder)) == ID_LENGTH assert basename(dirname(folder)) == str(USER_ID) folder = Upload.spawn_folder(data_folder, ID_LENGTH) assert len(basename(folder)) == ID_LENGTH assert basename(dirname(folder)) == 'anonymous'
def test_spawn_enumerated_folder(self, data_folder): with raises(IOError): Upload.spawn_folder(data_folder, owner_id='../1') folder = Upload.spawn_folder(data_folder, owner_id=USER_ID) assert basename(folder) == '1' assert basename(dirname(folder)) == str(USER_ID) folder = Upload.spawn_folder(data_folder) assert basename(folder) == '1' assert basename(dirname(folder)) == 'anonymous'
def test_get_from(self, config, uploads_request, upload): config.testing_securitypolicy(userid=USER_ID, permissive=False) with raises(HTTPBadRequest): Upload.get_from(uploads_request) uploads_request.params['upload_id'] = 'x' with raises(HTTPNotFound): Upload.get_from(uploads_request) uploads_request.params['upload_id'] = upload.id x = Upload.get_from(uploads_request) assert x.name == upload.name assert x.path == upload.path
def test_save_from(self, uploads_request): param_name = 'files[]' with raises(HTTPBadRequest): Upload.save_from(uploads_request, param_name) uploads_request.POST[param_name] = 'x' with raises(HTTPBadRequest): Upload.save_from(uploads_request, param_name) uploads_request.POST[param_name] = prepare_field_storage(NAME, CONTENT) x = Upload.save_from(uploads_request, param_name) assert x.name == NAME assert open(x.path, 'rt').read() == CONTENT
def test_accept_upload_id( self, result_request, tool_definition, data_folder): tool_definition['argument_names'] = ('x_path',) # Prepare upload_folder upload = Upload(id='xyz', owner_id=0) upload_folder = make_folder(upload.get_folder(data_folder)) open(join(upload_folder, 'raw.txt'), 'wt') open(join(upload_folder, 'name.txt'), 'wt') # Use bad upload_id raw_arguments = {'x': 'a'} with raises(HTTPBadRequest) as e: result_request.prepare_arguments(tool_definition, raw_arguments) assert e.value.detail['x'] == 'invalid' # Use upload_id that does not have expected data_type raw_arguments = {'x': 'xyz'} with raises(HTTPBadRequest) as e: result_request.prepare_arguments(tool_definition, raw_arguments) assert e.value.detail['x'] == 'invalid' # Use upload_id that has expected data_type file_name = StringType.get_file_name() open(join(upload_folder, file_name), 'wt').write('whee') result = result_request.prepare_arguments( tool_definition, raw_arguments) assert open(result.arguments['x_path']).read() == 'whee'
def test_accept_upload_id(self, result_request, tool_definition, data_folder): tool_definition['argument_names'] = ('x_path', ) # Prepare upload_folder upload = Upload(id='xyz', owner_id=0) upload_folder = make_folder(upload.get_folder(data_folder)) open(join(upload_folder, 'raw.txt'), 'wt') open(join(upload_folder, 'name.txt'), 'wt') # Use bad upload_id raw_arguments = {'x': 'a'} with raises(HTTPBadRequest) as e: result_request.prepare_arguments(tool_definition, raw_arguments) assert e.value.detail['x'] == 'invalid' # Use upload_id that does not have expected data_type raw_arguments = {'x': 'xyz'} with raises(HTTPBadRequest) as e: result_request.prepare_arguments(tool_definition, raw_arguments) assert e.value.detail['x'] == 'invalid' # Use upload_id that has expected data_type file_name = StringType.get_file_name() open(join(upload_folder, file_name), 'wt').write('whee') result = result_request.prepare_arguments(tool_definition, raw_arguments) assert open(result.arguments['x_path']).read() == 'whee'
def assert_upload(self, request): request.POST['files[]'] = prepare_field_storage(NAME, CONTENT) d = receive_file(request) upload = Upload.get_from(request, d['upload_id']) assert upload.name == NAME assert open(upload.path, 'rt').read() == CONTENT
def upload(data_folder): return Upload.save(data_folder, USER_ID, ID_LENGTH, NAME, CONTENT)
def test_get_folder(self, data_folder): record_id = 100 with raises(BadPath): Upload(id=record_id, owner_id='../1').get_folder(data_folder) folder = Upload(id=record_id, owner_id=USER_ID).get_folder(data_folder) assert basename(folder) == str(record_id)
def test_get_user_folder(self, data_folder): with raises(BadPath): Upload.get_user_folder(data_folder, owner_id='../1') user_folder = Upload.get_user_folder(data_folder, USER_ID) assert basename(user_folder) == str(USER_ID)
def test_spawn(self, data_folder): x = Upload.spawn(data_folder, owner_id=USER_ID) assert basename(x.folder) == '1' assert basename(dirname(x.folder)) == str(USER_ID) assert x.owner_id == USER_ID
def test_save(self, data_folder): x = Upload.save(data_folder, USER_ID, ID_LENGTH, NAME, CONTENT) assert x.name == NAME assert open(x.path, 'rt').read() == CONTENT