17417: Merge branch 'main' into 17417-add-arm64
[arvados.git] / apps / workbench / test / integration / application_layout_test.rb
index b49cbf91c7f52f701ab7d898b866ed3619c9c5c6..35a1415213db789d441c4973b1f544ff16b6797c 100644 (file)
@@ -1,4 +1,9 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
 require 'integration_helper'
+require 'config_validators'
 
 class ApplicationLayoutTest < ActionDispatch::IntegrationTest
   # These tests don't do state-changing API calls. Save some time by
@@ -11,13 +16,13 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest
   end
 
   def verify_homepage user, invited, has_profile
-    profile_config = Rails.configuration.user_profile_form_fields
+    profile_config = Rails.configuration.Workbench.UserProfileFormFields
 
     if !user
       assert page.has_text?('Please log in'), 'Not found text - Please log in'
-      assert page.has_text?('The "Log in" button below will show you a Google sign-in page'), 'Not found text - google sign in page'
+      assert page.has_text?('If you have never used Arvados Workbench before'), 'Not found text - If you have never'
       assert page.has_no_text?('My projects'), 'Found text - My projects'
-      assert page.has_link?("Log in to #{Rails.configuration.site_name}"), 'Not found text - log in to'
+      assert page.has_link?("Log in"), 'Not found text - Log in'
     elsif user['is_active']
       if profile_config && !has_profile
         assert page.has_text?('Save profile'), 'No text - Save profile'
@@ -37,12 +42,12 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest
 
     within('.navbar-fixed-top') do
       if !user
-        assert_text Rails.configuration.site_name.downcase
-        assert_no_selector 'a', text: Rails.configuration.site_name.downcase
+        assert_text Rails.configuration.Workbench.SiteName.downcase
+        assert_no_selector 'a', text: Rails.configuration.Workbench.SiteName.downcase
         assert page.has_link?('Log in'), 'Not found link - Log in'
       else
         # my account menu
-        assert_selector 'a', text: Rails.configuration.site_name.downcase
+        assert_selector 'a', text: Rails.configuration.Workbench.SiteName.downcase
         assert(page.has_link?("notifications-menu"), 'no user menu')
         page.find("#notifications-menu").click
         within('.dropdown-menu') do
@@ -52,7 +57,7 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest
 
             assert_selector "a[href=\"/projects/#{user['uuid']}\"]", text: 'Home project'
             assert_selector "a[href=\"/users/#{user['uuid']}/virtual_machines\"]", text: 'Virtual machines'
-            assert_selector "a[href=\"/users/#{user['uuid']}/repositories\"]", text: 'Repositories'
+            assert_selector "a[href=\"/repositories\"]", text: 'Repositories'
             assert_selector "a[href=\"/current_token\"]", text: 'Current token'
             assert_selector "a[href=\"/users/#{user['uuid']}/ssh_keys\"]", text: 'SSH keys'
 
@@ -124,6 +129,7 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest
   ].each do |token, user, invited, has_profile|
 
     test "visit home page for user #{token}" do
+      Rails.configuration.Users.AnonymousUserToken = ""
       if !token
         visit ('/')
       else
@@ -136,12 +142,41 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest
     end
   end
 
+  [
+    ["", false],
+    ['http://wb2.example.org//', false],
+    ['ftp://wb2.example.org', false],
+    ['wb2.example.org', false],
+    ['http://wb2.example.org', true],
+    ['https://wb2.example.org', true],
+    ['http://wb2.example.org/', true],
+    ['https://wb2.example.org/', true],
+  ].each do |wb2_url_config, wb2_menu_appear|
+    test "workbench2_url=#{wb2_url_config} should#{wb2_menu_appear ? '' : ' not'} show WB2 menu" do
+      Rails.configuration.Services.Workbench2.ExternalURL = URI(wb2_url_config)
+      if !wb2_menu_appear and !wb2_url_config.empty?
+        assert_raises RuntimeError do
+          ConfigValidators.validate_wb2_url_config()
+        end
+        Rails.configuration.Services.Workbench2.ExternalURL = URI("")
+      end
+
+      visit page_with_token('active')
+      within('.navbar-fixed-top') do
+        page.find("#notifications-menu").click
+        within('.dropdown-menu') do
+          assert_equal wb2_menu_appear, page.has_text?('Go to Workbench 2')
+        end
+      end
+    end
+  end
+
   [
     ['active', true],
     ['active_with_prefs_profile_no_getting_started_shown', false],
   ].each do |token, getting_started_shown|
     test "getting started help menu item #{getting_started_shown}" do
-      Rails.configuration.enable_getting_started_popup = true
+      Rails.configuration.Workbench.EnableGettingStartedPopup = true
 
       visit page_with_token(token)
 
@@ -179,12 +214,12 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest
 
         first('button', text: 'x').click
       end
-      assert_text 'Recent pipelines and processes' # seeing dashboard now
+      assert_text 'Recent processes' # seeing dashboard now
     end
   end
 
   test "test arvados_public_data_doc_url config unset" do
-    Rails.configuration.arvados_public_data_doc_url = false
+    Rails.configuration.Workbench.ArvadosPublicDataDocURL = ""
 
     visit page_with_token('active')
     within '.navbar-fixed-top' do
@@ -202,7 +237,8 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest
   end
 
   test "no SSH public key notification when shell_in_a_box_url is configured" do
-    Rails.configuration.shell_in_a_box_url = 'example.com'
+    Rails.configuration.Services.WebShell.ExternalURL = URI('http://example.com')
+    Rails.configuration.Users.AnonymousUserToken = ""
     visit page_with_token('job_reader')
     click_link 'notifications-menu'
     assert_no_selector 'a', text:'Click here to set up an SSH public key for use with Arvados.'
@@ -210,14 +246,12 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest
   end
 
    [
-    ['Repositories', nil, 's0uqq'],
+    ['Repositories', nil, 'active/crunchdispatchtest'],
     ['Virtual machines', nil, 'testvm.shell'],
     ['SSH keys', nil, 'public_key'],
     ['Links', nil, 'link_class'],
     ['Groups', nil, 'All users'],
-    ['Compute nodes', nil, 'ping_secret'],
     ['Keep services', nil, 'service_ssl_flag'],
-    ['Keep disks', nil, 'bytes_free'],
   ].each do |page_name, add_button_text, look_for|
     test "test system menu #{page_name} link" do
       visit page_with_token('admin')
@@ -249,17 +283,16 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest
     test "visit dashboard as #{token}" do
       visit page_with_token(token)
 
-      assert_text 'Recent pipelines and processes' # seeing dashboard now
+      assert_text 'Recent processes' # seeing dashboard now
       within('.recent-processes-actions') do
         assert page.has_link?('Run a process')
         assert page.has_link?('All processes')
       end
 
       within('.recent-processes') do
-        assert_text 'running'
 
         within('.row-zzzzz-xvhdp-cr4runningcntnr') do
-          assert_text 'requester_for_running_cr'
+          assert_text 'running'
         end
 
         assert_text 'zzzzz-d1hrv-twodonepipeline'
@@ -272,19 +305,6 @@ class ApplicationLayoutTest < ActionDispatch::IntegrationTest
           assert page.has_link? 'foo_file'
         end
       end
-
-      within('.compute-node-actions') do
-        if is_admin
-          assert page.has_link?('All nodes')
-        else
-          assert page.has_no_link?('All nodes')
-        end
-      end
-
-      within('.compute-node-summary-pane') do
-        click_link 'Details'
-        assert_text 'compute0'
-      end
     end
   end
 end