Пример #1
0
def test_remove_entry_permission(
    new_folder_in_home, new_dataset_in_new_folder_in_home, new_user
):
    models_controller._change_connected_user(new_user)
    _dataset = new_dataset_in_new_folder_in_home
    _folder_in_home = new_folder_in_home

    # Update a log access on this folder
    endpoint.create_or_update_entry_access_log(_folder_in_home.id)

    access_logs = get_dict_from_response_jsonify(
        endpoint.get_entry_access_logs(_folder_in_home.id)
    )

    assert len(access_logs) > 0

    # TODO: We should not to have to format this
    formatted_access_logs = map(
        lambda access_log: {
            "entry_id": access_log["entry"]["id"],
            "user_id": access_log["user_id"],
        },
        access_logs,
    )

    endpoint.accessLogs_remove(accessLogsToRemove=formatted_access_logs)

    # Retrieve the dataset, which should not contain a parent anymore now
    parents = get_dict_from_response_jsonify(endpoint.get_dataset(_dataset.id))[
        "folders"
    ]

    assert len(parents) == 0
Пример #2
0
def test_no_parents_access(new_dataset_in_new_folder_in_home, new_user):
    """Check that a different user from the owner has no access to the parent's folders"""
    models_controller._change_connected_user(new_user)
    _dataset = new_dataset_in_new_folder_in_home
    parents = get_dict_from_response_jsonify(endpoint.get_dataset(_dataset.id))[
        "folders"
    ]
    assert len(parents) == 0
Пример #3
0
def test_get_dataset_two_ways(session: SessionBase, new_dataset):
    import werkzeug.exceptions

    dataset_id = new_dataset.id

    # test fetch by dataset version id
    # passing dataset in as "x" because it is unused and using that assumption when making urls in taiga1 redirect and taigr and taigapy
    ds = get_data_from_flask_jsonify(endpoint.get_dataset(dataset_id))
    assert ds["id"] == dataset_id

    # test alternative mode where we provide a permaname and a version
    ds = get_data_from_flask_jsonify(endpoint.get_dataset(dataset_id))
    assert ds["id"] == dataset_id

    # test fetching non-existant dataset results in 404
    with pytest.raises(werkzeug.exceptions.NotFound):
        endpoint.get_dataset("invalid")
Пример #4
0
def test_parent_visited_access(
    new_folder_in_home, new_dataset_in_new_folder_in_home, new_user
):
    """Check that if not owner has visited the parent folder of dataset,
    we have it in the parents list of the dataset"""
    models_controller._change_connected_user(new_user)
    _dataset = new_dataset_in_new_folder_in_home
    _folder_in_home = new_folder_in_home

    # Update a log access on this folder
    endpoint.create_or_update_entry_access_log(_folder_in_home.id)

    # Retrieve the dataset, which should contains a parent now
    parents = get_dict_from_response_jsonify(endpoint.get_dataset(_dataset.id))[
        "folders"
    ]

    assert len(parents) == 1
Пример #5
0
def test_dataset_endpoints_on_virtual_dataset(session: SessionBase):
    dataset1 = _create_dataset_with_a_file()
    data_file_1 = dataset1.dataset_versions[0].datafiles[0]
    data_file_1_label = "{}.1/datafile".format(dataset1.permaname)
    folder = models_controller.add_folder(
        "folder", models_controller.Folder.FolderType.folder, "folder desc"
    )
    folder_id = folder.id

    vdatafile_name = "alias"
    vdataset = _create_dataset_with_a_virtual_file(
        folder_id=folder_id, files=[(vdatafile_name, data_file_1.id)]
    )
    vdataset_id = vdataset.id

    folder_contents = get_data_from_flask_jsonify(endpoint.get_folder(folder.id))

    assert len(folder_contents["entries"]) == 1
    assert folder_contents["entries"][0]["type"] == "dataset"

    # verify that get_dataset accomodates virtual_dataset_ids the same as real datasets
    dataset = get_data_from_flask_jsonify(endpoint.get_dataset(vdataset_id))
    assert dataset["name"] == "virtual"
    assert len(dataset["versions"]) == 1

    vdataset_permaname = dataset["permanames"][0]
    vdataset_version_id = dataset["versions"][0]["id"]

    # verify get_datasets is also sane
    datasets = get_data_from_flask_jsonify(
        endpoint.get_datasets(dict(datasetIds=[vdataset_id]))
    )
    assert len(datasets) == 1

    # make sure we can get it by permaname too
    dataset = get_data_from_flask_jsonify(endpoint.get_dataset(vdataset_permaname))
    assert dataset["name"] == "virtual"
    assert len(dataset["versions"]) == 1

    # run through all the dataset endpoints and just make sure we don't get any exceptions
    get_data_from_flask_jsonify(endpoint.get_dataset_last(vdataset_id))
    get_data_from_flask_jsonify(
        endpoint.update_dataset_name(vdataset_id, {"name": "new name"})
    )
    get_data_from_flask_jsonify(
        endpoint.update_dataset_description(
            vdataset_id, {"description": "new description"}
        )
    )
    dataset_version = get_data_from_flask_jsonify(
        endpoint.get_dataset_version(vdataset_version_id)
    )
    assert len(dataset_version["datafiles"]) == 1
    datafile = dataset_version["datafiles"][0]
    assert datafile["name"] == vdatafile_name
    assert datafile["type"] == "Raw"
    assert datafile["underlying_file_id"] == data_file_1_label

    # skipping get_dataset_versions because I don't know what uses it
    # endpoint.get_dataset_versions()
    get_data_from_flask_jsonify(
        endpoint.get_dataset_version_from_dataset(vdataset_id, vdataset_version_id)
    )
    get_data_from_flask_jsonify(
        endpoint.update_dataset_version_description(
            vdataset_version_id, {"description": "new description"}
        )
    )
    get_data_from_flask_jsonify(
        endpoint.deprecate_dataset_version(
            vdataset_version_id, {"deprecationReason": "reason"}
        )
    )
    get_data_from_flask_jsonify(
        endpoint.de_deprecate_dataset_version(vdataset_version_id)
    )
    get_data_from_flask_jsonify(endpoint.delete_dataset_version(vdataset_version_id))
    get_data_from_flask_jsonify(endpoint.de_delete_dataset_version(vdataset_version_id))

    version = 1
    format = "raw"
    get_data_from_flask_jsonify(
        endpoint.get_datafile(
            format, dataset_version_id=vdataset_version_id, datafile_name=vdatafile_name
        )
    )
    get_data_from_flask_jsonify(
        endpoint.get_datafile(
            format,
            dataset_permaname=vdataset_permaname,
            version=version,
            datafile_name=vdatafile_name,
        )
    )
    get_data_from_flask_jsonify(
        endpoint.get_datafile_short_summary(
            dataset_permaname=vdataset_permaname,
            version=version,
            datafile_name=vdatafile_name,
        )
    )
    get_data_from_flask_jsonify(endpoint.search_within_folder(folder_id, "description"))

    folder2 = models_controller.add_folder(
        "folder2", models_controller.Folder.FolderType.folder, "folder desc"
    )
    get_data_from_flask_jsonify(
        endpoint.move_to_folder(
            dict(
                entryIds=[vdataset_id],
                currentFolderId=folder_id,
                targetFolderId=folder2.id,
            )
        )
    )
Пример #6
0
def test_get_dataset_permaname(session: SessionBase, new_dataset: Dataset):
    ds = get_data_from_flask_jsonify(endpoint.get_dataset(new_dataset.permaname))

    assert ds["permanames"][0] == new_dataset.permaname
    assert ds["id"] == new_dataset.id