def test_result_response_with_none(svc_client): """Test result response with None value.""" response = result_response(DatasetListResponseRPC(), None).json assert response assert {'result'} == set(response.keys()) assert response['result'] is None
def test_result_response_with_empty_tuple(svc_client): """Test result response with empty value.""" response = result_response(DatasetListResponseRPC(), ()).json assert response assert {'result'} == set(response.keys()) assert {} == response['result']
class DatasetsListCtrl(ServiceCtrl, ReadOperationMixin): """Controller for datasets list endpoint.""" REQUEST_SERIALIZER = DatasetListRequest() RESPONSE_SERIALIZER = DatasetListResponseRPC() def __init__(self, cache, user_data, request_data): """Construct a datasets list controller.""" self.ctx = DatasetsListCtrl.REQUEST_SERIALIZER.load(request_data) super(DatasetsListCtrl, self).__init__(cache, user_data, request_data) @property def context(self): """Controller operation context.""" return self.ctx def renku_op(self): """Renku operation for the controller.""" return list_datasets() def to_response(self): """Execute controller flow and serialize to service response.""" self.ctx["datasets"] = [] if "project_id" in self.ctx: self.ctx["datasets"] = self.local() elif "git_url" in self.ctx: self.ctx["datasets"] = self.remote() return result_response(DatasetsListCtrl.RESPONSE_SERIALIZER, self.ctx)
def test_result_response_with_empty_dict(svc_client): """Test result response with empty value.""" response = result_response(DatasetListResponseRPC(), {}).json assert response assert {"result"} == set(response.keys()) assert {} == response["result"]
def test_result_response(svc_client): """Test result response utility.""" ctx = {'datasets': [{'name': 'my-dataset'}]} response = result_response(DatasetListResponseRPC(), ctx).json assert response assert {'result'} == set(response.keys()) assert {'datasets'} == set(response['result'].keys()) assert ctx == response['result']
def list_datasets_view(user, cache): """List all datasets in project.""" ctx = DatasetListRequest().load(request.args) project = cache.get_project(cache.ensure_user(user), ctx['project_id']) with chdir(project.abs_path): ctx['datasets'] = list_datasets() return result_response(DatasetListResponseRPC(), ctx)
def list_datasets_view(user, cache): """List all datasets in project.""" ctx = DatasetListRequest().load(request.args) project = cache.get_project(cache.ensure_user(user), ctx['project_id']) if not project.abs_path.exists(): return error_response(INVALID_PARAMS_ERROR_CODE, 'invalid project_id argument') with chdir(project.abs_path): ctx['datasets'] = list_datasets() return result_response(DatasetListResponseRPC(), ctx)
def test_result_response(svc_client): """Test result response utility.""" ctx = {"datasets": [{"name": "my-dataset"}]} response = result_response(DatasetListResponseRPC(), ctx).json assert response assert {"result"} == set(response.keys()) assert {"datasets"} == set(response["result"].keys()) expected = ctx["datasets"][0] received = response["result"]["datasets"][0] assert expected["name"] == received["name"]
def list_datasets_view(user, cache): """List all datasets in project.""" req = DatasetListRequest().load(request.args) project = cache.get_project(user, req['project_id']) project_path = make_project_path(user, project) if not project_path: return jsonify( error={ 'code': INVALID_PARAMS_ERROR_CODE, 'reason': 'invalid project_id argument', }) with chdir(project_path): datasets = [ DatasetDetails().load(ds, unknown=EXCLUDE) # TODO: fix core interface to address this issue (add ticket ref) for ds in json.loads(dataset_parent(None, 'data', 'json-ld')) ] response = DatasetListResponse().load({'datasets': datasets}) return jsonify(DatasetListResponseRPC().load({'result': response}))