require 'integration_helper'
-require 'selenium-webdriver'
-require 'headless'
class UserManageAccountTest < ActionDispatch::IntegrationTest
setup do
- headless = Headless.new
- headless.start
- Capybara.current_driver = :selenium
+ need_javascript
end
# test manage_account page
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