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
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
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")
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
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, ) ) )
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