Arvados-DCO-1.1-Signed-off-by: Radhika Chippada <radhika@curoverse.com>
[arvados.git] / apps / workbench / test / integration / user_settings_menu_test.rb
index f6a0ce722fa4c2282037d551b117c6f75a4243eb..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
@@ -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'
+      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'
+      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