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']
Example #3
0
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)
Example #4
0
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']
Example #6
0
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)
Example #7
0
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)
Example #8
0
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"]
Example #9
0
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}))