X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/a15ff495c8c576378f55f58fe22ce9f3c49121e8..3063c6106a83102214deb9d86ec621c0bb85d4b7:/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 5c4848e000..06d420c569 100644 --- a/apps/workbench/test/integration/users_test.rb +++ b/apps/workbench/test/integration/users_test.rb @@ -1,30 +1,28 @@ require 'integration_helper' +require 'selenium-webdriver' +require 'headless' class UsersTest < ActionDispatch::IntegrationTest - test "create a new user" do + test "login as active user but not admin" do Capybara.current_driver = Capybara.javascript_driver - visit page_with_token('admin_trustedclient') - - click_link 'Users' - - assert page.has_text? 'zzzzz-tpzed-d9tiejq69daie8f' + visit page_with_token('active_trustedclient') - click_on 'Add a new user' - - # for now just check that we are back in Users -> List page - assert page.has_text? 'zzzzz-tpzed-d9tiejq69daie8f' + assert page.has_no_link? 'Users' 'Found Users link for non-admin user' end - test "unsetup active user" do + test "login as admin user and verify active user data" do Capybara.current_driver = Capybara.javascript_driver visit page_with_token('admin_trustedclient') + # go to Users list page click_link 'Users' - assert page.has_link? 'zzzzz-tpzed-xurymjxw79nv3jz' + # check active user attributes in the list page + page.within(:xpath, '//tr[@data-object-uuid="zzzzz-tpzed-xurymjxw79nv3jz"]') do + assert (text.include? 'true false'), 'Expected is_active' + end - # click on active user click_link 'zzzzz-tpzed-xurymjxw79nv3jz' assert page.has_text? 'Attributes' assert page.has_text? 'Metadata' @@ -33,36 +31,73 @@ class UsersTest < ActionDispatch::IntegrationTest # 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 - assert_equal text, "true", "Expected user's is_active to be true" + 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, '//span[@data-name="is_admin"]') do + assert_equal "false", text, "Expected user's is_admin to be false" end - # go to Admin tab - click_link 'Admin' - assert page.has_text? 'As an admin, you can deactivate and reset this user' + end - # Click on Deactivate button - click_button 'Deactivate Active User' + test "create a new user" do + headless = Headless.new + headless.start - # Click Ok in the confirm dialog - sleep(0.1) + Capybara.current_driver = :selenium + + visit page_with_token('admin_trustedclient') - popup = page.driver.window_handles.last + 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 - assert has_text? 'Are you sure you want to deactivate Active User' - click_button "Ok" + assert has_text? 'Virtual Machine' + fill_in "email", :with => "foo@example.com" + fill_in "repo_name", :with => "test_repo" + click_button "Submit" end - # Should now be back in the Attributes tab for the user + sleep(0.1) + + # verify that the new user showed up in the users page + assert page.has_text? 'foo@example.com' + + new_user_uuid = nil + all("tr").each do |elem| + if elem.text.include? 'foo@example.com' + new_user_uuid = elem.text.split[0] + break + end + end + + assert new_user_uuid, "Expected new user uuid not found" + + # go to the new user's page + click_link new_user_uuid + assert page.has_text? 'modified_by_user_uuid' - page.within(:xpath, '//a[@data-name="is_active"]') do - assert_equal text, "false", "Expected user's is_active to be false after unsetup" + 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 'Metadata' + assert page.has_text? '(Repository: test_repo)' + assert !(page.has_text? '(VirtualMachine:)') + + headless.stop end test "setup the active user" do - Capybara.current_driver = Capybara.javascript_driver + headless = Headless.new + headless.start + + Capybara.current_driver = :selenium visit page_with_token('admin_trustedclient') click_link 'Users' @@ -71,33 +106,114 @@ class UsersTest < ActionDispatch::IntegrationTest # click on active user click_link 'zzzzz-tpzed-xurymjxw79nv3jz' - assert page.has_text? 'Attributes' - assert page.has_text? 'Metadata' - assert page.has_text? 'Admin' - # go to Admin tab + # Setup user click_link 'Admin' - assert page.has_text? 'As an admin, you can deactivate and reset this user' + assert page.has_text? 'As an admin, you can setup' -=begin - # Click on Setup button - click_button 'Setup Active User' + click_link 'Setup Active User' - # Click Ok in the confirm dialog sleep(0.1) - popup = page.driver.window_handles.last + popup = page.driver.browser.window_handles.last + page.within_window popup do + assert has_text? 'Virtual Machine' + fill_in "repo_name", :with => "test_repo" + click_button "Submit" + end + + sleep(1) + assert page.has_text? 'modified_by_client_uuid' + + click_link 'Metadata' + 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' + click_link 'Setup Active User' + + sleep(0.1) + popup = page.driver.browser.window_handles.last page.within_window popup do - assert has_text? 'Are you sure you want to deactivate Active User' - fill_in "email", :with => "test@example.com" - click_button "Ok" + fill_in "repo_name", :with => "second_test_repo" + select("testvm.shell", :from => 'vm_uuid') + click_button "Submit" end + sleep(0.1) + assert page.has_text? 'modified_by_client_uuid' + + click_link 'Metadata' + 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') + + click_link 'Users' + + assert page.has_link? 'zzzzz-tpzed-xurymjxw79nv3jz' + + # click on active user + click_link 'zzzzz-tpzed-xurymjxw79nv3jz' + + # Verify that is_active is set + click_link 'Attributes' + assert page.has_text? 'modified_by_user_uuid' + page.within(:xpath, '//span[@data-name="is_active"]') do + assert_equal "true", text, "Expected user's is_active to be true" + end + + # go to Admin tab + click_link 'Admin' + assert page.has_text? 'As an admin, you can deactivate and reset this user' + + # unsetup user and verify all the above links are deleted + click_link 'Admin' + click_button 'Deactivate Active User' + 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, '//span[@data-name="is_active"]') do + assert_equal "false", text, "Expected user's is_active to be false after unsetup" + end + + 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)') + + # setup user again and verify links present + click_link 'Admin' + click_link 'Setup Active User' + + sleep(0.1) + popup = page.driver.browser.window_handles.last + page.within_window popup do + fill_in "repo_name", :with => "second_test_repo" + select("testvm.shell", :from => 'vm_uuid') + click_button "Submit" + end + + sleep(0.1) assert page.has_text? 'modified_by_client_uuid' - puts "\n\n************* page now = \n#{page.body}" -=end + click_link 'Metadata' + assert page.has_text? '(Repository: second_test_repo)' + assert page.has_text? '(VirtualMachine: testvm.shell)' + + headless.stop end end