Warning
This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for galaxy_test.selenium.test_workflow_sharing
from galaxy_test.base.workflow_fixtures import WORKFLOW_SIMPLE_CAT_TWICE
from .framework import (
selenium_test,
SeleniumTestCase,
UsesWorkflowAssertions,
)
[docs]class TestWorkflowSharingRedirect(SeleniumTestCase):
ensure_registered = True
[docs] @selenium_test
def test_export_workflow_with_login_redirect(self):
user_email = self.get_logged_in_user()["email"]
workflow_id = self.workflow_populator.upload_yaml_workflow(WORKFLOW_SIMPLE_CAT_TWICE)
self.logout()
self.go_to_workflow_export(workflow_id)
self.assert_error_message(contains="Workflow is neither importable, nor owned by or shared with current user")
self.sleep_for(self.wait_types.UX_RENDER)
self.components._.messages.require_login.wait_for_and_click()
self.fill_login_and_submit(user_email)
self.wait_for_logged_in()
[docs]class TestWorkflowSharing(SeleniumTestCase, UsesWorkflowAssertions):
[docs] @selenium_test
def test_sharing_workflow_by_email(self):
_, user2_email = self.setup_two_users_with_one_shared_workflow(screenshot=True)
self.submit_login(user2_email)
self.workflow_index_open()
# refine this to restrict checking for that workflow so published workflow don't break this test
self._assert_showing_n_workflows(1)
self.screenshot("workflow_shared_workflow")
[docs] @selenium_test
def test_sharing_workflow_by_id(self):
_, user2_email = self.setup_two_users_with_one_shared_workflow(share_by_id=True)
self.submit_login(user2_email)
self.workflow_index_open()
# refine this to restrict checking for that workflow so published workflow don't break this test
self._assert_showing_n_workflows(1)
[docs] @selenium_test
def test_unsharing_workflow(self):
user1_email, user2_email = self.setup_two_users_with_one_shared_workflow(share_by_id=True)
self.submit_login(user1_email)
self.workflow_index_open()
# refine this to restrict checking for that workflow so published workflow don't break this test
self._assert_showing_n_workflows(1)
self.workflow_index_click_option("Share")
sharing = self.components.histories.sharing
self.share_unshare_with_user(sharing, user2_email)
self.home()
self.workflow_index_open()
# refine this to restrict checking for that workflow so published workflow don't break this test
self._assert_showing_n_workflows(1)
self.workflow_index_click_option("Share")
self.share_ensure_by_user_available(sharing)
unshare_user_button = sharing.unshare_with_user_button(email=user2_email)
unshare_user_button.assert_absent()
self.logout_if_needed()
self.submit_login(user2_email)
self.workflow_index_open()
self._assert_showing_n_workflows(0)
[docs] @selenium_test
def test_sharing_with_invalid_user(self):
user1_email = self._get_random_email()
self.register(user1_email)
self._import_workflow_open_sharing()
self._share_workflow_with_user(
user_email="invalid_user@test.com",
assert_valid=False,
)
self.assert_error_message(contains="is not a valid Galaxy user")
self.screenshot("workflow_sharing_invalid_user")
[docs] @selenium_test
def test_sharing_with_self(self):
user1_email = self._get_random_email()
self.register(user1_email)
self._import_workflow_open_sharing()
self._share_workflow_with_user(
user_email=user1_email,
assert_valid=False,
)
self.assert_error_message(contains="You cannot share resources with yourself")
self.screenshot("workflow_sharing_invalid_sharing_with_self")
def _share_workflow_with_user(self, user_id=None, user_email=None, assert_valid=False, screenshot=False):
kwd = {}
if screenshot:
kwd["screenshot_before_submit"] = "workflow_sharing_user_before_submit"
kwd["screenshot_after_submit"] = "workflow_sharing_user_after_submit"
self.share_with_user(
self.components.histories.sharing, user_email=user_email, user_id=user_id, assert_valid=assert_valid, **kwd
)
def _import_workflow_open_sharing(self):
self.workflow_index_open()
self._workflow_import_from_url()
self.workflow_index_click_option("Share")