mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-11-04 15:35:25 +08:00
96 lines
4.5 KiB
Python
96 lines
4.5 KiB
Python
# Test tools API.
|
|
from galaxy.tool_util_models import UserToolSource
|
|
from galaxy_test.base.populators import (
|
|
DatasetCollectionPopulator,
|
|
DatasetPopulator,
|
|
)
|
|
from ._framework import ApiTestCase
|
|
from .test_tools import (
|
|
TestsTools,
|
|
TOOL_WITH_SHELL_COMMAND,
|
|
)
|
|
|
|
|
|
class TestUnprivilegedToolsApi(ApiTestCase, TestsTools):
|
|
|
|
def setUp(self):
|
|
super().setUp()
|
|
self.dataset_populator = DatasetPopulator(self.galaxy_interactor)
|
|
self.dataset_collection_populator = DatasetCollectionPopulator(self.galaxy_interactor)
|
|
|
|
def test_create_unprivileged_requires_execute_role(self):
|
|
dynamic_tool = self.dataset_populator.create_unprivileged_tool(
|
|
UserToolSource(**TOOL_WITH_SHELL_COMMAND), assert_ok=False
|
|
)
|
|
assert dynamic_tool["err_msg"] == "User is not allowed to run unprivileged tools"
|
|
|
|
def test_create_unprivileged(self):
|
|
# Create a new dynamic tool.
|
|
with self.dataset_populator.user_tool_execute_permissions():
|
|
dynamic_tool = self.dataset_populator.create_unprivileged_tool(UserToolSource(**TOOL_WITH_SHELL_COMMAND))
|
|
assert dynamic_tool["uuid"], "Dynamic tool UUID not found in response"
|
|
assert dynamic_tool["representation"]["name"] == TOOL_WITH_SHELL_COMMAND["name"]
|
|
|
|
def test_list_unprivileged(self):
|
|
with self.dataset_populator.user_tool_execute_permissions():
|
|
dynamic_tool = self.dataset_populator.create_unprivileged_tool(UserToolSource(**TOOL_WITH_SHELL_COMMAND))
|
|
dynamic_tools = self.dataset_populator.get_unprivileged_tools()
|
|
assert any(
|
|
dynamic_tool["uuid"] == t["uuid"] for t in dynamic_tools
|
|
), f"Newly created dynamic tool {dynamic_tool['uuid']} not in dynamic tools list {dynamic_tools}"
|
|
|
|
def test_show(self):
|
|
with self.dataset_populator.user_tool_execute_permissions():
|
|
dynamic_tool = self.dataset_populator.create_unprivileged_tool(UserToolSource(**TOOL_WITH_SHELL_COMMAND))
|
|
show_response = self.dataset_populator.show_unprivileged_tool(dynamic_tool["uuid"])
|
|
assert show_response["representation"]["name"]
|
|
|
|
def test_build(self):
|
|
with (
|
|
self.dataset_populator.test_history() as history_id,
|
|
self.dataset_populator.user_tool_execute_permissions(),
|
|
):
|
|
response = self.dataset_populator.build_unprivileged_tool(
|
|
UserToolSource(**TOOL_WITH_SHELL_COMMAND), history_id=history_id
|
|
)
|
|
assert response
|
|
|
|
def test_build_runtime_model(self):
|
|
with self.dataset_populator.user_tool_execute_permissions():
|
|
response = self.dataset_populator.build_runtime_model_for_tool(UserToolSource(**TOOL_WITH_SHELL_COMMAND))
|
|
assert response
|
|
assert response["openapi"] == "3.1.0"
|
|
assert response["components"]["schemas"]["inputs"]
|
|
|
|
def test_run(self):
|
|
with (
|
|
self.dataset_populator.test_history() as history_id,
|
|
self.dataset_populator.user_tool_execute_permissions(),
|
|
):
|
|
# Create a new dynamic tool.
|
|
# This is a shell command tool that will echo the input dataset.
|
|
dynamic_tool = self.dataset_populator.create_unprivileged_tool(UserToolSource(**TOOL_WITH_SHELL_COMMAND))
|
|
# Run tool.
|
|
dataset = self.dataset_populator.new_dataset(history_id=history_id, content="abc")
|
|
self._run(
|
|
history_id=history_id,
|
|
tool_uuid=dynamic_tool["uuid"],
|
|
inputs={"input": {"src": "hda", "id": dataset["id"]}},
|
|
)
|
|
|
|
self.dataset_populator.wait_for_history(history_id, assert_ok=True)
|
|
output_content = self.dataset_populator.get_history_dataset_content(history_id)
|
|
assert output_content == "abc\n"
|
|
|
|
def test_deactivate(self):
|
|
with self.dataset_populator.user_tool_execute_permissions():
|
|
# Create a new dynamic tool.
|
|
dynamic_tool = self.dataset_populator.create_unprivileged_tool(UserToolSource(**TOOL_WITH_SHELL_COMMAND))
|
|
# Deactivate the tool.
|
|
self.dataset_populator.deactivate_unprivileged_tool(dynamic_tool["uuid"])
|
|
# Check that the tool is deactivated.
|
|
dynamic_tools = self.dataset_populator.get_unprivileged_tools()
|
|
assert not any(
|
|
dynamic_tool["uuid"] == t["uuid"] for t in dynamic_tools
|
|
), f"Dynamic tool {dynamic_tool['uuid']} still in dynamic tools list {dynamic_tools}"
|