assert page.has_text?('Current Token'), 'No text - Current Token'
assert page.has_text?('The Arvados API token is a secret key that enables the Arvados SDKs to access Arvados'), 'No text - Arvados API token'
add_and_verify_ssh_key
- verify_repositories user
else # inactive user
within('.navbar-fixed-top') do
find('a', text: "#{user['email']}").click
assert page.has_text?('added_in_test'), 'No text - added_in_test'
end
- def verify_repositories user
- Thread.current[:arvados_api_token] = @@API_AUTHS["admin"]['api_token']
- repo_links = Link.filter([['head_uuid', 'is_a', 'arvados#repository'],
- ['tail_uuid', '=', user['uuid']],
- ['link_class', '=', 'permission']])
- repos = Repository.where uuid: repo_links.collect(&:head_uuid)
- repositories = {}
- repos.each do |repo|
- repositories[repo.uuid] = repo
- end
-
- repo_writables = {}
- repo_links.each do |link|
- if link.name.in? ['can_write','can_manage']
- repo_writables[link.head_uuid] = link.name
- end
- end
-
- repo_links.each do |link|
- if repo_writables[link.head_uuid] == 'can_manage'
- assert_selector 'a', text: repositories[link.head_uuid]['name']
- within('tr', text: repositories[link.head_uuid]['fetch_url']) do
- assert_text 'writable'
- end
- else
- assert_no_selector 'a', text: repositories[link.head_uuid]['name']
- assert_text repositories[link.head_uuid]['name']
- within('tr', text: repositories[link.head_uuid]['fetch_url']) do
- if repo_writables[link.head_uuid] == 'can_write'
- assert_text 'writable'
- else
- assert_text 'read-only'
- end
- end
- end
- end
- end
-
[
['inactive', api_fixture('users')['inactive']],
['inactive_uninvited', api_fixture('users')['inactive_uninvited']],
end
end
+ test "pipeline notification shown even though public pipelines exist" do
+ skip "created_by doesn't work that way"
+ Rails.configuration.anonymous_user_token = api_fixture('api_client_authorizations')['anonymous']['api_token']
+ visit page_with_token 'job_reader'
+ click_link 'notifications-menu'
+ assert_selector 'a', text: 'Click here to learn how to run an Arvados Crunch pipeline'
+ end
+
[
- ['inactive_but_signed_user_agreement', true],
- ['active', false],
- ].each do |user, notifications|
- test "test manage account for #{user} with notifications #{notifications}" do
+ ['job_reader', :ssh, :pipeline],
+ ['active'],
+ ].each do |user, *expect|
+ test "manage account for #{user} with notifications #{expect.inspect}" do
+ Rails.configuration.anonymous_user_token = false
visit page_with_token(user)
click_link 'notifications-menu'
- if notifications
+ if expect.include? :ssh
assert_selector('a', text: 'Click here to set up an SSH public key for use with Arvados')
- assert_selector('a', text: 'Click here to learn how to run an Arvados Crunch pipeline')
click_link('Click here to set up an SSH public key for use with Arvados')
assert_selector('a', text: 'Add new SSH key')
# No more SSH notification
click_link 'notifications-menu'
assert_no_selector('a', text: 'Click here to set up an SSH public key for use with Arvados')
- assert_selector('a', text: 'Click here to learn how to run an Arvados Crunch pipeline')
else
assert_no_selector('a', text: 'Click here to set up an SSH public key for use with Arvados')
assert_no_selector('a', text: 'Click here to learn how to run an Arvados Crunch pipeline')
end
+
+ if expect.include? :pipeline
+ assert_selector('a', text: 'Click here to learn how to run an Arvados Crunch pipeline')
+ end
+ end
+ end
+
+ test "verify repositories for active user" do
+ visit page_with_token('active', '/manage_account')
+
+ repos = [[api_fixture('repositories')['foo'], true, true],
+ [api_fixture('repositories')['repository3'], false, false],
+ [api_fixture('repositories')['repository4'], true, false]]
+
+ repos.each do |(repo, writable, sharable)|
+ within('tr', text: repo['name']+'.git') do
+ if sharable
+ assert_selector 'a', text:'Share'
+ assert_text 'writable'
+ else
+ assert_text repo['name']
+ assert_no_selector 'a', text:'Share'
+ if writable
+ assert_text 'writable'
+ else
+ assert_text 'read-only'
+ end
+ end
+ end
+ end
+ end
+
+ test "request shell access" do
+ visit page_with_token('spectator', '/manage_account')
+ assert_text 'You do not have access to any virtual machines'
+ click_button 'Send request for shell access'
+ assert_text 'A request for shell access was sent.'
+ assert_no_text 'You do not have access to any virtual machines.'
+
+ # revisit the page and verify that the Request button is no longer shown
+ within('.navbar-fixed-top') do
+ find('a', text: 'spectator').click
+ within('.dropdown-menu') do
+ find('a', text: 'Manage account').click
+ end
end
+ assert_text 'You do not have access to any virtual machines.'
+ assert_text 'A request for shell access was sent on '
end
end