1 require 'integration_helper'
2 require 'selenium-webdriver'
5 class UsersTest < ActionDispatch::IntegrationTest
7 test "login as active user but not admin" do
8 Capybara.current_driver = Capybara.javascript_driver
9 visit page_with_token('active_trustedclient')
11 assert page.has_no_link? 'Users' 'Found Users link for non-admin user'
14 test "login as admin user and verify active user data" do
15 Capybara.current_driver = Capybara.javascript_driver
16 visit page_with_token('admin_trustedclient')
18 # go to Users list page
19 find('#system-menu').click
22 # check active user attributes in the list page
23 page.within(:xpath, '//tr[@data-object-uuid="zzzzz-tpzed-xurymjxw79nv3jz"]') do
24 assert (text.include? 'true false'), 'Expected is_active'
27 find('tr', text: 'zzzzz-tpzed-xurymjxw79nv3jz').
28 find('a', text: 'Show').
30 assert page.has_text? 'Attributes'
31 assert page.has_text? 'Advanced'
32 assert page.has_text? 'Admin'
34 # go to the Attributes tab
35 click_link 'Attributes'
36 assert page.has_text? 'modified_by_user_uuid'
37 page.within(:xpath, '//span[@data-name="is_active"]') do
38 assert_equal "true", text, "Expected user's is_active to be true"
40 page.within(:xpath, '//span[@data-name="is_admin"]') do
41 assert_equal "false", text, "Expected user's is_admin to be false"
46 test "create a new user" do
47 headless = Headless.new
50 Capybara.current_driver = :selenium
52 visit page_with_token('admin_trustedclient')
54 find('#system-menu').click
57 assert page.has_text? 'zzzzz-tpzed-d9tiejq69daie8f'
59 click_link 'Add a new user'
62 popup = page.driver.browser.window_handles.last
63 page.within_window popup do
64 assert has_text? 'Virtual Machine'
65 fill_in "email", :with => "foo@example.com"
66 fill_in "repo_name", :with => "test_repo"
73 # verify that the new user showed up in the users page and find
76 find('tr[data-object-uuid]', text: 'foo@example.com')['data-object-uuid']
77 assert new_user_uuid, "Expected new user uuid not found"
79 # go to the new user's page
80 find('tr', text: new_user_uuid).
81 find('a', text: 'Show').
84 assert page.has_text? 'modified_by_user_uuid'
85 page.within(:xpath, '//span[@data-name="is_active"]') do
86 assert_equal "false", text, "Expected new user's is_active to be false"
91 assert page.has_text? 'Repository: test_repo'
92 assert !(page.has_text? 'VirtualMachine:')
97 test "setup the active user" do
98 headless = Headless.new
101 Capybara.current_driver = :selenium
102 visit page_with_token('admin_trustedclient')
104 find('#system-menu').click
107 # click on active user
108 find('tr', text: 'zzzzz-tpzed-xurymjxw79nv3jz').
109 find('a', text: 'Show').
114 assert page.has_text? 'As an admin, you can setup'
116 click_link 'Setup Active User'
120 popup = page.driver.browser.window_handles.last
121 page.within_window popup do
122 assert has_text? 'Virtual Machine'
123 fill_in "repo_name", :with => "test_repo"
124 click_button "Submit"
128 assert page.has_text? 'modified_by_client_uuid'
130 click_link 'Advanced'
131 click_link 'Metadata'
132 assert page.has_text? 'Repository: test_repo'
133 assert !(page.has_text? 'VirtualMachine:')
135 # Click on Setup button again and this time also choose a VM
137 click_link 'Setup Active User'
140 popup = page.driver.browser.window_handles.last
141 page.within_window popup do
142 fill_in "repo_name", :with => "second_test_repo"
143 select("testvm.shell", :from => 'vm_uuid')
144 click_button "Submit"
148 assert page.has_text? 'modified_by_client_uuid'
150 click_link 'Advanced'
151 click_link 'Metadata'
152 assert page.has_text? 'Repository: second_test_repo'
153 assert page.has_text? 'VirtualMachine: testvm.shell'
158 test "unsetup active user" do
159 headless = Headless.new
162 Capybara.current_driver = :selenium
164 visit page_with_token('admin_trustedclient')
166 find('#system-menu').click
169 # click on active user
170 find('tr', text: 'zzzzz-tpzed-xurymjxw79nv3jz').
171 find('a', text: 'Show').
174 # Verify that is_active is set
175 find('a,button', text: 'Attributes').click
176 assert page.has_text? 'modified_by_user_uuid'
177 page.within(:xpath, '//span[@data-name="is_active"]') do
178 assert_equal "true", text, "Expected user's is_active to be true"
183 assert page.has_text? 'As an admin, you can deactivate and reset this user'
185 # unsetup user and verify all the above links are deleted
187 click_button 'Deactivate Active User'
190 # Should now be back in the Attributes tab for the user
191 page.driver.browser.switch_to.alert.accept
192 assert page.has_text? 'modified_by_user_uuid'
193 page.within(:xpath, '//span[@data-name="is_active"]') do
194 assert_equal "false", text, "Expected user's is_active to be false after unsetup"
197 click_link 'Advanced'
198 click_link 'Metadata'
199 assert !(page.has_text? 'Repository: test_repo')
200 assert !(page.has_text? 'Repository: second_test_repo')
201 assert !(page.has_text? 'VirtualMachine: testvm.shell')
203 # setup user again and verify links present
205 click_link 'Setup Active User'
208 popup = page.driver.browser.window_handles.last
209 page.within_window popup do
210 fill_in "repo_name", :with => "second_test_repo"
211 select("testvm.shell", :from => 'vm_uuid')
212 click_button "Submit"
216 assert page.has_text? 'modified_by_client_uuid'
218 click_link 'Advanced'
219 click_link 'Metadata'
220 assert page.has_text? 'Repository: second_test_repo'
221 assert page.has_text? 'VirtualMachine: testvm.shell'