mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-10-25 10:24:38 +08:00
Add basic API tests for library folders
This commit is contained in:
@@ -0,0 +1,134 @@
|
||||
from galaxy_test.base.populators import (
|
||||
DatasetCollectionPopulator,
|
||||
DatasetPopulator,
|
||||
LibraryPopulator,
|
||||
)
|
||||
from ._framework import ApiTestCase
|
||||
|
||||
|
||||
class FoldersApiTestCase(ApiTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.dataset_populator = DatasetPopulator(self.galaxy_interactor)
|
||||
self.dataset_collection_populator = DatasetCollectionPopulator(self.galaxy_interactor)
|
||||
self.library_populator = LibraryPopulator(self.galaxy_interactor)
|
||||
|
||||
self.library = self.library_populator.new_library("FolderTestsLibrary")
|
||||
|
||||
def test_create(self):
|
||||
folder = self._create_folder("Test Create Folder")
|
||||
self._assert_valid_folder(folder)
|
||||
|
||||
def test_permissions(self):
|
||||
folder = self._create_folder("Test Permissions Folder")
|
||||
folder_id = folder["id"]
|
||||
|
||||
empty_permissions = self._get_permissions(folder_id)
|
||||
self._assert_permissions_empty(empty_permissions)
|
||||
|
||||
role_id = self.library_populator.user_private_role_id()
|
||||
action = "set_permissions"
|
||||
data = {
|
||||
"add_ids[]": [role_id],
|
||||
"manage_ids[]": role_id, # string-lists also supported
|
||||
"modify_ids[]": [role_id]
|
||||
}
|
||||
response = self._post(f"folders/{folder_id}/permissions?action={action}", data=data, admin=True)
|
||||
self._assert_status_code_is(response, 200)
|
||||
new_permissions = response.json()
|
||||
|
||||
permissions = self._get_permissions(folder_id)
|
||||
assert permissions == new_permissions
|
||||
self._assert_permissions_contains_role(permissions, role_id)
|
||||
|
||||
def test_update(self):
|
||||
folder = self._create_folder("Test Update Folder")
|
||||
folder_id = folder["id"]
|
||||
updated_name = "UPDATED"
|
||||
updated_desc = "UPDATED DESCRIPTION"
|
||||
data = {
|
||||
"name": updated_name,
|
||||
"description": updated_desc,
|
||||
}
|
||||
patch_response = self._patch(f"folders/{folder_id}", data=data, admin=True)
|
||||
self._assert_status_code_is(patch_response, 200)
|
||||
updated_folder = patch_response.json()
|
||||
self._assert_valid_folder(updated_folder)
|
||||
assert updated_folder["name"] == updated_name
|
||||
assert updated_folder["description"] == updated_desc
|
||||
|
||||
def test_delete(self):
|
||||
folder = self._create_folder("Test Delete Folder")
|
||||
folder_id = folder["id"]
|
||||
|
||||
delete_response = self._delete(f"folders/{folder_id}", admin=True)
|
||||
self._assert_status_code_is(delete_response, 200)
|
||||
deleted_folder = delete_response.json()
|
||||
assert deleted_folder["deleted"] is True
|
||||
|
||||
def test_undelete(self):
|
||||
folder = self._create_folder("Test Undelete Folder")
|
||||
folder_id = folder["id"]
|
||||
|
||||
delete_response = self._delete(f"folders/{folder_id}", admin=True)
|
||||
self._assert_status_code_is(delete_response, 200)
|
||||
deleted_folder = delete_response.json()
|
||||
assert deleted_folder["deleted"] is True
|
||||
|
||||
undelete = True
|
||||
undelete_response = self._delete(f"folders/{folder_id}?undelete={undelete}", admin=True)
|
||||
self._assert_status_code_is(undelete_response, 200)
|
||||
undeleted_folder = undelete_response.json()
|
||||
assert undeleted_folder["deleted"] is False
|
||||
|
||||
def _create_folder(self, name: str):
|
||||
root_folder_id = self.library["root_folder_id"]
|
||||
data = {
|
||||
"name": name,
|
||||
"description": f"The description of {name}",
|
||||
}
|
||||
create_response = self._post(f"folders/{root_folder_id}", data=data, admin=True)
|
||||
self._assert_status_code_is(create_response, 200)
|
||||
folder = create_response.json()
|
||||
return folder
|
||||
|
||||
def _get_permissions(self, folder_id):
|
||||
response = self._get(f"folders/{folder_id}/permissions", admin=True)
|
||||
self._assert_status_code_is(response, 200)
|
||||
permissions = response.json()
|
||||
self._assert_valid_permissions(permissions)
|
||||
return permissions
|
||||
|
||||
def _assert_valid_folder(self, folder):
|
||||
self._assert_has_keys(
|
||||
folder,
|
||||
"id",
|
||||
"name",
|
||||
"model_class",
|
||||
"parent_id",
|
||||
"item_count",
|
||||
"genome_build",
|
||||
"update_time",
|
||||
"deleted",
|
||||
"library_path",
|
||||
"parent_library_id"
|
||||
)
|
||||
|
||||
def _assert_valid_permissions(self, permissions):
|
||||
self._assert_has_keys(
|
||||
permissions,
|
||||
"modify_folder_role_list",
|
||||
"manage_folder_role_list",
|
||||
"add_library_item_role_list",
|
||||
)
|
||||
|
||||
def _assert_permissions_empty(self, permissions):
|
||||
assert permissions["modify_folder_role_list"] == []
|
||||
assert permissions["manage_folder_role_list"] == []
|
||||
assert permissions["add_library_item_role_list"] == []
|
||||
|
||||
def _assert_permissions_contains_role(self, permissions, role_id):
|
||||
assert role_id in permissions["modify_folder_role_list"][0]
|
||||
assert role_id in permissions["manage_folder_role_list"][0]
|
||||
assert role_id in permissions["add_library_item_role_list"][0]
|
||||
Reference in New Issue
Block a user