X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/2908852ef9d52b12eb715474c5f31e35f7c44b18..f233795c54fbfd3b0481e5bce0914a9192e2b8ff:/apps/workbench/test/integration/users_test.rb diff --git a/apps/workbench/test/integration/users_test.rb b/apps/workbench/test/integration/users_test.rb index 7555e3a8d2..dc3957c7b1 100644 --- a/apps/workbench/test/integration/users_test.rb +++ b/apps/workbench/test/integration/users_test.rb @@ -1,7 +1,9 @@ require 'integration_helper' -require "selenium-webdriver" +require 'selenium-webdriver' +require 'headless' class UsersTest < ActionDispatch::IntegrationTest + test "login as active user but not admin" do Capybara.current_driver = Capybara.javascript_driver visit page_with_token('active_trustedclient') @@ -14,6 +16,7 @@ class UsersTest < ActionDispatch::IntegrationTest visit page_with_token('admin_trustedclient') # go to Users list page + find('#system-menu').click click_link 'Users' # check active user attributes in the list page @@ -21,33 +24,40 @@ class UsersTest < ActionDispatch::IntegrationTest assert (text.include? 'true false'), 'Expected is_active' end - click_link 'zzzzz-tpzed-xurymjxw79nv3jz' + find('tr', text: 'zzzzz-tpzed-xurymjxw79nv3jz'). + find('a', text: 'Show'). + click assert page.has_text? 'Attributes' - assert page.has_text? 'Metadata' + assert page.has_text? 'Advanced' assert page.has_text? 'Admin' # go to the Attributes tab click_link 'Attributes' assert page.has_text? 'modified_by_user_uuid' - page.within(:xpath, '//a[@data-name="is_active"]') do + page.within(:xpath, '//span[@data-name="is_active"]') do assert_equal "true", text, "Expected user's is_active to be true" end - page.within(:xpath, '//a[@data-name="is_admin"]') do + page.within(:xpath, '//span[@data-name="is_admin"]') do assert_equal "false", text, "Expected user's is_admin to be false" end end test "create a new user" do + headless = Headless.new + headless.start + Capybara.current_driver = :selenium + visit page_with_token('admin_trustedclient') + find('#system-menu').click click_link 'Users' assert page.has_text? 'zzzzz-tpzed-d9tiejq69daie8f' click_link 'Add a new user' - + sleep(0.1) popup = page.driver.browser.window_handles.last page.within_window popup do @@ -55,41 +65,49 @@ class UsersTest < ActionDispatch::IntegrationTest fill_in "email", :with => "foo@example.com" fill_in "repo_name", :with => "test_repo" click_button "Submit" + wait_for_ajax end - sleep(0.1) - - # verify that the new user showed up in the users page - assert page.has_text? 'foo@example.com' + visit '/users' - page.within(:xpath, '//tr[@data-object-uuid][1]') do - assert (text.include? 'foo@example.com false'), 'Expected email' - new_user_uuid = text.split[0] + # verify that the new user showed up in the users page and find + # the new user's UUID + new_user_uuid = + find('tr[data-object-uuid]', text: 'foo@example.com')['data-object-uuid'] + assert new_user_uuid, "Expected new user uuid not found" - # go to the new user's page - click_link new_user_uuid - end + # go to the new user's page + find('tr', text: new_user_uuid). + find('a', text: 'Show'). + click assert page.has_text? 'modified_by_user_uuid' - page.within(:xpath, '//a[@data-name="is_active"]') do + page.within(:xpath, '//span[@data-name="is_active"]') do assert_equal "false", text, "Expected new user's is_active to be false" end + click_link 'Advanced' click_link 'Metadata' - assert page.has_text? '(Repository: test_repo)' - assert !(page.has_text? '(VirtualMachine:)') + assert page.has_text? 'Repository: test_repo' + assert !(page.has_text? 'VirtualMachine:') + + headless.stop end test "setup the active user" do + headless = Headless.new + headless.start + Capybara.current_driver = :selenium visit page_with_token('admin_trustedclient') + find('#system-menu').click click_link 'Users' - assert page.has_link? 'zzzzz-tpzed-xurymjxw79nv3jz' - # click on active user - click_link 'zzzzz-tpzed-xurymjxw79nv3jz' + find('tr', text: 'zzzzz-tpzed-xurymjxw79nv3jz'). + find('a', text: 'Show'). + click # Setup user click_link 'Admin' @@ -98,6 +116,7 @@ class UsersTest < ActionDispatch::IntegrationTest click_link 'Setup Active User' sleep(0.1) + popup = page.driver.browser.window_handles.last page.within_window popup do assert has_text? 'Virtual Machine' @@ -105,12 +124,12 @@ class UsersTest < ActionDispatch::IntegrationTest click_button "Submit" end - sleep(0.1) assert page.has_text? 'modified_by_client_uuid' + click_link 'Advanced' click_link 'Metadata' - assert page.has_text? '(Repository: test_repo)' - assert !(page.has_text? '(VirtualMachine:)') + assert page.has_text? 'Repository: test_repo' + assert !(page.has_text? 'VirtualMachine:') # Click on Setup button again and this time also choose a VM click_link 'Admin' @@ -124,30 +143,36 @@ class UsersTest < ActionDispatch::IntegrationTest click_button "Submit" end - sleep(0.1) assert page.has_text? 'modified_by_client_uuid' + click_link 'Advanced' click_link 'Metadata' - assert page.has_text? '(Repository: second_test_repo)' - assert page.has_text? '(VirtualMachine: testvm.shell)' + assert page.has_text? 'Repository: second_test_repo' + assert page.has_text? 'VirtualMachine: testvm.shell' + + headless.stop end test "unsetup active user" do + headless = Headless.new + headless.start + Capybara.current_driver = :selenium visit page_with_token('admin_trustedclient') + find('#system-menu').click click_link 'Users' - assert page.has_link? 'zzzzz-tpzed-xurymjxw79nv3jz' - # click on active user - click_link 'zzzzz-tpzed-xurymjxw79nv3jz' + find('tr', text: 'zzzzz-tpzed-xurymjxw79nv3jz'). + find('a', text: 'Show'). + click # Verify that is_active is set - click_link 'Attributes' + find('a,button', text: 'Attributes').click assert page.has_text? 'modified_by_user_uuid' - page.within(:xpath, '//a[@data-name="is_active"]') do + page.within(:xpath, '//span[@data-name="is_active"]') do assert_equal "true", text, "Expected user's is_active to be true" end @@ -158,19 +183,20 @@ class UsersTest < ActionDispatch::IntegrationTest # unsetup user and verify all the above links are deleted click_link 'Admin' click_button 'Deactivate Active User' - page.driver.browser.switch_to.alert.accept sleep(0.1) # Should now be back in the Attributes tab for the user + page.driver.browser.switch_to.alert.accept assert page.has_text? 'modified_by_user_uuid' - page.within(:xpath, '//a[@data-name="is_active"]') do + page.within(:xpath, '//span[@data-name="is_active"]') do assert_equal "false", text, "Expected user's is_active to be false after unsetup" end + click_link 'Advanced' click_link 'Metadata' - assert !(page.has_text? '(Repository: test_repo)') - assert !(page.has_text? '(Repository: second_test_repo)') - assert !(page.has_text? '(VirtualMachine: testvm.shell)') + assert !(page.has_text? 'Repository: test_repo') + assert !(page.has_text? 'Repository: second_test_repo') + assert !(page.has_text? 'VirtualMachine: testvm.shell') # setup user again and verify links present click_link 'Admin' @@ -184,12 +210,14 @@ class UsersTest < ActionDispatch::IntegrationTest click_button "Submit" end - sleep(0.1) assert page.has_text? 'modified_by_client_uuid' + click_link 'Advanced' click_link 'Metadata' - assert page.has_text? '(Repository: second_test_repo)' - assert page.has_text? '(VirtualMachine: testvm.shell)' + assert page.has_text? 'Repository: second_test_repo' + assert page.has_text? 'VirtualMachine: testvm.shell' + + headless.stop end end