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_share_workflow_with_login_redirect(self): user_email = self.get_user_email() workflow_id = self.workflow_populator.upload_yaml_workflow(WORKFLOW_SIMPLE_CAT_TWICE) self.logout() self.go_to_workflow_sharing(workflow_id) self.assert_error_message(contains="Must be logged in to manage Galaxy items") 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() self.wait_for_selector(".make-accessible")
[docs] @selenium_test def test_export_workflow_with_login_redirect(self): user_email = self.get_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_shared_with_me_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) # refine this to restrict checking for that workflow so published workflow don't break this test self.workflow_shared_with_me_open() 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_share_click() 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_share_click() 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.components.workflows.workflows_list_empty.wait_for_visible()
[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")
[docs] def setup_two_users_with_one_shared_workflow(self, screenshot=False, share_by_id=False): user1_email = self._get_random_email() user2_email = self._get_random_email() self.register(user1_email) self.logout_if_needed() self.register(user2_email) user2_id = None if share_by_id: user2_id = self.api_get("users")[0]["id"] self.logout_if_needed() self.submit_login(user1_email) self._import_workflow_open_sharing() self._share_workflow_with_user( user_email=user2_email, user_id=user2_id, screenshot=screenshot, assert_valid=True, ) self.logout_if_needed() return user1_email, user2_email
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_share_click()