8784: Use keep-web to serve dir listings for shared collections.
[arvados.git] / apps / workbench / test / integration / download_test.rb
index ed91ae08695ee96aaabde519e82781ffe4528ea1..a19cde3db83e8387b0d8c915173ba4b614e8a071 100644 (file)
@@ -2,16 +2,10 @@ require 'integration_helper'
 require 'helpers/download_helper'
 
 class DownloadTest < ActionDispatch::IntegrationTest
-  def getport service
-    File.read(File.expand_path("../../../../../tmp/#{service}.port", __FILE__))
-  end
+  include KeepWebConfig
 
   setup do
-    @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
+    use_keep_web_config
 
     # Make sure Capybara can download files.
     need_selenium 'for downloading', :selenium_with_download
@@ -31,7 +25,7 @@ class DownloadTest < ActionDispatch::IntegrationTest
       uuid_or_pdh = api_fixture('collections')['foo_file'][id_type]
       token = api_fixture('api_client_authorizations')['active_all_collections']['api_token']
       visit "/collections/download/#{uuid_or_pdh}/#{token}/"
-      within "#collection_files" do
+      within 'ul' do
         click_link 'foo'
       end
       assert_no_selector 'a'
@@ -71,13 +65,13 @@ class DownloadTest < ActionDispatch::IntegrationTest
     within "#collection_files" do
       find('[title~=Download]').click
     end
-    wait_for_download 'w a z', 'w a z'
+    wait_for_download 'w a z', 'w a z', timeout: 20
   end
 
-  def wait_for_download filename, expect_data
+  def wait_for_download filename, expect_data, timeout: 3
     data = nil
     tries = 0
-    while tries < 20
+    while tries < timeout*10 && data != expect_data
       sleep 0.1
       tries += 1
       data = File.read(DownloadHelper.path.join filename) rescue nil