def selenium_opts
{
port: available_port('selenium'),
+ desired_capabilities: Selenium::WebDriver::Remote::Capabilities.firefox(
+ acceptInsecureCerts: true,
+ ),
}
end
# DOM element.
def assert_triggers_dom_event events, target='body'
magic = 'received-dom-event-' + rand(2**30).to_s(36)
- page.evaluate_script <<eos
+ page.execute_script <<eos
$('#{target}').one('#{events}', function() {
$('body').addClass('#{magic}');
});
eos
yield
assert_selector "body.#{magic}"
- page.evaluate_script "$('body').removeClass('#{magic}');";
+ page.execute_script "$('body').removeClass('#{magic}');";
end
end
end
end
-module KeepWebConfig
- def getport service
- File.read(File.expand_path("../../../../tmp/#{service}.port", __FILE__))
- end
-
- def use_keep_web_config
- @kwport = getport 'keep-web-ssl'
- @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
-
class ActionDispatch::IntegrationTest
# Make the Capybara DSL available in all integration tests
include Capybara::DSL
# exception if not found. Use this with assertions to explain that
# the error signifies a failed test rather than an unexpected error
# during a testing procedure.
- def find? *args
+ def find?(*args)
begin
- find *args
+ find(*args)
rescue Capybara::ElementNotFound
false
end
end
teardown do
- if not passed?
+ if !passed? && !skipped?
screenshot
end
if Capybara.current_driver == :selenium
+ # Clearing localStorage crashes on a page where JS isn't
+ # executed. We also need to make sure we're clearing
+ # localStorage for the test server's origin, even if we finished
+ # the test on a different origin.
+ host = Capybara.current_session.server.host
+ port = Capybara.current_session.server.port
+ base = "http://#{host}:#{port}"
+ if page.evaluate_script("window.document.contentType") != "text/html" ||
+ !page.evaluate_script("window.location.toString()").start_with?(base)
+ visit "#{base}/404"
+ end
page.execute_script("window.localStorage.clear()")
+ else
+ page.driver.restart if defined?(page.driver.restart)
end
Capybara.reset_sessions!
end
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