Arvados-DCO-1.1-Signed-off-by: Radhika Chippada <radhika@curoverse.com>
[arvados.git] / apps / workbench / test / integration / user_settings_menu_test.rb
index c2a2f8a89d84fd0350e271a86e8e4e8a9cd3f15d..6a0e46e26aea5b6455fd400ac73d55596ab5895b 100644 (file)
@@ -1,3 +1,7 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
 require 'integration_helper'
 
 class UserSettingsMenuTest < ActionDispatch::IntegrationTest
@@ -5,8 +9,8 @@ class UserSettingsMenuTest < ActionDispatch::IntegrationTest
     need_javascript
   end
 
-  # test manage_account page
-  def verify_manage_account user
+  # test user settings menu
+  def verify_user_settings_menu user
     if user['is_active']
       within('.navbar-fixed-top') do
         page.find("#notifications-menu").click
@@ -66,9 +70,9 @@ class UserSettingsMenuTest < ActionDispatch::IntegrationTest
     ['active', api_fixture('users')['active']],
     ['admin', api_fixture('users')['admin']],
   ].each do |token, user|
-    test "test manage account for user #{token}" do
+    test "test user settings menu for user #{token}" do
       visit page_with_token(token)
-      verify_manage_account user
+      verify_user_settings_menu user
     end
   end
 
@@ -84,7 +88,7 @@ class UserSettingsMenuTest < ActionDispatch::IntegrationTest
     ['job_reader', :ssh, :pipeline],
     ['active'],
   ].each do |user, *expect|
-    test "manage account for #{user} with notifications #{expect.inspect}" do
+    test "user settings menu for #{user} with notifications #{expect.inspect}" do
       Rails.configuration.anonymous_user_token = false
       visit page_with_token(user)
       click_link 'notifications-menu'
@@ -110,32 +114,27 @@ class UserSettingsMenuTest < ActionDispatch::IntegrationTest
   end
 
   test "verify repositories for active user" do
-    user = api_fixture('users')['active']
-    visit page_with_token('active',"/users/#{api_fixture('users')['active']['uuid']}/repositories")
-    repos = [[api_fixture('repositories')['foo'], true, true],
-             [api_fixture('repositories')['repository3'], false, false],
-             [api_fixture('repositories')['repository4'], true, false]]
+    visit page_with_token('active',"/repositories")
+
+    repos = [[api_fixture('repositories')['foo'], true],
+             [api_fixture('repositories')['repository3'], false],
+             [api_fixture('repositories')['repository4'], false],
+             [api_fixture('repositories')['arvados'], false]]
 
-    repos.each do |(repo, writable, sharable)|
+    repos.each do |(repo, owned)|
       within('tr', text: repo['name']+'.git') do
-        if sharable
-          assert_selector 'a', text:'Share'
-          assert_text 'writable'
+        assert_text repo['name']
+        assert_selector 'a', text:'Show'
+        if owned
+          assert_not_nil first('.glyphicon-trash')
         else
-          assert_text repo['name']
-          assert_no_selector 'a', text:'Share'
-          if writable
-            assert_text 'writable'
-          else
-            assert_text 'read-only'
-          end
+          assert_nil first('.glyphicon-trash')
         end
       end
     end
   end
 
   test "request shell access" do
-    user = api_fixture('users')['spectator']
     ActionMailer::Base.deliveries = []
     visit page_with_token('spectator', "/users/#{api_fixture('users')['spectator']['uuid']}/virtual_machines")
     assert_text 'You do not have access to any virtual machines'
@@ -149,6 +148,7 @@ class UserSettingsMenuTest < ActionDispatch::IntegrationTest
     assert_text 'A request for shell access was sent'
 
     # verify that the email was sent
+    user = api_fixture('users')['spectator']
     full_name = "#{user['first_name']} #{user['last_name']}"
     expected = "Shell account request from #{full_name} (#{user['email']}, #{user['uuid']})"
     found_email = 0
@@ -193,12 +193,12 @@ class UserSettingsMenuTest < ActionDispatch::IntegrationTest
 
   [
     ['virtual_machines', nil, 'Host name', 'testvm2.shell'],
-    ['repositories', 'Add new repository', 'It may take a minute or two before you can clone your new repository.', 'active/foo'],
+    ['/repositories', 'Add new repository', 'It may take a minute or two before you can clone your new repository.', 'active/foo'],
     ['/current_token', nil, 'HISTIGNORE=$HISTIGNORE', 'ARVADOS_API_TOKEN=3kg6k6lzmp9kj5'],
     ['ssh_keys', 'Add new SSH key', 'Click here to learn about SSH keys in Arvados.', 'active'],
   ].each do |page_name, button_name, look_for, content|
-    test "test user-settings menu for page #{page_name}" do
-      if page_name == '/current_token'
+    test "test user settings menu for page #{page_name}" do
+      if page_name == '/current_token' || page_name == '/repositories'
         visit page_with_token('active', page_name)
       else
         visit page_with_token('active', "/users/#{api_fixture('users')['active']['uuid']}/#{page_name}")
@@ -216,18 +216,21 @@ class UserSettingsMenuTest < ActionDispatch::IntegrationTest
 
   [
     ['virtual_machines', 'You do not have access to any virtual machines.'],
-    ['repositories', 'You do not seem to have access to any repositories.'],
+    ['/repositories', api_fixture('repositories')['arvados']['name']],
     ['/current_token', 'HISTIGNORE=$HISTIGNORE'],
     ['ssh_keys', 'You have not yet set up an SSH public key for use with Arvados.'],
   ].each do |page_name, look_for|
-    test "test user-settings menu for page #{page_name} when page is empty" do
-      if page_name == '/current_token'
+    test "test user settings menu for page #{page_name} when page is empty" do
+      if page_name == '/current_token' || page_name == '/repositories'
         visit page_with_token('user1_with_load', page_name)
       else
         visit page_with_token('admin', "/users/#{api_fixture('users')['user1_with_load']['uuid']}/#{page_name}")
       end
 
-     assert page.has_text? look_for
+      assert page.has_text? look_for
+      if page_name == '/repositories'
+        assert_equal 1, page.all('a[data-original-title="show repository"]').count
+      end
     end
   end
 end