+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
require 'integration_helper'
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
['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
['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'
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'
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
[
['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}")
[
['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