X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/54cd184005d14ba93e93ae0eeb16ea70ee09a3b6..a31587cba5c2c38e0fc4f91981baf8bf2605664c:/apps/workbench/test/integration_helper.rb diff --git a/apps/workbench/test/integration_helper.rb b/apps/workbench/test/integration_helper.rb index d5be993a4f..5fbdd5c6f0 100644 --- a/apps/workbench/test/integration_helper.rb +++ b/apps/workbench/test/integration_helper.rb @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + require 'test_helper' require 'capybara/rails' require 'capybara/poltergeist' @@ -71,6 +75,14 @@ Capybara.register_driver :selenium_with_download do |app| end module WaitForAjax + # FIXME: Huge side effect here + # The following line changes the global default Capybara wait time, affecting + # every test which follows this one. This should be removed and the failing tests + # should have their individual wait times increased, if appropriate, using + # the using_wait_time(N) construct to temporarily change the wait time. + # Note: the below is especially bad because there are places that increase wait + # times using a multiplier e.g. using_wait_time(3 * Capybara.default_max_wait_time) + Capybara.default_max_wait_time = 10 def wait_for_ajax timeout = 10 count = 0 @@ -151,7 +163,6 @@ module KeepWebConfig @kwdport = getport 'keep-web-dl-ssl' Rails.configuration.keep_web_url = "https://localhost:#{@kwport}/c=%{uuid_or_pdh}" Rails.configuration.keep_web_download_url = "https://localhost:#{@kwdport}/c=%{uuid_or_pdh}" - CollectionsController.any_instance.expects(:file_enumerator).never end end @@ -210,7 +221,40 @@ class ActionDispatch::IntegrationTest end if Capybara.current_driver == :selenium page.execute_script("window.localStorage.clear()") + else + page.driver.restart if defined?(page.driver.restart) end Capybara.reset_sessions! end + + def accept_alert + if Capybara.current_driver == :selenium + (0..9).each do + begin + page.driver.browser.switch_to.alert.accept + break + rescue Selenium::WebDriver::Error::NoSuchAlertError + sleep 0.1 + end + end + else + # poltergeist returns true for confirm, so no need to accept + end + end +end + +def upload_data_and_get_collection(data, user, filename, owner_uuid=nil) + token = api_token(user) + datablock = `echo -n #{data.shellescape} | ARVADOS_API_TOKEN=#{token.shellescape} arv-put --no-progress --raw -`.strip + assert $?.success?, $? + col = nil + use_token user do + mtxt = ". #{datablock} 0:#{data.length}:#{filename}\n" + if owner_uuid + col = Collection.create(manifest_text: mtxt, owner_uuid: owner_uuid) + else + col = Collection.create(manifest_text: mtxt) + end + end + return col end