X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/752b9167416a5c8b64bef4946fbc15939b4bfe75..30436ed9a7bb17ebb3ccc9e6f9938c086917bd69:/apps/workbench/test/helpers/share_object_helper.rb diff --git a/apps/workbench/test/helpers/share_object_helper.rb b/apps/workbench/test/helpers/share_object_helper.rb index 400fcfb51e..e31f196498 100644 --- a/apps/workbench/test/helpers/share_object_helper.rb +++ b/apps/workbench/test/helpers/share_object_helper.rb @@ -1,14 +1,12 @@ -module ShareObjectHelper - def show_repository_using(auth_key, repo_key='arvados') - repo_uuid = api_fixture('repositories')[repo_key]['uuid'] - visit(page_with_token(auth_key, "/repositories/#{repo_uuid}")) - assert(page.has_text?("push_url"), "not on expected repository page") - end +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 - def show_project_using(auth_key, proj_key='aproject') - project_uuid = api_fixture('groups')[proj_key]['uuid'] - visit(page_with_token(auth_key, "/projects/#{project_uuid}")) - assert(page.has_text?("A Project"), "not on expected project page") +module ShareObjectHelper + def show_object_using(auth_key, type, key, expect) + obj_uuid = api_fixture(type)[key]['uuid'] + visit(page_with_token(auth_key, "/#{type}/#{obj_uuid}")) + assert(page.has_text?(expect), "expected string not found: #{expect}") end def share_rows @@ -25,6 +23,7 @@ module ShareObjectHelper # Otherwise, the not-included assertions might falsely pass because # the modal hasn't loaded yet. find(".selectable", text: name).click + assert_text "Only #{share_type} you are allowed to access are shown" assert(has_no_selector?(".modal-dialog-preview-pane"), "preview pane available in sharing dialog") if share_type == 'users' and obj and obj['email'] @@ -36,9 +35,10 @@ module ShareObjectHelper end click_on "Add" end - using_wait_time(Capybara.default_wait_time * 3) do + # Admin case takes many times longer than normal user, but not sure why + using_wait_time(30) do assert(page.has_link?(name), - "new share was not added to sharing table") + "new share #{name} was not added to sharing table") assert_equal(start_share_count + 1, share_rows.size, "new share did not add row to sharing table") end @@ -46,7 +46,8 @@ module ShareObjectHelper def modify_share_and_check(name) start_rows = share_rows - link_row = start_rows.select { |row| row.has_text?(name) } + # We assume rows have already been rendered and can be checked quickly + link_row = start_rows.select { |row| row.has_text?(name, wait:(0.1) ) } assert_equal(1, link_row.size, "row with new permission not found") within(link_row.first) do click_on("Read") @@ -61,17 +62,16 @@ module ShareObjectHelper # poltergeist returns true for confirm(), so we don't need to accept. end end - wait_for_ajax - using_wait_time(Capybara.default_wait_time * 3) do - assert(page.has_no_text?(name), - "new share row still exists after being revoked") + # Ensure revoked permission disappears from page. + using_wait_time(Capybara.default_max_wait_time * 3) do + assert_no_text name assert_equal(start_rows.size - 1, share_rows.size, "revoking share did not remove row from sharing table") end end def user_can_manage(user_sym, fixture) - get(:show, {id: fixture["uuid"]}, session_for(user_sym)) + get(:show, params: {id: fixture["uuid"]}, session: session_for(user_sym)) is_manager = assigns(:user_is_manager) assert_not_nil(is_manager, "user_is_manager flag not set") if not is_manager